{
    "openapi": "3.1.0",
    "info": {
        "title": "E-learning API \u2014 OpenAPI",
        "version": "v1",
        "description": "    API interne de la plateforme e-learning, pens\u00e9e d\u2019abord pour la SPA interne et extensible vers un futur client mobile.\n\n    Cette documentation couvre la surface versionn\u00e9e `\/api\/v1` du projet. La sp\u00e9cification OpenAPI de r\u00e9f\u00e9rence est aussi disponible localement sur `\/docs\/api.json`."
    },
    "servers": [
        {
            "url": "https:\/\/elearning.schoolap.com\/api\/v1"
        }
    ],
    "tags": [
        {
            "name": "System",
            "description": "Endpoints techniques de fondation et de diagnostic l\u00e9ger."
        },
        {
            "name": "User - Auth - Profile - Settings (me)",
            "description": "Session API, contexte courant, profil courant et pr\u00e9f\u00e9rences du user connect\u00e9."
        },
        {
            "name": "User - Notifications (me)",
            "description": "Centre de notifications du user courant."
        },
        {
            "name": "Users",
            "description": "Op\u00e9rations communes du domaine users pour les comptes non apprenants."
        },
        {
            "name": "Users - Admin",
            "description": "Gestion cibl\u00e9e des comptes administrateurs du domaine users."
        },
        {
            "name": "Users - Staff",
            "description": "Gestion cibl\u00e9e des comptes staff du LMS."
        },
        {
            "name": "Users - Trainers",
            "description": "Gestion cibl\u00e9e des comptes formateurs du LMS."
        },
        {
            "name": "Users - Profile",
            "description": "Consultation et mise \u00e0 jour des profils utilisateurs."
        },
        {
            "name": "Reference Catalogs",
            "description": "R\u00e9f\u00e9rentiels simples expos\u00e9s pour alimenter les formulaires du client."
        },
        {
            "name": "Users - Suivi d\u2019activit\u00e9",
            "description": "Journal des actions, historique des connexions et archives r\u00e9cup\u00e9rables."
        },
        {
            "name": "Access Control",
            "description": "Lecture et administration des r\u00f4les et permissions globales."
        },
        {
            "name": "LMS - Learners",
            "description": "Gestion directe des apprenants du LMS."
        },
        {
            "name": "LMS - Parcours",
            "description": "Gestion et consultation des parcours du LMS."
        },
        {
            "name": "LMS - Module p\u00e9dagogique",
            "description": "Gestion et consultation des modules p\u00e9dagogiques du LMS."
        },
        {
            "name": "LMS - Sous-module",
            "description": "Gestion et consultation des sous-modules p\u00e9dagogiques du LMS."
        },
        {
            "name": "LMS - Le\u00e7on",
            "description": "Gestion et consultation des le\u00e7ons du LMS."
        },
        {
            "name": "LMS - Comp\u00e9tences",
            "description": "R\u00e9f\u00e9rentiel admin des comp\u00e9tences p\u00e9dagogiques."
        },
        {
            "name": "LMS - Progression p\u00e9dagogique",
            "description": "Compl\u00e9tion apprenant et progression par cohorte."
        },
        {
            "name": "LMS - Tableau de bord",
            "description": "R\u00e9sum\u00e9s et indicateurs du tableau de bord."
        },
        {
            "name": "LMS - Cohorte",
            "description": "Gestion et consultation des cohortes du LMS."
        },
        {
            "name": "Ressources p\u00e9dagogiques",
            "description": "Banque de ressources et ressources rattach\u00e9es aux contenus p\u00e9dagogiques."
        },
        {
            "name": "\u00c9valuations - Livrables projet",
            "description": "Livrables projet, assignations, soumissions et corrections."
        },
        {
            "name": "\u00c9valuations - Exercices",
            "description": "Quiz, exercices, \u00e9v\u00e9nements d\u2019\u00e9valuation, questions, tentatives et corrections."
        },
        {
            "name": "LMS - Exercices",
            "description": "Publication et cycle de vie des exercices."
        },
        {
            "name": "FAQ",
            "description": "Questions-r\u00e9ponses publi\u00e9es et cat\u00e9gories \u00e9ditoriales."
        },
        {
            "name": "Agenda",
            "description": "Gestion du calendrier p\u00e9dagogique et des \u00e9v\u00e9nements."
        },
        {
            "name": "Communication - Messagerie",
            "description": "Conversations internes 1:1 et groupes."
        },
        {
            "name": "Communication - Forum",
            "description": "Sujets de forum, posts, commentaires et r\u00e9actions."
        }
    ],
    "paths": {
        "\/health": {
            "get": {
                "operationId": "v1.health",
                "description": "Retourne un ping simple de fondation pour confirmer que l\u2019API versionn\u00e9e r\u00e9pond.",
                "summary": "V\u00e9rifier la sant\u00e9 de l\u2019API",
                "tags": [
                    "System"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "name": {
                                                    "type": "string"
                                                },
                                                "version": {
                                                    "type": "string",
                                                    "const": "v1"
                                                }
                                            },
                                            "required": [
                                                "name",
                                                "version"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "La fondation de l\u2019API est pr\u00eate."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/auth\/invitations\/accept": {
            "post": {
                "operationId": "v1.auth.invitations.accept",
                "description": "Finalise l\u2019onboarding d\u2019un compte invit\u00e9 en d\u00e9finissant le mot de passe et en activant le compte.",
                "summary": "Accepter une invitation utilisateur",
                "tags": [
                    "User - Auth - Profile - Settings (me)"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/AcceptUserInvitationRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "L\u2019invitation a \u00e9t\u00e9 accept\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/auth\/forgot-password": {
            "post": {
                "operationId": "v1.auth.password.forgot",
                "description": "Envoie un email de r\u00e9initialisation si un compte actif correspond \u00e0 l\u2019adresse fournie. La r\u00e9ponse reste identique pour limiter l\u2019\u00e9num\u00e9ration des comptes.",
                "summary": "Demander une r\u00e9initialisation de mot de passe",
                "tags": [
                    "User - Auth - Profile - Settings (me)"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/ForgotPasswordRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "const": "Si un compte actif correspond \u00e0 cette adresse, un email de r\u00e9initialisation a \u00e9t\u00e9 envoy\u00e9."
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/auth\/reset-password": {
            "post": {
                "operationId": "v1.auth.password.reset",
                "description": "Valide le token de r\u00e9initialisation, met \u00e0 jour le mot de passe et r\u00e9voque les tokens Sanctum existants.",
                "summary": "R\u00e9initialiser un mot de passe",
                "tags": [
                    "User - Auth - Profile - Settings (me)"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/ResetPasswordRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "const": "Le mot de passe a \u00e9t\u00e9 r\u00e9initialis\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/auth\/login": {
            "post": {
                "operationId": "v1.auth.login",
                "description": "Authentifie un compte actif et retourne un token Sanctum avec le contexte utilisateur courant.",
                "summary": "Se connecter",
                "tags": [
                    "User - Auth - Profile - Settings (me)"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/LoginRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "token": {
                                                    "type": "string"
                                                },
                                                "user": {
                                                    "$ref": "#\/components\/schemas\/AuthenticatedUserResource"
                                                }
                                            },
                                            "required": [
                                                "token",
                                                "user"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Connexion effectu\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/me": {
            "get": {
                "operationId": "v1.me.show",
                "description": "Retourne le contexte authentifi\u00e9 riche du token courant avec profile, r\u00f4les et permissions structur\u00e9es.",
                "summary": "Consulter le user courant",
                "tags": [
                    "User - Auth - Profile - Settings (me)"
                ],
                "responses": {
                    "200": {
                        "description": "`AuthenticatedUserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/AuthenticatedUserResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Utilisateur courant r\u00e9cup\u00e9r\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.me.destroy",
                "description": "V\u00e9rifie le mot de passe, verrouille le compte, r\u00e9voque les tokens et d\u00e9marre une p\u00e9riode de gr\u00e2ce de 6 mois. Une reconnexion valide pendant ce d\u00e9lai annule la demande.",
                "summary": "Demander la suppression volontaire de son compte",
                "tags": [
                    "User - Auth - Profile - Settings (me)"
                ],
                "parameters": [
                    {
                        "name": "password",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "const": "Demande de suppression du compte enregistr\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/me\/permissions": {
            "get": {
                "operationId": "v1.me.permissions.index",
                "description": "Retourne une vue plate non pagin\u00e9e des permissions effectives du token courant, enrichie avec le contexte module et feature.",
                "summary": "Lister les permissions effectives du user courant",
                "tags": [
                    "User - Auth - Profile - Settings (me)"
                ],
                "parameters": [
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "code",
                                "-code",
                                "action",
                                "-action",
                                "module_code",
                                "-module_code",
                                "feature_code",
                                "-feature_code"
                            ]
                        }
                    },
                    {
                        "name": "filter[module_code]",
                        "in": "query",
                        "description": "Filtre exact sur le code de module.",
                        "schema": {},
                        "example": "paths"
                    },
                    {
                        "name": "filter[feature_code]",
                        "in": "query",
                        "description": "Filtre exact sur le code de feature.",
                        "schema": {},
                        "example": "paths.catalog"
                    },
                    {
                        "name": "filter[action]",
                        "in": "query",
                        "description": "Filtre exact sur l\u2019action d\u00e9riv\u00e9e du nom de permission.",
                        "schema": {},
                        "example": "view"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {}
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Permissions effectives r\u00e9cup\u00e9r\u00e9es avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/me\/profile": {
            "patch": {
                "operationId": "v1.me.profile.update",
                "description": "Met \u00e0 jour le profil personnel du user courant, y compris son num\u00e9ro principal et ses r\u00e9f\u00e9rentiels de localisation.",
                "summary": "Mettre \u00e0 jour son profil",
                "tags": [
                    "User - Auth - Profile - Settings (me)"
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateMyProfileRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ProfileResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ProfileResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Profile mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/me\/settings": {
            "get": {
                "operationId": "v1.me.settings.show",
                "description": "Retourne les pr\u00e9f\u00e9rences applicatives du user courant. Sans filtre, toutes les pr\u00e9f\u00e9rences sont retourn\u00e9es. filter[group]=general retourne les pr\u00e9f\u00e9rences g\u00e9n\u00e9rales; filter[group]=agenda retourne les pr\u00e9f\u00e9rences Agenda; filter[group]=learning retourne les pr\u00e9f\u00e9rences p\u00e9dagogiques; filter[group]=all \u00e9quivaut \u00e0 l\u2019absence de filtre.",
                "summary": "Consulter ses pr\u00e9f\u00e9rences",
                "tags": [
                    "User - Auth - Profile - Settings (me)"
                ],
                "parameters": [
                    {
                        "name": "filter[group]",
                        "in": "query",
                        "description": "Groupe de pr\u00e9f\u00e9rences \u00e0 retourner : general, agenda, learning ou all.",
                        "schema": {},
                        "example": "learning"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UserSettingResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserSettingResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "patch": {
                "operationId": "v1.me.settings.update",
                "description": "Met \u00e0 jour partiellement les pr\u00e9f\u00e9rences applicatives du user courant. Les notifications acceptent des interrupteurs de groupe email_enabled|in_app_enabled et des overrides par type via notifications.types.<preference_key>.email_enabled|in_app_enabled.",
                "summary": "Mettre \u00e0 jour ses pr\u00e9f\u00e9rences",
                "tags": [
                    "User - Auth - Profile - Settings (me)"
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateMySettingsRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`UserSettingResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserSettingResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Pr\u00e9f\u00e9rences mises \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/auth\/logout": {
            "post": {
                "operationId": "v1.auth.logout",
                "description": "R\u00e9voque uniquement le token courant de la session API authentifi\u00e9e.",
                "summary": "Se d\u00e9connecter",
                "tags": [
                    "User - Auth - Profile - Settings (me)"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "D\u00e9connexion effectu\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/me\/notifications": {
            "get": {
                "operationId": "v1.me.notifications.index",
                "description": "body contient le texte lisible \u00e0 afficher. data contient le payload contextuel utile au client pour navigation ou d\u00e9tails m\u00e9tier, en compl\u00e9ment de entity_type et entity_id.",
                "summary": "Lister ses notifications",
                "tags": [
                    "User - Notifications (me)"
                ],
                "parameters": [
                    {
                        "name": "filter[read]",
                        "in": "query",
                        "description": "Filtre sur l\u2019\u00e9tat de lecture : read ou unread.",
                        "schema": {},
                        "example": "unread"
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : created_at, -created_at, read_at, -read_at.",
                        "schema": {},
                        "example": "-created_at"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `UserNotificationResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/UserNotificationResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/me\/notifications\/read": {
            "post": {
                "operationId": "v1.me.notifications.read-all",
                "description": "Si notification_ids est absent ou vide, marque toutes les notifications non lues du user courant comme lues. Si des ids sont fournis, seuls les ids appartenant au user courant sont modifi\u00e9s.",
                "summary": "Marquer des notifications comme lues",
                "tags": [
                    "User - Notifications (me)"
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/MarkMyNotificationsReadRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "updated_count": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "updated_count"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Notifications marqu\u00e9es comme lues."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/me\/notifications\/{notification}": {
            "get": {
                "operationId": "v1.me.notifications.show",
                "description": "body contient le texte lisible \u00e0 afficher. data contient le payload contextuel utile au client pour navigation ou d\u00e9tails m\u00e9tier.",
                "summary": "Consulter une notification",
                "tags": [
                    "User - Notifications (me)"
                ],
                "parameters": [
                    {
                        "name": "notification",
                        "in": "path",
                        "required": true,
                        "description": "The notification ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UserNotificationResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/UserNotificationResource"
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.me.notifications.destroy",
                "summary": "Supprimer une notification",
                "tags": [
                    "User - Notifications (me)"
                ],
                "parameters": [
                    {
                        "name": "notification",
                        "in": "path",
                        "required": true,
                        "description": "The notification ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Notification supprim\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/me\/notifications\/{notification}\/read": {
            "post": {
                "operationId": "v1.me.notifications.read",
                "summary": "Marquer une notification comme lue",
                "tags": [
                    "User - Notifications (me)"
                ],
                "parameters": [
                    {
                        "name": "notification",
                        "in": "path",
                        "required": true,
                        "description": "The notification ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UserNotificationResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "allOf": [
                                        {
                                            "$ref": "#\/components\/schemas\/UserNotificationResource"
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string",
                                                    "const": "Notification marqu\u00e9e comme lue."
                                                }
                                            },
                                            "required": [
                                                "message"
                                            ]
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/me\/notifications\/{notification}\/unread": {
            "post": {
                "operationId": "v1.me.notifications.unread",
                "summary": "Marquer une notification comme non lue",
                "tags": [
                    "User - Notifications (me)"
                ],
                "parameters": [
                    {
                        "name": "notification",
                        "in": "path",
                        "required": true,
                        "description": "The notification ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UserNotificationResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "allOf": [
                                        {
                                            "$ref": "#\/components\/schemas\/UserNotificationResource"
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string",
                                                    "const": "Notification marqu\u00e9e comme non lue."
                                                }
                                            },
                                            "required": [
                                                "message"
                                            ]
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/users\/{user}\/suspend": {
            "post": {
                "operationId": "v1.users.suspend",
                "description": "Fait passer un compte active du domaine users \u00e0 l\u2019\u00e9tat suspended. Cette action remplace la d\u00e9sactivation g\u00e9n\u00e9rique par PATCH et s\u2019applique aux comptes admin, staff ou trainer selon les permissions effectives.",
                "summary": "Suspendre un utilisateur du domaine users",
                "tags": [
                    "Users"
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Utilisateur suspendu avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/users\/{user}\/reactivate": {
            "post": {
                "operationId": "v1.users.reactivate",
                "description": "Fait repasser un compte suspended du domaine users \u00e0 l\u2019\u00e9tat active. Cette action ne s\u2019applique pas aux comptes pending.",
                "summary": "R\u00e9activer un utilisateur du domaine users",
                "tags": [
                    "Users"
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Utilisateur r\u00e9activ\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/users": {
            "get": {
                "operationId": "v1.users.index",
                "description": "Retourne la vue transverse du domaine users. Cette liste agr\u00e8ge uniquement les comptes dont la cat\u00e9gorie principale est admin, staff ou trainer, avec un profil l\u00e9ger, le statut du compte et les r\u00f4les effectifs.",
                "summary": "Lister le r\u00e9pertoire des utilisateurs",
                "tags": [
                    "Users"
                ],
                "parameters": [
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "email",
                                "-email",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[email]",
                        "in": "query",
                        "description": "Filtre partiel sur l\u2019email.",
                        "schema": {},
                        "example": "trainer@"
                    },
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "description": "Filtre partiel sur first_name, middle_name ou last_name.",
                        "schema": {},
                        "example": "Mukendi"
                    },
                    {
                        "name": "filter[user_status][]",
                        "in": "query",
                        "description": "Filtre exact sur les \u00e9tats de compte visibles dans users.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "pending"
                    },
                    {
                        "name": "filter[profile_category][]",
                        "in": "query",
                        "description": "Filtre exact sur la cat\u00e9gorie principale agr\u00e9g\u00e9e dans le domaine users.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "trainer"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/UserResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/users\/{user}": {
            "get": {
                "operationId": "v1.users.show",
                "description": "Retourne le d\u00e9tail l\u00e9ger d\u2019un compte du domaine users. Seuls les comptes de cat\u00e9gorie principale admin, staff ou trainer sont expos\u00e9s par cette route.",
                "summary": "Consulter un utilisateur du domaine users",
                "tags": [
                    "Users"
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.users.update",
                "description": "Met \u00e0 jour les champs \u00e9ditables du compte et du profil. Cette route ne change ni la cat\u00e9gorie principale, ni les r\u00f4les. Si le compte est pending et que l\u2019email change, les invitations ouvertes sont r\u00e9align\u00e9es sur le nouvel email.",
                "summary": "Mettre \u00e0 jour un utilisateur du domaine users",
                "tags": [
                    "Users"
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateUserRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.users.destroy",
                "description": "Supprime physiquement un compte pending du domaine users ainsi que son profil et ses invitations ouvertes. Les comptes active ou suspended doivent passer par le cycle suspend\/reactivate.",
                "summary": "Supprimer un utilisateur en attente du domaine users",
                "tags": [
                    "Users"
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Utilisateur supprim\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/users\/admins": {
            "get": {
                "operationId": "v1.users.admins.index",
                "description": "Retourne uniquement les comptes dont la cat\u00e9gorie principale est admin. Les statuts pending, active et suspended restent visibles dans la m\u00eame vue.",
                "summary": "Lister les administrateurs",
                "tags": [
                    "Users - Admin"
                ],
                "parameters": [
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "email",
                                "-email",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[email]",
                        "in": "query",
                        "description": "Filtre partiel sur l\u2019email.",
                        "schema": {},
                        "example": "admin@"
                    },
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "description": "Filtre partiel sur first_name, middle_name ou last_name.",
                        "schema": {},
                        "example": "Admin"
                    },
                    {
                        "name": "filter[user_status][]",
                        "in": "query",
                        "description": "Filtre exact sur l\u2019\u00e9tat du compte.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "pending"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/UserResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/users\/admins\/{user}\/resend-invitation": {
            "post": {
                "operationId": "v1.users.admins.resend-invitation",
                "description": "R\u00e9\u00e9met une invitation pour un compte admin d\u00e9j\u00e0 existant, uniquement si ce compte est encore pending et porte bien la cat\u00e9gorie principale admin.",
                "summary": "Renvoyer une invitation administrateur",
                "tags": [
                    "Users - Admin"
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Une nouvelle invitation administrateur a \u00e9t\u00e9 envoy\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/users\/staff": {
            "get": {
                "operationId": "v1.users.staff.index",
                "description": "Retourne uniquement les comptes dont la cat\u00e9gorie principale est staff.",
                "summary": "Lister les comptes staff",
                "tags": [
                    "Users - Staff"
                ],
                "parameters": [
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "email",
                                "-email",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[email]",
                        "in": "query",
                        "description": "Filtre partiel sur l\u2019email.",
                        "schema": {},
                        "example": "staff@"
                    },
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "description": "Filtre partiel sur first_name, middle_name ou last_name.",
                        "schema": {},
                        "example": "Mukendi"
                    },
                    {
                        "name": "filter[user_status][]",
                        "in": "query",
                        "description": "Filtre exact sur l\u2019\u00e9tat du compte.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "active"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/UserResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.users.staff.store",
                "description": "Cr\u00e9e un compte pending de cat\u00e9gorie principale staff puis \u00e9met une invitation. Si un compte pending de m\u00eame cat\u00e9gorie existe d\u00e9j\u00e0 pour cet email, l\u2019invitation est r\u00e9\u00e9mise et la ressource user est renvoy\u00e9e.",
                "summary": "Cr\u00e9er ou r\u00e9inviter un compte staff",
                "tags": [
                    "Users - Staff"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreStaffUserRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "L\u2019invitation staff a \u00e9t\u00e9 envoy\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/users\/staff\/{user}\/resend-invitation": {
            "post": {
                "operationId": "v1.users.staff.resend-invitation",
                "description": "R\u00e9\u00e9met une invitation pour un compte staff d\u00e9j\u00e0 existant, uniquement si ce compte est encore pending et porte bien la cat\u00e9gorie principale staff.",
                "summary": "Renvoyer une invitation staff",
                "tags": [
                    "Users - Staff"
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Une nouvelle invitation staff a \u00e9t\u00e9 envoy\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/users\/staff\/imports": {
            "post": {
                "operationId": "v1.users.staff.imports",
                "description": "Importe partiellement un fichier CSV ou XLSX de comptes staff et renvoie un rapport ligne par ligne.",
                "summary": "Importer des comptes staff",
                "tags": [
                    "Users - Staff"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/ImportScopedUsersRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Array of `UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/UserResource"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Import staff trait\u00e9 avec succ\u00e8s."
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "results": {
                                                    "type": "array",
                                                    "items": {
                                                        "anyOf": [
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "line": {
                                                                        "type": "string"
                                                                    },
                                                                    "status": {
                                                                        "type": "string",
                                                                        "const": "failed"
                                                                    },
                                                                    "errors": {
                                                                        "type": "object",
                                                                        "additionalProperties": {
                                                                            "type": "array",
                                                                            "items": {
                                                                                "type": "string"
                                                                            }
                                                                        }
                                                                    }
                                                                },
                                                                "required": [
                                                                    "line",
                                                                    "status",
                                                                    "errors"
                                                                ]
                                                            },
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "line": {
                                                                        "type": "string"
                                                                    },
                                                                    "status": {
                                                                        "type": "string",
                                                                        "const": "imported"
                                                                    },
                                                                    "email": {
                                                                        "type": "string"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "line",
                                                                    "status",
                                                                    "email"
                                                                ]
                                                            },
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "line": {
                                                                        "type": "string"
                                                                    },
                                                                    "status": {
                                                                        "type": "string",
                                                                        "const": "failed"
                                                                    },
                                                                    "errors": {
                                                                        "type": "string"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "line",
                                                                    "status",
                                                                    "errors"
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "results"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/users\/staff\/import-template": {
            "get": {
                "operationId": "v1.users.staff.import-template",
                "description": "T\u00e9l\u00e9charge le mod\u00e8le XLSX des colonnes attendues pour l\u2019import de comptes staff.",
                "summary": "T\u00e9l\u00e9charger le mod\u00e8le d\u2019import staff",
                "tags": [
                    "Users - Staff"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/users\/trainers": {
            "get": {
                "operationId": "v1.users.trainers.index",
                "description": "Retourne uniquement les comptes dont la cat\u00e9gorie principale est trainer. Les statuts pending, active et suspended restent visibles dans la m\u00eame vue.",
                "summary": "Lister les formateurs",
                "tags": [
                    "Users - Trainers"
                ],
                "parameters": [
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "email",
                                "-email",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[email]",
                        "in": "query",
                        "description": "Filtre partiel sur l\u2019email.",
                        "schema": {},
                        "example": "trainer@"
                    },
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "description": "Filtre partiel sur first_name, middle_name ou last_name.",
                        "schema": {},
                        "example": "Mukendi"
                    },
                    {
                        "name": "filter[user_status][]",
                        "in": "query",
                        "description": "Filtre exact sur l\u2019\u00e9tat du compte.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "active"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/UserResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.users.trainers.store",
                "description": "Cr\u00e9e un compte pending de cat\u00e9gorie principale trainer puis \u00e9met une invitation. Si un compte pending de m\u00eame cat\u00e9gorie existe d\u00e9j\u00e0 pour cet email, l\u2019invitation est r\u00e9\u00e9mise et la ressource user est renvoy\u00e9e. La r\u00e9ponse porte toujours sur le user, pas sur une ressource invitation s\u00e9par\u00e9e.",
                "summary": "Cr\u00e9er ou r\u00e9inviter un formateur",
                "tags": [
                    "Users - Trainers"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreTrainerUserRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "L\u2019invitation formateur a \u00e9t\u00e9 envoy\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/users\/trainers\/{user}\/resend-invitation": {
            "post": {
                "operationId": "v1.users.trainers.resend-invitation",
                "description": "R\u00e9\u00e9met une invitation pour un compte trainer d\u00e9j\u00e0 existant, uniquement si ce compte est encore pending et porte bien la cat\u00e9gorie principale trainer.",
                "summary": "Renvoyer une invitation formateur",
                "tags": [
                    "Users - Trainers"
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Une nouvelle invitation formateur a \u00e9t\u00e9 envoy\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/users\/trainers\/imports": {
            "post": {
                "operationId": "v1.users.trainers.imports",
                "description": "Importe partiellement un fichier CSV ou XLSX de formateurs et renvoie un rapport ligne par ligne.",
                "summary": "Importer des formateurs",
                "tags": [
                    "Users - Trainers"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/ImportScopedUsersRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Array of `UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/UserResource"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Import formateur trait\u00e9 avec succ\u00e8s."
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "results": {
                                                    "type": "array",
                                                    "items": {
                                                        "anyOf": [
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "line": {
                                                                        "type": "string"
                                                                    },
                                                                    "status": {
                                                                        "type": "string",
                                                                        "const": "failed"
                                                                    },
                                                                    "errors": {
                                                                        "type": "object",
                                                                        "additionalProperties": {
                                                                            "type": "array",
                                                                            "items": {
                                                                                "type": "string"
                                                                            }
                                                                        }
                                                                    }
                                                                },
                                                                "required": [
                                                                    "line",
                                                                    "status",
                                                                    "errors"
                                                                ]
                                                            },
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "line": {
                                                                        "type": "string"
                                                                    },
                                                                    "status": {
                                                                        "type": "string",
                                                                        "const": "imported"
                                                                    },
                                                                    "email": {
                                                                        "type": "string"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "line",
                                                                    "status",
                                                                    "email"
                                                                ]
                                                            },
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "line": {
                                                                        "type": "string"
                                                                    },
                                                                    "status": {
                                                                        "type": "string",
                                                                        "const": "failed"
                                                                    },
                                                                    "errors": {
                                                                        "type": "string"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "line",
                                                                    "status",
                                                                    "errors"
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "results"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/users\/trainers\/import-template": {
            "get": {
                "operationId": "v1.users.trainers.import-template",
                "description": "T\u00e9l\u00e9charge le mod\u00e8le XLSX des colonnes attendues pour l\u2019import de formateurs.",
                "summary": "T\u00e9l\u00e9charger le mod\u00e8le d\u2019import formateur",
                "tags": [
                    "Users - Trainers"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/countries": {
            "get": {
                "operationId": "v1.countries.index",
                "description": "Retourne la liste active des pays, tri\u00e9e par nom, sans pagination ni include.",
                "summary": "Lister les pays",
                "tags": [
                    "Reference Catalogs"
                ],
                "responses": {
                    "200": {
                        "description": "Array of `CountryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/CountryResource"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/cities": {
            "get": {
                "operationId": "v1.cities.index",
                "description": "Retourne la liste active des villes, tri\u00e9e par nom, avec un filtre optionnel par pays et sans pagination.",
                "summary": "Lister les villes",
                "tags": [
                    "Reference Catalogs"
                ],
                "parameters": [
                    {
                        "name": "country_id",
                        "in": "query",
                        "description": "Filtre optionnel pour restreindre les villes \u00e0 un pays donn\u00e9.",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        },
                        "example": 1
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of `CityResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/CityResource"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/fabriques": {
            "get": {
                "operationId": "v1.fabriques.index",
                "description": "Retourne les fabriques disponibles pour la cr\u00e9ation des cohortes.",
                "summary": "Lister les fabriques",
                "tags": [
                    "Reference Catalogs"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {}
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/profiles\/{profile}": {
            "get": {
                "operationId": "v1.profiles.show",
                "description": "Retourne un profil l\u00e9ger par d\u00e9faut. Les relations de r\u00e9f\u00e9rence et le num\u00e9ro principal sont opt-in via include.",
                "summary": "Consulter un profil",
                "tags": [
                    "Users - Profile"
                ],
                "parameters": [
                    {
                        "name": "profile",
                        "in": "path",
                        "required": true,
                        "description": "The profile ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : profile_category, country, city, primary_phone_number, primary_phone_number.country.",
                        "schema": {},
                        "example": "country,city,primary_phone_number,primary_phone_number.country"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ProfileResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ProfileResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.profiles.update",
                "summary": "Mettre \u00e0 jour un profil",
                "tags": [
                    "Users - Profile"
                ],
                "parameters": [
                    {
                        "name": "profile",
                        "in": "path",
                        "required": true,
                        "description": "The profile ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateProfileRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ProfileResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ProfileResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/users\/{user}\/activities": {
            "get": {
                "operationId": "v1.users.activities.index",
                "summary": "Lister les activit\u00e9s d\u2019un utilisateur",
                "tags": [
                    "Users - Suivi d\u2019activit\u00e9"
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {}
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "total": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "total",
                                                "per_page",
                                                "current_page",
                                                "last_page",
                                                "from",
                                                "to"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/activities\/actions": {
            "get": {
                "operationId": "v1.activities.actions.index",
                "description": "Retourne les actions non-authentification, y compris archivage, restauration et suppression d\u00e9finitive.",
                "summary": "Journal des actions",
                "tags": [
                    "Users - Suivi d\u2019activit\u00e9"
                ],
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Recherche sur l\u2019\u00e9v\u00e9nement, la description ou l\u2019email du causer.",
                        "schema": {},
                        "example": "module"
                    },
                    {
                        "name": "filter[action][]",
                        "in": "query",
                        "description": "Filtrer par \u00e9v\u00e9nement.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "deleted"
                    },
                    {
                        "name": "filter[date][]",
                        "in": "query",
                        "description": "Filtrer par date YYYY-MM-DD.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "2026-05-21"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ActivityResource"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "total": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "total",
                                                "per_page",
                                                "current_page",
                                                "last_page",
                                                "from",
                                                "to"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/activities\/logins": {
            "get": {
                "operationId": "v1.activities.logins.index",
                "description": "Retourne les connexions r\u00e9ussies, d\u00e9connexions et tentatives \u00e9chou\u00e9es enregistr\u00e9es sur log_name=auth.",
                "summary": "Historique des connexions",
                "tags": [
                    "Users - Suivi d\u2019activit\u00e9"
                ],
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Recherche sur l\u2019email tent\u00e9, l\u2019email utilisateur ou l\u2019IP.",
                        "schema": {},
                        "example": "admin@"
                    },
                    {
                        "name": "filter[status]",
                        "in": "query",
                        "description": "Filtrer par success ou failed.",
                        "schema": {},
                        "example": "failed"
                    },
                    {
                        "name": "filter[date][]",
                        "in": "query",
                        "description": "Filtrer par date YYYY-MM-DD.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "2026-05-21"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ActivityResource"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "total": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "total",
                                                "per_page",
                                                "current_page",
                                                "last_page",
                                                "from",
                                                "to"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/activities\/logins\/{activity}\/export": {
            "get": {
                "operationId": "v1.activities.logins.export",
                "description": "T\u00e9l\u00e9charge une ligne CSV d\u00e9crivant une entr\u00e9e de l\u2019historique des connexions.",
                "summary": "Exporter une connexion en CSV",
                "tags": [
                    "Users - Suivi d\u2019activit\u00e9"
                ],
                "parameters": [
                    {
                        "name": "activity",
                        "in": "path",
                        "required": true,
                        "description": "The activity ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "text\/csv; charset=UTF-8": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        },
                        "headers": {
                            "Content-Disposition": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/activities\/archives": {
            "get": {
                "operationId": "v1.activities.archives.index",
                "description": "Retourne les \u00e9v\u00e9nements de suppression dont le sujet est encore soft-deleted et r\u00e9cup\u00e9rable.",
                "summary": "Historique des archives",
                "tags": [
                    "Users - Suivi d\u2019activit\u00e9"
                ],
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Recherche sur la description ou l\u2019email du causer.",
                        "schema": {},
                        "example": "cours"
                    },
                    {
                        "name": "filter[type][]",
                        "in": "query",
                        "description": "Filtrer par type mod\u00e8le exact : user, course, path, module, lesson, cohort.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "course"
                    },
                    {
                        "name": "filter[date][]",
                        "in": "query",
                        "description": "Filtrer par date YYYY-MM-DD.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "2026-05-21"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ActivityResource"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "total": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "total",
                                                "per_page",
                                                "current_page",
                                                "last_page",
                                                "from",
                                                "to"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/activities\/archives\/{activity}\/restore": {
            "post": {
                "operationId": "v1.activities.archives.restore",
                "description": "Restaure le sujet soft-deleted associ\u00e9 \u00e0 l\u2019activit\u00e9 de suppression.",
                "summary": "Restaurer une archive",
                "tags": [
                    "Users - Suivi d\u2019activit\u00e9"
                ],
                "parameters": [
                    {
                        "name": "activity",
                        "in": "path",
                        "required": true,
                        "description": "The activity ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "type": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "id": {}
                                            },
                                            "required": [
                                                "type",
                                                "id"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Archive restaur\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/activities\/archives\/{activity}\/force-delete": {
            "delete": {
                "operationId": "v1.activities.archives.force-delete",
                "description": "Supprime d\u00e9finitivement le sujet soft-deleted associ\u00e9 \u00e0 l\u2019activit\u00e9 de suppression tout en conservant l\u2019audit.",
                "summary": "Supprimer d\u00e9finitivement une archive",
                "tags": [
                    "Users - Suivi d\u2019activit\u00e9"
                ],
                "parameters": [
                    {
                        "name": "activity",
                        "in": "path",
                        "required": true,
                        "description": "The activity ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Archive supprim\u00e9e d\u00e9finitivement avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/activities\/{activity}": {
            "get": {
                "operationId": "v1.activities.show",
                "description": "Retourne la repr\u00e9sentation d\u00e9taill\u00e9e d\u2019une activit\u00e9.",
                "summary": "D\u00e9tail d\u2019une activit\u00e9",
                "tags": [
                    "Users - Suivi d\u2019activit\u00e9"
                ],
                "parameters": [
                    {
                        "name": "activity",
                        "in": "path",
                        "required": true,
                        "description": "The activity ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ActivityResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ActivityResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/users\/{user}\/roles": {
            "post": {
                "operationId": "v1.users.roles.store",
                "description": "Associe un r\u00f4le global \u00e0 un utilisateur et renvoie la ressource user mise \u00e0 jour. Les combinaisons restent born\u00e9es par la matrice cat\u00e9gorie principale -> r\u00f4les autoris\u00e9s.",
                "summary": "Assigner un r\u00f4le \u00e0 un utilisateur",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreUserRoleRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00f4le assign\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/users\/{user}\/roles\/{role}": {
            "delete": {
                "operationId": "v1.users.roles.destroy",
                "description": "Retire un r\u00f4le global d\u2019un utilisateur et renvoie la ressource user mise \u00e0 jour. Le r\u00f4le principal impos\u00e9 par la cat\u00e9gorie principale ne peut pas \u00eatre retir\u00e9.",
                "summary": "Retirer un r\u00f4le \u00e0 un utilisateur",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "role",
                        "in": "path",
                        "required": true,
                        "description": "The role ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/UserResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00f4le retir\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/users\/role\/{role}\/users": {
            "get": {
                "operationId": "v1.users.role.users",
                "description": "Retourne la liste pagin\u00e9e des utilisateurs ayant ce r\u00f4le.",
                "summary": "Utilisateurs du r\u00f4le",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "role",
                        "in": "path",
                        "required": true,
                        "description": "The role ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Recherche sur le nom ou l'email.",
                        "schema": {},
                        "example": "alice"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/UserResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/users\/role\/{role}\/users-not-in-role": {
            "get": {
                "operationId": "v1.users.role.users-not-in-role",
                "description": "Retourne la liste pagin\u00e9e des utilisateurs n'ayant pas ce r\u00f4le (pour l'ajout).",
                "summary": "Utilisateurs sans ce r\u00f4le",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "role",
                        "in": "path",
                        "required": true,
                        "description": "The role ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Recherche sur le nom ou l'email.",
                        "schema": {},
                        "example": "alice"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `UserResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/UserResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/permissions": {
            "get": {
                "operationId": "v1.permissions.index",
                "description": "Retourne par d\u00e9faut une arborescence modules -> features -> permissions. format=flat bascule vers une vue plate enrichie.",
                "summary": "Lister les permissions",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "format",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "flat"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "code",
                                "-code",
                                "action",
                                "-action",
                                "module_code",
                                "-module_code",
                                "feature_code",
                                "-feature_code"
                            ]
                        }
                    },
                    {
                        "name": "filter[module_code]",
                        "in": "query",
                        "description": "Filtre exact sur le code de module.",
                        "schema": {},
                        "example": "learning"
                    },
                    {
                        "name": "filter[feature_code]",
                        "in": "query",
                        "description": "Filtre exact sur le code de feature.",
                        "schema": {},
                        "example": "paths"
                    },
                    {
                        "name": "filter[action]",
                        "in": "query",
                        "description": "Filtre exact sur l\u2019action d\u00e9riv\u00e9e du nom de permission.",
                        "schema": {},
                        "example": "view"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {}
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Permissions r\u00e9cup\u00e9r\u00e9es avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/roles\/{role}\/permissions": {
            "post": {
                "operationId": "v1.roles.permissions.store",
                "description": "Ajoute une permission \u00e0 un r\u00f4le et compl\u00e8te automatiquement ses permissions implicites.",
                "summary": "Assigner une permission \u00e0 un r\u00f4le",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "role",
                        "in": "path",
                        "required": true,
                        "description": "The role ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreRolePermissionRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`RoleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/RoleResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Permission assign\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/roles\/{role}\/permissions\/sync": {
            "post": {
                "operationId": "v1.roles.permissions.sync",
                "description": "Remplace toutes les permissions du r\u00f4le par la liste fournie. Les permissions non pr\u00e9sentes dans la liste sont retir\u00e9es. Utile pour les interfaces de gestion par cases \u00e0 cocher.",
                "summary": "Synchroniser les permissions d'un r\u00f4le",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "role",
                        "in": "path",
                        "required": true,
                        "description": "The role ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "permission_ids": {
                                        "type": "array",
                                        "items": {
                                            "type": "integer"
                                        },
                                        "minItems": 1
                                    }
                                },
                                "required": [
                                    "permission_ids"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`RoleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/RoleResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Permissions synchronis\u00e9es avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/roles\/{role}\/permissions\/{permission}": {
            "delete": {
                "operationId": "v1.roles.permissions.destroy",
                "description": "Retire une permission d\u2019un r\u00f4le ou bloque l\u2019op\u00e9ration si d\u2019autres permissions en d\u00e9pendent encore.",
                "summary": "Retirer une permission d\u2019un r\u00f4le",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "role",
                        "in": "path",
                        "required": true,
                        "description": "The role ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "permission",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`RoleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/RoleResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Permission retir\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "errors": {
                                            "type": "object",
                                            "properties": {
                                                "permission": {
                                                    "type": "array",
                                                    "prefixItems": [
                                                        {
                                                            "type": "string"
                                                        }
                                                    ],
                                                    "minItems": 1,
                                                    "maxItems": 1,
                                                    "additionalItems": false
                                                }
                                            },
                                            "required": [
                                                "permission"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "blocked_by": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "blocked_by"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "message",
                                        "errors",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/roles": {
            "get": {
                "operationId": "v1.roles.index",
                "description": "Retourne par d\u00e9faut une arborescence modules -> features -> permissions. format=flat bascule vers une vue plate enrichie.",
                "summary": "Lister les r\u00f4les",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "format",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "flat"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "name",
                                "-name"
                            ]
                        }
                    },
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "description": "Filtre partiel sur le nom du r\u00f4le.",
                        "schema": {},
                        "example": "Manager"
                    },
                    {
                        "name": "filter[is_system]",
                        "in": "query",
                        "description": "Filtre exact sur le statut syst\u00e8me du r\u00f4le.",
                        "schema": {},
                        "example": true
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `RoleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/RoleResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.roles.store",
                "summary": "Cr\u00e9er un r\u00f4le",
                "tags": [
                    "Access Control"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreRoleRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`RoleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/RoleResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00f4le cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/roles\/{role}": {
            "get": {
                "operationId": "v1.roles.show",
                "description": "Retourne par d\u00e9faut une arborescence modules -> features -> permissions. format=flat bascule vers une vue plate enrichie.",
                "summary": "Consulter un r\u00f4le",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "role",
                        "in": "path",
                        "required": true,
                        "description": "The role ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Utiliser flat pour obtenir les permissions \u00e0 plat.",
                        "schema": {},
                        "example": "flat"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`RoleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/RoleResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.roles.update",
                "summary": "Mettre \u00e0 jour un r\u00f4le",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "role",
                        "in": "path",
                        "required": true,
                        "description": "The role ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateRoleRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`RoleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/RoleResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00f4le mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.roles.destroy",
                "summary": "Supprimer un r\u00f4le",
                "tags": [
                    "Access Control"
                ],
                "parameters": [
                    {
                        "name": "role",
                        "in": "path",
                        "required": true,
                        "description": "The role ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00f4le supprim\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/learners": {
            "get": {
                "operationId": "v1.learners.index",
                "description": "Retourne la liste pagin\u00e9e des users de cat\u00e9gorie principale learner, avec cohorte active et parcours courant quand ils existent.",
                "summary": "Lister les apprenants",
                "tags": [
                    "LMS - Learners"
                ],
                "parameters": [
                    {
                        "name": "filter[cohort][]",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "filter[formation][]",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "email",
                                "-email",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "schema": {
                            "type": [
                                "integer",
                                "null"
                            ],
                            "minimum": 1
                        }
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "schema": {
                            "type": [
                                "integer",
                                "null"
                            ],
                            "minimum": 1,
                            "maximum": 100
                        }
                    },
                    {
                        "name": "filter[email]",
                        "in": "query",
                        "description": "Filtre partiel sur l\u2019email.",
                        "schema": {},
                        "example": "learner@"
                    },
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "description": "Filtre partiel sur first_name, middle_name ou last_name.",
                        "schema": {},
                        "example": "Amina"
                    },
                    {
                        "name": "filter[user_status][]",
                        "in": "query",
                        "description": "Filtre exact sur l\u2019\u00e9tat du compte.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "pending"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `LearnerResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/LearnerResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.learners.store",
                "description": "Cr\u00e9e un user learner pending, l\u2019inscrit \u00e0 une cohorte et \u00e9met une invitation email via Notification Laravel.",
                "summary": "Cr\u00e9er un apprenant",
                "tags": [
                    "LMS - Learners"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreLearnerRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`LearnerResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LearnerResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "L\u2019apprenant a \u00e9t\u00e9 cr\u00e9\u00e9 et rattach\u00e9 \u00e0 la cohorte avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/learners\/imports": {
            "post": {
                "operationId": "v1.learners.imports",
                "description": "Importe partiellement un fichier CSV ou XLSX d\u2019apprenants et renvoie un rapport ligne par ligne.",
                "summary": "Importer des apprenants",
                "tags": [
                    "LMS - Learners"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/ImportLearnersRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Array of `LearnerResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/LearnerResource"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Import apprenants trait\u00e9 avec succ\u00e8s."
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "results": {
                                                    "type": "array",
                                                    "items": {
                                                        "anyOf": [
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "line": {
                                                                        "type": "string"
                                                                    },
                                                                    "status": {
                                                                        "type": "string",
                                                                        "const": "failed"
                                                                    },
                                                                    "errors": {
                                                                        "type": "object",
                                                                        "additionalProperties": {
                                                                            "type": "array",
                                                                            "items": {
                                                                                "type": "string"
                                                                            }
                                                                        }
                                                                    }
                                                                },
                                                                "required": [
                                                                    "line",
                                                                    "status",
                                                                    "errors"
                                                                ]
                                                            },
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "line": {
                                                                        "type": "string"
                                                                    },
                                                                    "status": {
                                                                        "type": "string",
                                                                        "const": "failed"
                                                                    },
                                                                    "errors": {
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "cohort_code": {
                                                                                "type": "array",
                                                                                "prefixItems": [
                                                                                    {
                                                                                        "type": "string",
                                                                                        "const": "La cohorte indiqu\u00e9e est introuvable."
                                                                                    }
                                                                                ],
                                                                                "minItems": 1,
                                                                                "maxItems": 1,
                                                                                "additionalItems": false
                                                                            }
                                                                        },
                                                                        "required": [
                                                                            "cohort_code"
                                                                        ]
                                                                    }
                                                                },
                                                                "required": [
                                                                    "line",
                                                                    "status",
                                                                    "errors"
                                                                ]
                                                            },
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "line": {
                                                                        "type": "string"
                                                                    },
                                                                    "status": {
                                                                        "type": "string",
                                                                        "const": "imported"
                                                                    },
                                                                    "email": {
                                                                        "type": "string"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "line",
                                                                    "status",
                                                                    "email"
                                                                ]
                                                            },
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "line": {
                                                                        "type": "string"
                                                                    },
                                                                    "status": {
                                                                        "type": "string",
                                                                        "const": "failed"
                                                                    },
                                                                    "errors": {
                                                                        "type": "string"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "line",
                                                                    "status",
                                                                    "errors"
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "results"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/learners\/import-template": {
            "get": {
                "operationId": "v1.learners.import-template",
                "description": "T\u00e9l\u00e9charge le mod\u00e8le XLSX des colonnes attendues pour l\u2019import d\u2019apprenants.",
                "summary": "T\u00e9l\u00e9charger le mod\u00e8le d\u2019import apprenants",
                "tags": [
                    "LMS - Learners"
                ],
                "parameters": [
                    {
                        "name": "file",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "binary",
                            "contentMediaType": "application\/octet-stream"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/learners\/{learner}": {
            "get": {
                "operationId": "v1.learners.show",
                "description": "Retourne le d\u00e9tail d\u2019un user de cat\u00e9gorie principale learner.",
                "summary": "Consulter un apprenant",
                "tags": [
                    "LMS - Learners"
                ],
                "parameters": [
                    {
                        "name": "learner",
                        "in": "path",
                        "required": true,
                        "description": "The learner ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "filter[email]",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "maxLength": 255
                        }
                    },
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "maxLength": 255
                        }
                    },
                    {
                        "name": "filter[user_status][]",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#\/components\/schemas\/UserStatus"
                            }
                        }
                    },
                    {
                        "name": "filter[cohort][]",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "filter[formation][]",
                        "in": "query",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "email",
                                "-email",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "schema": {
                            "type": [
                                "integer",
                                "null"
                            ],
                            "minimum": 1
                        }
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "schema": {
                            "type": [
                                "integer",
                                "null"
                            ],
                            "minimum": 1,
                            "maximum": 100
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`LearnerResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LearnerResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/paths\/{path}\/modules": {
            "post": {
                "operationId": "v1.paths.modules.store",
                "description": "Cr\u00e9e un nouveau module p\u00e9dagogique directement rattach\u00e9 au parcours. Le payload accepte title, slug, description, study_hours?, position, is_required, learning_objectives, competencies et cover.",
                "summary": "Cr\u00e9er un module p\u00e9dagogique dans un parcours",
                "tags": [
                    "LMS - Parcours"
                ],
                "parameters": [
                    {
                        "name": "path",
                        "in": "path",
                        "required": true,
                        "description": "The path ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StorePathModuleRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`CourseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CourseResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Module p\u00e9dagogique cr\u00e9\u00e9 dans le parcours avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/paths": {
            "get": {
                "operationId": "v1.paths.index",
                "description": "Retourne les champs scalaires et modules_count par d\u00e9faut. Les modules publi\u00e9s, les cohortes et le cr\u00e9ateur sont demand\u00e9s explicitement via include.",
                "summary": "Lister les parcours",
                "tags": [
                    "LMS - Parcours"
                ],
                "parameters": [
                    {
                        "name": "include",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "title",
                                "-title",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[title]",
                        "in": "query",
                        "description": "Filtre partiel sur le titre du parcours.",
                        "schema": {},
                        "example": "Parcours"
                    },
                    {
                        "name": "filter[status]",
                        "in": "query",
                        "description": "Filtre exact sur le statut \u00e9ditorial.",
                        "schema": {},
                        "example": "published"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `PathResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/PathResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.paths.store",
                "summary": "Cr\u00e9er un parcours",
                "tags": [
                    "LMS - Parcours"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StorePathRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`PathResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/PathResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Parcours cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/paths\/{path}": {
            "get": {
                "operationId": "v1.paths.show",
                "description": "Retourne un parcours l\u00e9ger par d\u00e9faut. include=modules charge les modules p\u00e9dagogiques actifs ordonn\u00e9s par position, et include=cohorts charge toutes les cohortes du parcours.",
                "summary": "Consulter un parcours",
                "tags": [
                    "LMS - Parcours"
                ],
                "parameters": [
                    {
                        "name": "path",
                        "in": "path",
                        "required": true,
                        "description": "The path ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : modules, cohorts, created_by, created_by.profile.",
                        "schema": {
                            "type": "string",
                            "default": ""
                        },
                        "example": "modules,cohorts,created_by,created_by.profile"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`PathResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/PathResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.paths.update",
                "summary": "Mettre \u00e0 jour un parcours",
                "tags": [
                    "LMS - Parcours"
                ],
                "parameters": [
                    {
                        "name": "path",
                        "in": "path",
                        "required": true,
                        "description": "The path ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdatePathRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`PathResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/PathResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Parcours mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.paths.destroy",
                "summary": "Supprimer un parcours",
                "tags": [
                    "LMS - Parcours"
                ],
                "parameters": [
                    {
                        "name": "path",
                        "in": "path",
                        "required": true,
                        "description": "The path ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Parcours supprim\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/paths\/{path}\/publish": {
            "post": {
                "operationId": "v1.paths.publish",
                "description": "Fait passer un parcours \u00e9ligible de draft \u00e0 published et renvoie sa repr\u00e9sentation mise \u00e0 jour.",
                "summary": "Publier un parcours",
                "tags": [
                    "LMS - Parcours"
                ],
                "parameters": [
                    {
                        "name": "path",
                        "in": "path",
                        "required": true,
                        "description": "The path ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`PathResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/PathResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Parcours publi\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/paths\/{path}\/archive": {
            "post": {
                "operationId": "v1.paths.archive",
                "description": "Archive un parcours selon les r\u00e8gles m\u00e9tier valid\u00e9es et renvoie sa repr\u00e9sentation mise \u00e0 jour.",
                "summary": "Archiver un parcours",
                "tags": [
                    "LMS - Parcours"
                ],
                "parameters": [
                    {
                        "name": "path",
                        "in": "path",
                        "required": true,
                        "description": "The path ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`PathResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/PathResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Parcours archiv\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}\/modules\/{module}\/trainers": {
            "get": {
                "operationId": "v1.cohorts.modules.trainers.index",
                "description": "Retourne les formateurs actuellement rattach\u00e9s au couple cohorte + module p\u00e9dagogique, avec filtres, includes et pagination.",
                "summary": "Lister les formateurs rattach\u00e9s \u00e0 un module p\u00e9dagogique dans une cohorte",
                "tags": [
                    "LMS - Module p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "email",
                                "-email",
                                "assigned_at",
                                "-assigned_at",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[email]",
                        "in": "query",
                        "description": "Filtre partiel sur l\u2019email du formateur.",
                        "schema": {},
                        "example": "trainer@example.com"
                    },
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "description": "Filtre partiel sur first_name, middle_name ou last_name du formateur.",
                        "schema": {},
                        "example": "Mado"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `CourseTrainerAssignmentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/CourseTrainerAssignmentResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.cohorts.modules.trainers.store",
                "description": "Cr\u00e9e ou remplace le rattachement formateur pour le couple cohorte + module p\u00e9dagogique. C\u2019est l\u2019assignation canonique ; il n\u2019existe pas de rattachement formateur hors cohorte.",
                "summary": "Rattacher un formateur \u00e0 un module p\u00e9dagogique dans une cohorte",
                "tags": [
                    "LMS - Module p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreCourseTrainersRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`CourseTrainerAssignmentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CourseTrainerAssignmentResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Formateur assign\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}\/modules\/{module}\/trainers\/{trainer}": {
            "delete": {
                "operationId": "v1.cohorts.modules.trainers.destroy",
                "description": "Supprime physiquement le rattachement formateur contextualis\u00e9 par cohorte et module p\u00e9dagogique.",
                "summary": "Retirer un formateur d\u2019un module p\u00e9dagogique dans une cohorte",
                "tags": [
                    "LMS - Module p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "trainer",
                        "in": "path",
                        "required": true,
                        "description": "The trainer ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`CourseTrainerAssignmentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CourseTrainerAssignmentResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Formateur retir\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/modules": {
            "get": {
                "operationId": "v1.modules.index",
                "description": "Retourne les modules p\u00e9dagogiques visibles pour le user courant : globaux pour admin\/manager, assign\u00e9s pour formateur, suivis via cohorte active pour apprenant. include=cohort_trainer_assignments expose les formateurs assign\u00e9s au module dans une cohorte pr\u00e9cise et exige filter[cohort_id].",
                "summary": "Lister les modules p\u00e9dagogiques",
                "tags": [
                    "LMS - Module p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "include",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "title",
                                "-title",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[title]",
                        "in": "query",
                        "description": "Filtre partiel sur le titre du module p\u00e9dagogique.",
                        "schema": {},
                        "example": "Module"
                    },
                    {
                        "name": "filter[cohort_id]",
                        "in": "query",
                        "description": "Filtre selon le contexte cohorte : modules du parcours pour admin\/manager, modules assign\u00e9s dans cette cohorte pour formateur, modules de cette cohorte active pour apprenant.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `CourseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/CourseResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/modules\/{module}": {
            "get": {
                "operationId": "v1.modules.show",
                "description": "Retourne un module p\u00e9dagogique l\u00e9ger par d\u00e9faut. include=cohort_trainer_assignments expose les formateurs assign\u00e9s au module dans une cohorte pr\u00e9cise et exige filter[cohort_id].",
                "summary": "Consulter un module p\u00e9dagogique",
                "tags": [
                    "LMS - Module p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : paths, sub_modules, cohort_trainer_assignments, created_by, created_by.profile.",
                        "schema": {},
                        "example": "paths,sub_modules,cohort_trainer_assignments"
                    },
                    {
                        "name": "filter[cohort_id]",
                        "in": "query",
                        "description": "Cohorte utilis\u00e9e comme contexte pour include=cohort_trainer_assignments.",
                        "schema": {},
                        "example": 1
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`CourseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CourseResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.modules.update",
                "description": "Met \u00e0 jour les m\u00e9tadonn\u00e9es \u00e9ditables du module : title, slug, description, study_hours, learning_objectives, competencies et cover.",
                "summary": "Mettre \u00e0 jour un module p\u00e9dagogique",
                "tags": [
                    "LMS - Module p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateCourseRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`CourseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CourseResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Module p\u00e9dagogique mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.modules.destroy",
                "summary": "Supprimer un module p\u00e9dagogique",
                "tags": [
                    "LMS - Module p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Module p\u00e9dagogique supprim\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/modules\/{module}\/project-deliverables": {
            "get": {
                "operationId": "v1.modules.project-deliverables.index",
                "summary": "Lister les projets \u00e0 rendre d\u2019un module p\u00e9dagogique",
                "tags": [
                    "LMS - Module p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ProjectDeliverableResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ProjectDeliverableResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.modules.project-deliverables.store",
                "summary": "Cr\u00e9er un projet \u00e0 rendre dans un module p\u00e9dagogique",
                "tags": [
                    "LMS - Module p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreProjectDeliverableRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ProjectDeliverableResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ProjectDeliverableResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Livrable projet cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/modules\/{module}\/exercises": {
            "get": {
                "operationId": "v1.modules.exercises.index",
                "summary": "Lister les exercices d\u2019un module p\u00e9dagogique",
                "tags": [
                    "LMS - Module p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ExerciseResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.modules.exercises.store",
                "summary": "Cr\u00e9er un exercice dans un module p\u00e9dagogique",
                "tags": [
                    "LMS - Module p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreExerciseRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Exercice cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/modules\/{module}\/sub-modules": {
            "get": {
                "operationId": "v1.modules.sub-modules.index",
                "description": "Retourne par d\u00e9faut les sous-modules contenant au moins une le\u00e7on valid\u00e9e. Un formateur autoris\u00e9 \u00e0 g\u00e9rer la structure du module voit aussi les brouillons. Les archives se demandent explicitement via filter[status] selon les permissions du profil.",
                "summary": "Lister les sous-modules d\u2019un module p\u00e9dagogique",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "progress_summary",
                        "in": "query",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "title",
                                "-title",
                                "position",
                                "-position",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[title]",
                        "in": "query",
                        "description": "Filtre partiel sur le titre du sous-module.",
                        "schema": {},
                        "example": "Introduction"
                    },
                    {
                        "name": "filter[status]",
                        "in": "query",
                        "description": "Filtre exact sur le statut : published, draft ou archived.",
                        "schema": {},
                        "example": "published"
                    },
                    {
                        "name": "filter[cohort_id]",
                        "in": "query",
                        "description": "Cohorte utilis\u00e9e lorsque include=progress_summary est demand\u00e9.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "filter[learner_id]",
                        "in": "query",
                        "description": "Apprenant cibl\u00e9 pour un r\u00e9sum\u00e9 individuel lorsque include=progress_summary est demand\u00e9.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ModuleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ModuleResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.modules.sub-modules.store",
                "description": "Cr\u00e9e un sous-module dans le module p\u00e9dagogique de l\u2019URL. Le payload accepte title, slug, description et cover.",
                "summary": "Cr\u00e9er un sous-module",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreModuleRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ModuleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ModuleResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Sous-module cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/modules\/{module}\/sub-modules\/reorder": {
            "post": {
                "operationId": "v1.modules.sub-modules.reorder",
                "description": "R\u00e9\u00e9crit int\u00e9gralement l\u2019ordre public des sous-modules publi\u00e9s d\u2019un module p\u00e9dagogique en une seule op\u00e9ration transactionnelle.",
                "summary": "R\u00e9ordonner les sous-modules publi\u00e9s d\u2019un module p\u00e9dagogique",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/ReorderCourseModulesRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`CourseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CourseResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Ordre des sous-modules mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/sub-modules\/{sub_module}": {
            "get": {
                "operationId": "v1.sub-modules.show",
                "description": "Retourne un sous-module l\u00e9ger par d\u00e9faut. include=lessons charge les le\u00e7ons visibles selon le r\u00f4le : valid\u00e9es pour les apprenants, toutes les le\u00e7ons actives pour les acteurs autoris\u00e9s. progress_summary=1 ajoute un r\u00e9sum\u00e9 de progression contextualis\u00e9 par cohorte.",
                "summary": "Consulter un sous-module",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "progress_summary",
                        "in": "query",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "filter[cohort_id]",
                        "in": "query",
                        "description": "Cohorte utilis\u00e9e lorsque progress_summary=1 est demand\u00e9.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "filter[learner_id]",
                        "in": "query",
                        "description": "Apprenant cibl\u00e9 pour un r\u00e9sum\u00e9 individuel lorsque progress_summary=1 est demand\u00e9.",
                        "schema": {},
                        "example": 1
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ModuleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ModuleResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.sub-modules.update",
                "description": "Met \u00e0 jour les champs \u00e9ditables du sous-module : title, slug, description et cover.",
                "summary": "Mettre \u00e0 jour un sous-module",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateModuleRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ModuleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ModuleResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Sous-module mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.sub-modules.destroy",
                "summary": "Supprimer un sous-module",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Sous-module supprim\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/sub-modules\/{sub_module}\/publish": {
            "post": {
                "operationId": "v1.sub-modules.publish",
                "description": "Fait passer un sous-module draft \u00e0 published et l\u2019ins\u00e8re \u00e0 la position publique demand\u00e9e.",
                "summary": "Publier un sous-module",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/PublishModuleRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ModuleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ModuleResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Sous-module publi\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/sub-modules\/{sub_module}\/archive": {
            "post": {
                "operationId": "v1.sub-modules.archive",
                "description": "Archive un sous-module publi\u00e9, le retire de l\u2019ordre visible et compacte les positions restantes.",
                "summary": "Archiver un sous-module",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ModuleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ModuleResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Sous-module archiv\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/sub-modules\/{sub_module}\/project-deliverables": {
            "get": {
                "operationId": "v1.sub-modules.project-deliverables.index",
                "summary": "Lister les projets \u00e0 rendre d\u2019un sous-module",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ProjectDeliverableResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ProjectDeliverableResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.sub-modules.project-deliverables.store",
                "summary": "Cr\u00e9er un projet \u00e0 rendre dans un sous-module",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreProjectDeliverableRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ProjectDeliverableResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ProjectDeliverableResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Livrable projet cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/sub-modules\/{sub_module}\/exercises": {
            "get": {
                "operationId": "v1.sub-modules.exercises.index",
                "summary": "Lister les exercices d\u2019un sous-module",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ExerciseResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.sub-modules.exercises.store",
                "summary": "Cr\u00e9er un exercice dans un sous-module",
                "tags": [
                    "LMS - Sous-module"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreExerciseRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Exercice cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}\/modules\/{module}\/close": {
            "post": {
                "operationId": "v1.cohorts.modules.close",
                "description": "Cl\u00f4ture globalement un module p\u00e9dagogique pour la cohorte et attribue ses comp\u00e9tences aux apprenants actifs.",
                "summary": "Cl\u00f4turer un module pour une cohorte",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "cohort_id": {
                                                    "type": "integer"
                                                },
                                                "module_id": {
                                                    "type": "integer"
                                                },
                                                "closed_by_id": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "closed_at": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "cohort_id",
                                                "module_id",
                                                "closed_by_id",
                                                "closed_at"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Module cl\u00f4tur\u00e9 pour la cohorte avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/sub-modules\/{sub_module}\/lessons": {
            "get": {
                "operationId": "v1.sub-modules.lessons.index",
                "description": "Retourne les le\u00e7ons valid\u00e9es par d\u00e9faut. Le formateur assign\u00e9 voit aussi les brouillons. Un admin\/manager voit les le\u00e7ons soumises, valid\u00e9es et \u00e0 corriger, mais pas les brouillons.",
                "summary": "Lister les le\u00e7ons d\u2019un sous-module",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "title",
                                "-title",
                                "position",
                                "-position",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[title]",
                        "in": "query",
                        "description": "Filtre partiel sur le titre de la le\u00e7on.",
                        "schema": {},
                        "example": "Le\u00e7on"
                    },
                    {
                        "name": "filter[status]",
                        "in": "query",
                        "description": "Filtre exact sur le statut : draft, pending_review, validated ou correction_required.",
                        "schema": {},
                        "example": "validated"
                    },
                    {
                        "name": "filter[cohort_id]",
                        "in": "query",
                        "description": "Cohorte obligatoire pour un apprenant.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `LessonResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/LessonResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.sub-modules.lessons.store",
                "description": "Cr\u00e9e une le\u00e7on brouillon dans le sous-module de l\u2019URL. Le payload accepte title, slug, type, level, content, estimated_duration_minutes, cover et position optionnelle.",
                "summary": "Cr\u00e9er une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreLessonRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`LessonResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LessonResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Le\u00e7on cr\u00e9\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/sub-modules\/{sub_module}\/lessons\/reorder": {
            "post": {
                "operationId": "v1.sub-modules.lessons.reorder",
                "description": "R\u00e9\u00e9crit int\u00e9gralement l\u2019ordre des le\u00e7ons actives d\u2019un sous-module en une seule op\u00e9ration transactionnelle.",
                "summary": "R\u00e9ordonner les le\u00e7ons d\u2019un sous-module",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/ReorderModuleLessonsRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ModuleResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ModuleResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Ordre des le\u00e7ons mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}": {
            "get": {
                "operationId": "v1.lessons.show",
                "description": "Retourne une le\u00e7on l\u00e9g\u00e8re par d\u00e9faut. include=sub_module,sub_module.module charge son contexte p\u00e9dagogique imm\u00e9diat; include=review_comments charge les remarques de revue.",
                "summary": "Consulter une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "filter[cohort_id]",
                        "in": "query",
                        "description": "Cohorte obligatoire pour un apprenant.",
                        "schema": {},
                        "example": 1
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`LessonResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LessonResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.lessons.update",
                "description": "Met \u00e0 jour les champs \u00e9ditables de la le\u00e7on : title, slug, level, content, description, video, estimated_duration_minutes et cover. Le type est immuable apr\u00e8s cr\u00e9ation.",
                "summary": "Mettre \u00e0 jour une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateLessonRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`LessonResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LessonResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Le\u00e7on mise \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.lessons.destroy",
                "summary": "Supprimer une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Le\u00e7on supprim\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}\/submit-for-review": {
            "post": {
                "operationId": "v1.lessons.submit-for-review",
                "description": "Passe une le\u00e7on brouillon ou \u00e0 corriger en attente de validation, uniquement si toutes les remarques sont cl\u00f4tur\u00e9es.",
                "summary": "Soumettre une le\u00e7on pour validation",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`LessonResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LessonResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Le\u00e7on soumise pour validation avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}\/validate": {
            "post": {
                "operationId": "v1.lessons.validate",
                "description": "Passe une le\u00e7on revue au statut valid\u00e9e. Une le\u00e7on d\u00e9j\u00e0 valid\u00e9e confirme la validation; une le\u00e7on \u00e0 corriger avec remarques ouvertes exige force_resolve_corrections.",
                "summary": "Valider une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/ValidateLessonRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`LessonResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LessonResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Le\u00e7on valid\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}\/invalidate": {
            "post": {
                "operationId": "v1.lessons.invalidate",
                "description": "Action de revue admin\/manager : remet une le\u00e7on valid\u00e9e en attente afin de la retirer de la vue apprenant et de l\u2019analyser \u00e0 nouveau.",
                "summary": "Invalider une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`LessonResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LessonResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Le\u00e7on invalid\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}\/request-corrections": {
            "post": {
                "operationId": "v1.lessons.request-corrections",
                "description": "Action de revue admin\/manager : cr\u00e9e des remarques ouvertes et passe une le\u00e7on en attente ou valid\u00e9e au statut \u00e0 corriger.",
                "summary": "Demander des corrections sur une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/RequestLessonCorrectionsRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`LessonResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LessonResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Corrections demand\u00e9es avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}\/review-comments": {
            "get": {
                "operationId": "v1.lessons.review-comments.index",
                "description": "Retourne les remarques de revue d\u2019une le\u00e7on visible par l\u2019utilisateur courant.",
                "summary": "Lister les remarques de revue d\u2019une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "filter[status]",
                        "in": "query",
                        "description": "Filtre sur l\u2019\u00e9tat des remarques : open, resolved, cancelled ou all.",
                        "schema": {},
                        "example": "open"
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : created_at, -created_at.",
                        "schema": {},
                        "example": "-created_at"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `LessonReviewCommentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/LessonReviewCommentResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}\/review-comments\/{comment}": {
            "patch": {
                "operationId": "v1.lessons.review-comments.update",
                "description": "Modifie le contenu d\u2019une remarque ouverte non annul\u00e9e. R\u00e9serv\u00e9 \u00e0 la revue admin\/manager.",
                "summary": "Modifier une remarque de revue",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "comment",
                        "in": "path",
                        "required": true,
                        "description": "The comment ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateLessonReviewCommentRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`LessonReviewCommentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LessonReviewCommentResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Remarque mise \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.lessons.review-comments.destroy",
                "description": "Annule une remarque ouverte sans la supprimer physiquement. Une remarque annul\u00e9e ne bloque plus la resoumission.",
                "summary": "Annuler une remarque de revue",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "comment",
                        "in": "path",
                        "required": true,
                        "description": "The comment ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`LessonReviewCommentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LessonReviewCommentResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Remarque annul\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}\/review-comments\/{comment}\/resolve": {
            "patch": {
                "operationId": "v1.lessons.review-comments.resolve",
                "description": "Cl\u00f4ture une remarque de review ouverte afin que le formateur puisse resoumettre la le\u00e7on.",
                "summary": "Cl\u00f4turer une remarque de le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "comment",
                        "in": "path",
                        "required": true,
                        "description": "The comment ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`LessonReviewCommentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LessonReviewCommentResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Remarque cl\u00f4tur\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}\/project-deliverables": {
            "get": {
                "operationId": "v1.lessons.project-deliverables.index",
                "summary": "Lister les projets \u00e0 rendre d\u2019une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ProjectDeliverableResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ProjectDeliverableResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.lessons.project-deliverables.store",
                "summary": "Cr\u00e9er un projet \u00e0 rendre dans une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreProjectDeliverableRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ProjectDeliverableResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ProjectDeliverableResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Livrable projet cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}\/exercises": {
            "get": {
                "operationId": "v1.lessons.exercises.index",
                "summary": "Lister les exercices d\u2019une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ExerciseResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.lessons.exercises.store",
                "summary": "Cr\u00e9er un exercice dans une le\u00e7on",
                "tags": [
                    "LMS - Le\u00e7on"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreExerciseRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Exercice cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/competencies": {
            "get": {
                "operationId": "v1.competencies.index",
                "summary": "Lister les comp\u00e9tences p\u00e9dagogiques",
                "tags": [
                    "LMS - Comp\u00e9tences"
                ],
                "parameters": [
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : modules.",
                        "schema": {},
                        "example": "modules"
                    },
                    {
                        "name": "filter[label]",
                        "in": "query",
                        "description": "Filtre partiel sur le libell\u00e9.",
                        "schema": {},
                        "example": "HTML"
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : label, -label, created_at, -created_at.",
                        "schema": {},
                        "example": "label"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `CompetencyResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/CompetencyResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "An error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Error overview.",
                                            "example": ""
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.competencies.store",
                "summary": "Cr\u00e9er une comp\u00e9tence p\u00e9dagogique",
                "tags": [
                    "LMS - Comp\u00e9tences"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreCompetencyRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`CompetencyResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CompetencyResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Comp\u00e9tence cr\u00e9\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/competencies\/{competency}": {
            "get": {
                "operationId": "v1.competencies.show",
                "summary": "Consulter une comp\u00e9tence p\u00e9dagogique",
                "tags": [
                    "LMS - Comp\u00e9tences"
                ],
                "parameters": [
                    {
                        "name": "competency",
                        "in": "path",
                        "required": true,
                        "description": "The competency ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : modules.",
                        "schema": {},
                        "example": "modules"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`CompetencyResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CompetencyResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "An error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Error overview.",
                                            "example": ""
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.competencies.update",
                "summary": "Mettre \u00e0 jour une comp\u00e9tence p\u00e9dagogique",
                "tags": [
                    "LMS - Comp\u00e9tences"
                ],
                "parameters": [
                    {
                        "name": "competency",
                        "in": "path",
                        "required": true,
                        "description": "The competency ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateCompetencyRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`CompetencyResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CompetencyResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Comp\u00e9tence mise \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.competencies.destroy",
                "summary": "Supprimer une comp\u00e9tence p\u00e9dagogique",
                "tags": [
                    "LMS - Comp\u00e9tences"
                ],
                "parameters": [
                    {
                        "name": "competency",
                        "in": "path",
                        "required": true,
                        "description": "The competency ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Comp\u00e9tence supprim\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "An error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Error overview.",
                                            "example": ""
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/me\/cohorts\/{cohort}\/learning-progress": {
            "get": {
                "operationId": "v1.me.cohorts.learning-progress.show",
                "summary": "Consulter ma progression dans une cohorte",
                "tags": [
                    "LMS - Progression p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "cohort_id": {
                                                    "type": "integer"
                                                },
                                                "path_id": {
                                                    "type": "integer"
                                                },
                                                "learner_id": {
                                                    "type": "integer"
                                                },
                                                "path_progress_percentage": {
                                                    "type": "integer"
                                                },
                                                "modules": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "module_id": {
                                                                "type": "integer"
                                                            },
                                                            "status": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "completed",
                                                                    "in_progress"
                                                                ]
                                                            },
                                                            "progress_percentage": {
                                                                "type": "integer"
                                                            },
                                                            "completed_items_count": {
                                                                "type": "integer",
                                                                "minimum": 0
                                                            },
                                                            "total_items_count": {
                                                                "type": "integer",
                                                                "minimum": 0
                                                            },
                                                            "sub_modules": {
                                                                "type": "array",
                                                                "items": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "lessons": {
                                                                "type": "array",
                                                                "items": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "exercises": {
                                                                "type": "array",
                                                                "items": {
                                                                    "type": "string"
                                                                }
                                                            }
                                                        },
                                                        "required": [
                                                            "module_id",
                                                            "status",
                                                            "progress_percentage",
                                                            "completed_items_count",
                                                            "total_items_count",
                                                            "sub_modules",
                                                            "lessons",
                                                            "exercises"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "cohort_id",
                                                "path_id",
                                                "learner_id",
                                                "path_progress_percentage",
                                                "modules"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "An error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "description": "Error overview.",
                                            "example": ""
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/me\/learning-resume": {
            "get": {
                "operationId": "v1.me.learning-resume.show",
                "description": "Retourne la premi\u00e8re le\u00e7on non compl\u00e9t\u00e9e dans la s\u00e9quence visible du parcours de la cohorte active.",
                "summary": "Reprendre ma formation",
                "tags": [
                    "LMS - Progression p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "cohort_id",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "anyOf": [
                                                {
                                                    "type": "object",
                                                    "properties": {
                                                        "cohort_id": {
                                                            "type": "integer"
                                                        },
                                                        "path_id": {
                                                            "type": "integer"
                                                        },
                                                        "module_id": {
                                                            "type": "null"
                                                        },
                                                        "sub_module_id": {
                                                            "type": "null"
                                                        },
                                                        "lesson_id": {
                                                            "type": "null"
                                                        },
                                                        "lesson_title": {
                                                            "type": "null"
                                                        },
                                                        "is_completed": {
                                                            "type": "boolean"
                                                        },
                                                        "resume_reason": {
                                                            "type": "string",
                                                            "const": "path_completed"
                                                        }
                                                    },
                                                    "required": [
                                                        "cohort_id",
                                                        "path_id",
                                                        "module_id",
                                                        "sub_module_id",
                                                        "lesson_id",
                                                        "lesson_title",
                                                        "is_completed",
                                                        "resume_reason"
                                                    ]
                                                },
                                                {
                                                    "type": "object",
                                                    "properties": {
                                                        "cohort_id": {
                                                            "type": "integer"
                                                        },
                                                        "path_id": {
                                                            "type": "integer"
                                                        },
                                                        "module_id": {
                                                            "type": "string"
                                                        },
                                                        "sub_module_id": {
                                                            "type": "string"
                                                        },
                                                        "lesson_id": {
                                                            "type": "string"
                                                        },
                                                        "lesson_title": {
                                                            "type": "string"
                                                        },
                                                        "is_completed": {
                                                            "type": "boolean"
                                                        },
                                                        "resume_reason": {
                                                            "type": "string",
                                                            "const": "first_incomplete_in_path_sequence"
                                                        }
                                                    },
                                                    "required": [
                                                        "cohort_id",
                                                        "path_id",
                                                        "module_id",
                                                        "sub_module_id",
                                                        "lesson_id",
                                                        "lesson_title",
                                                        "is_completed",
                                                        "resume_reason"
                                                    ]
                                                }
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}\/lessons\/{lesson}\/complete": {
            "post": {
                "operationId": "v1.cohorts.lessons.complete",
                "summary": "Compl\u00e9ter une le\u00e7on dans une cohorte",
                "tags": [
                    "LMS - Progression p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "cohort_id": {
                                                    "type": "integer"
                                                },
                                                "lesson_id": {
                                                    "type": "integer"
                                                },
                                                "learner_id": {
                                                    "type": "integer"
                                                },
                                                "completed_at": {
                                                    "type": "string"
                                                },
                                                "is_completed": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "cohort_id",
                                                "lesson_id",
                                                "learner_id",
                                                "completed_at",
                                                "is_completed"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Le\u00e7on compl\u00e9t\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.cohorts.lessons.uncomplete",
                "summary": "Annuler la compl\u00e9tion d\u2019une le\u00e7on dans une cohorte",
                "tags": [
                    "LMS - Progression p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "cohort_id": {
                                                    "type": "integer"
                                                },
                                                "lesson_id": {
                                                    "type": "integer"
                                                },
                                                "learner_id": {
                                                    "type": "integer"
                                                },
                                                "is_completed": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "cohort_id",
                                                "lesson_id",
                                                "learner_id",
                                                "is_completed"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Compl\u00e9tion de la le\u00e7on annul\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}\/learners\/{learner}\/learning-progress": {
            "get": {
                "operationId": "v1.cohorts.learners.learning-progress.show",
                "summary": "Consulter la progression d\u2019un apprenant",
                "tags": [
                    "LMS - Progression p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "learner",
                        "in": "path",
                        "required": true,
                        "description": "The learner ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "cohort_id": {
                                                    "type": "integer"
                                                },
                                                "path_id": {
                                                    "type": "integer"
                                                },
                                                "learner_id": {
                                                    "type": "integer"
                                                },
                                                "path_progress_percentage": {
                                                    "type": "integer"
                                                },
                                                "modules": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "module_id": {
                                                                "type": "integer"
                                                            },
                                                            "status": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "completed",
                                                                    "in_progress"
                                                                ]
                                                            },
                                                            "progress_percentage": {
                                                                "type": "integer"
                                                            },
                                                            "completed_items_count": {
                                                                "type": "integer",
                                                                "minimum": 0
                                                            },
                                                            "total_items_count": {
                                                                "type": "integer",
                                                                "minimum": 0
                                                            },
                                                            "sub_modules": {
                                                                "type": "array",
                                                                "items": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "lessons": {
                                                                "type": "array",
                                                                "items": {
                                                                    "type": "string"
                                                                }
                                                            },
                                                            "exercises": {
                                                                "type": "array",
                                                                "items": {
                                                                    "type": "string"
                                                                }
                                                            }
                                                        },
                                                        "required": [
                                                            "module_id",
                                                            "status",
                                                            "progress_percentage",
                                                            "completed_items_count",
                                                            "total_items_count",
                                                            "sub_modules",
                                                            "lessons",
                                                            "exercises"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "cohort_id",
                                                "path_id",
                                                "learner_id",
                                                "path_progress_percentage",
                                                "modules"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}\/learning-progress": {
            "get": {
                "operationId": "v1.cohorts.learning-progress.show",
                "summary": "Consulter la progression agr\u00e9g\u00e9e d\u2019une cohorte",
                "tags": [
                    "LMS - Progression p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "cohort_id": {
                                                    "type": "integer"
                                                },
                                                "path_id": {
                                                    "type": "integer"
                                                },
                                                "path_average_progress_percentage": {
                                                    "type": "integer"
                                                },
                                                "modules": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "module_id": {
                                                                "type": "integer"
                                                            },
                                                            "learners_count": {
                                                                "type": "string"
                                                            },
                                                            "average_progress_percentage": {
                                                                "type": "integer"
                                                            },
                                                            "completed_learners_count": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "module_id",
                                                            "learners_count",
                                                            "average_progress_percentage",
                                                            "completed_learners_count"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "cohort_id",
                                                "path_id",
                                                "path_average_progress_percentage",
                                                "modules"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}\/complete": {
            "post": {
                "operationId": "v1.lessons.complete",
                "summary": "Compl\u00e9ter une le\u00e7on",
                "tags": [
                    "LMS - Progression p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "cohort_id": {
                                                    "type": "integer"
                                                },
                                                "lesson_id": {
                                                    "type": "integer"
                                                },
                                                "learner_id": {
                                                    "type": "integer"
                                                },
                                                "completed_at": {
                                                    "type": "string"
                                                },
                                                "is_completed": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "cohort_id",
                                                "lesson_id",
                                                "learner_id",
                                                "completed_at",
                                                "is_completed"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Le\u00e7on compl\u00e9t\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.lessons.uncomplete",
                "summary": "Annuler la compl\u00e9tion d\u2019une le\u00e7on",
                "tags": [
                    "LMS - Progression p\u00e9dagogique"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "cohort_id": {
                                                    "type": "integer"
                                                },
                                                "lesson_id": {
                                                    "type": "integer"
                                                },
                                                "learner_id": {
                                                    "type": "integer"
                                                },
                                                "is_completed": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "cohort_id",
                                                "lesson_id",
                                                "learner_id",
                                                "is_completed"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Compl\u00e9tion de la le\u00e7on annul\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/dashboard\/admin-summary": {
            "get": {
                "operationId": "v1.dashboard.admin-summary.show",
                "description": "Retourne les compteurs globaux (parcours, cohortes, apprenants, formateurs), la r\u00e9partition des cohortes par parcours et les indicateurs de suivi pour les espaces Admin et Manager.",
                "summary": "Consulter le r\u00e9sum\u00e9 administrateur du tableau de bord",
                "tags": [
                    "LMS - Tableau de bord"
                ],
                "responses": {
                    "200": {
                        "description": "`AdminDashboardSummaryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/AdminDashboardSummaryResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00e9sum\u00e9 du tableau de bord administrateur r\u00e9cup\u00e9r\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/dashboard\/learner-summary": {
            "get": {
                "operationId": "v1.dashboard.learner-summary.show",
                "description": "Retourne les modules en cours, la progression, les devoirs en attente, les prochaines \u00e9ch\u00e9ances et le calendrier du jour pour l\u2019apprenant connect\u00e9.",
                "summary": "Consulter le r\u00e9sum\u00e9 apprenant du tableau de bord",
                "tags": [
                    "LMS - Tableau de bord"
                ],
                "responses": {
                    "200": {
                        "description": "`LearnerDashboardSummaryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LearnerDashboardSummaryResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00e9sum\u00e9 du tableau de bord apprenant r\u00e9cup\u00e9r\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/dashboard\/trainer-summary": {
            "get": {
                "operationId": "v1.dashboard.trainer-summary.show",
                "description": "Retourne les compteurs, progressions agr\u00e9g\u00e9es et travaux \u00e0 corriger du formateur courant, limit\u00e9s \u00e0 ses couples cohorte + module p\u00e9dagogique assign\u00e9s.",
                "summary": "Consulter le r\u00e9sum\u00e9 formateur du tableau de bord",
                "tags": [
                    "LMS - Tableau de bord"
                ],
                "responses": {
                    "200": {
                        "description": "`TrainerDashboardSummaryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/TrainerDashboardSummaryResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00e9sum\u00e9 du tableau de bord formateur r\u00e9cup\u00e9r\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/paths\/{path}\/cohorts": {
            "get": {
                "operationId": "v1.paths.cohorts.index",
                "description": "Retourne les cohortes rattach\u00e9es au parcours courant, avec learners_count par d\u00e9faut.",
                "summary": "Lister les cohortes d\u2019un parcours",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "path",
                        "in": "path",
                        "required": true,
                        "description": "The path ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "filter[path_id]",
                        "in": "query",
                        "schema": {
                            "type": [
                                "integer",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "name",
                                "-name",
                                "start_date",
                                "-start_date",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "description": "Filtre partiel sur le nom de la cohorte.",
                        "schema": {},
                        "example": "Cohorte"
                    },
                    {
                        "name": "filter[status]",
                        "in": "query",
                        "description": "Filtre exact sur le statut de cohorte.",
                        "schema": {},
                        "example": "launched"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `CohortResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/CohortResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.paths.cohorts.store",
                "description": "Cr\u00e9e une cohorte draft sous le parcours de l\u2019URL. Le code promo, la s\u00e9quence et le statut sont g\u00e9n\u00e9r\u00e9s c\u00f4t\u00e9 backend.",
                "summary": "Cr\u00e9er une cohorte",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "path",
                        "in": "path",
                        "required": true,
                        "description": "The path ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreCohortRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`CohortResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CohortResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Cohorte cr\u00e9\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/paths\/{path}\/cohorts\/{cohort}": {
            "get": {
                "operationId": "v1.paths.cohorts.show",
                "description": "Retourne une vue contextualis\u00e9e d\u2019une cohorte rattach\u00e9e au parcours fourni. include=modules expose les modules p\u00e9dagogiques du parcours avec leurs formateurs assign\u00e9s dans cette cohorte.",
                "summary": "Consulter une cohorte depuis un parcours",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "path",
                        "in": "path",
                        "required": true,
                        "description": "The path ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : path, modules, referent, referent.profile, created_by, created_by.profile, launched_by, launched_by.profile, closed_by, closed_by.profile, cancelled_by, cancelled_by.profile.",
                        "schema": {},
                        "example": "path,modules,referent"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`CohortResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CohortResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/cohorts": {
            "get": {
                "operationId": "v1.cohorts.index",
                "description": "Retourne les champs scalaires et learners_count par d\u00e9faut pour la vue globale des cohortes.",
                "summary": "Lister les cohortes",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "include",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "name",
                                "-name",
                                "start_date",
                                "-start_date",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "description": "Filtre partiel sur le nom de la cohorte.",
                        "schema": {},
                        "example": "Cohorte"
                    },
                    {
                        "name": "filter[status]",
                        "in": "query",
                        "description": "Filtre exact sur le statut de cohorte.",
                        "schema": {},
                        "example": "launched"
                    },
                    {
                        "name": "filter[path_id]",
                        "in": "query",
                        "description": "Filtre exact sur le parcours auquel la cohorte est rattach\u00e9e.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `CohortResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/CohortResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}": {
            "get": {
                "operationId": "v1.cohorts.show",
                "description": "Retourne une cohorte l\u00e9g\u00e8re par d\u00e9faut. include=modules expose les modules p\u00e9dagogiques du parcours de la cohorte avec leurs formateurs assign\u00e9s dans cette cohorte.",
                "summary": "Consulter une cohorte",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : path, modules, referent, referent.profile, created_by, created_by.profile, launched_by, launched_by.profile, closed_by, closed_by.profile, cancelled_by, cancelled_by.profile.",
                        "schema": {},
                        "example": "path,modules,referent"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`CohortResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CohortResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.cohorts.update",
                "summary": "Mettre \u00e0 jour une cohorte",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateCohortRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`CohortResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CohortResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Cohorte mise \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.cohorts.destroy",
                "summary": "Supprimer une cohorte",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Cohorte supprim\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}\/launch": {
            "post": {
                "operationId": "v1.cohorts.launch",
                "description": "Fait passer une cohorte de draft \u00e0 launched et renvoie sa repr\u00e9sentation mise \u00e0 jour.",
                "summary": "Lancer une cohorte",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`CohortResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CohortResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Cohorte lanc\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}\/close": {
            "post": {
                "operationId": "v1.cohorts.close",
                "description": "Fait passer une cohorte launched \u00e0 closed et renvoie sa repr\u00e9sentation mise \u00e0 jour.",
                "summary": "Clore une cohorte",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`CohortResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CohortResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Cohorte cl\u00f4tur\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}\/cancel": {
            "post": {
                "operationId": "v1.cohorts.cancel",
                "description": "Annule une cohorte \u00e9ligible et renvoie sa repr\u00e9sentation mise \u00e0 jour.",
                "summary": "Annuler une cohorte",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`CohortResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/CohortResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Cohorte annul\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}\/learners": {
            "get": {
                "operationId": "v1.cohorts.learners.index",
                "description": "Retourne par d\u00e9faut les memberships apprenants actifs. Les statuts removed et completed remontent uniquement via filter[status][].",
                "summary": "Lister les apprenants d\u2019une cohorte",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "email",
                                "-email",
                                "joined_at",
                                "-joined_at",
                                "created_at",
                                "-created_at"
                            ]
                        }
                    },
                    {
                        "name": "filter[status][]",
                        "in": "query",
                        "description": "Filtre les memberships apprenants par statut : active, removed, completed.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "active"
                    },
                    {
                        "name": "filter[user_status][]",
                        "in": "query",
                        "description": "Filtre les statuts techniques des users : pending, active, suspended.",
                        "schema": {
                            "type": "array",
                            "items": {}
                        },
                        "example": "pending"
                    },
                    {
                        "name": "filter[email]",
                        "in": "query",
                        "description": "Filtre partiel sur l\u2019email de l\u2019apprenant.",
                        "schema": {},
                        "example": "learner@example.com"
                    },
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "description": "Filtre partiel sur first_name, middle_name ou last_name.",
                        "schema": {},
                        "example": "Amina"
                    },
                    {
                        "name": "page[number]",
                        "in": "query",
                        "description": "Num\u00e9ro de page JSON:API-inspired.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "page[size]",
                        "in": "query",
                        "description": "Taille de page JSON:API-inspired, born\u00e9e par la configuration applicative.",
                        "schema": {},
                        "example": 15
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `LearnerMembershipResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/LearnerMembershipResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/cohorts\/{cohort}\/learners\/{learner}": {
            "delete": {
                "operationId": "v1.cohorts.learners.destroy",
                "description": "Marque le membership apprenant comme removed, renseigne left_at et conserve l\u2019historique.",
                "summary": "Retirer un apprenant d\u2019une cohorte",
                "tags": [
                    "LMS - Cohorte"
                ],
                "parameters": [
                    {
                        "name": "cohort",
                        "in": "path",
                        "required": true,
                        "description": "The cohort ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "learner",
                        "in": "path",
                        "required": true,
                        "description": "The learner ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`LearnerMembershipResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LearnerMembershipResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Apprenant retir\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/modules\/{module}\/resources": {
            "get": {
                "operationId": "v1.modules.resources.index",
                "summary": "Lister les ressources rattach\u00e9es \u00e0 un module p\u00e9dagogique",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `LearningResourceResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/LearningResourceResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.modules.resources.store",
                "summary": "Cr\u00e9er une ressource rattach\u00e9e \u00e0 un module p\u00e9dagogique",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "module",
                        "in": "path",
                        "required": true,
                        "description": "The module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreLearningResourceRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`LearningResourceResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LearningResourceResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Ressource p\u00e9dagogique cr\u00e9\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/sub-modules\/{sub_module}\/resources": {
            "get": {
                "operationId": "v1.sub-modules.resources.index",
                "summary": "Lister les ressources rattach\u00e9es \u00e0 un sous-module",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `LearningResourceResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/LearningResourceResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.sub-modules.resources.store",
                "summary": "Cr\u00e9er une ressource rattach\u00e9e \u00e0 un sous-module",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "sub_module",
                        "in": "path",
                        "required": true,
                        "description": "The sub module ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreLearningResourceRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`LearningResourceResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LearningResourceResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Ressource p\u00e9dagogique cr\u00e9\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/lessons\/{lesson}\/resources": {
            "get": {
                "operationId": "v1.lessons.resources.index",
                "summary": "Lister les ressources rattach\u00e9es \u00e0 une le\u00e7on",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `LearningResourceResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/LearningResourceResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.lessons.resources.store",
                "summary": "Cr\u00e9er une ressource rattach\u00e9e \u00e0 une le\u00e7on",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "lesson",
                        "in": "path",
                        "required": true,
                        "description": "The lesson ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreLearningResourceRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`LearningResourceResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LearningResourceResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Ressource p\u00e9dagogique cr\u00e9\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/resources": {
            "get": {
                "operationId": "v1.resources.index",
                "summary": "Lister la banque de ressources p\u00e9dagogiques",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "filter[type]",
                        "in": "query",
                        "description": "Filtrer par type : text, image, video, pdf, document.",
                        "schema": {},
                        "example": "pdf"
                    },
                    {
                        "name": "filter[module_id]",
                        "in": "query",
                        "description": "Filtrer par module p\u00e9dagogique.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "filter[resourceable_type]",
                        "in": "query",
                        "description": "Filtrer par support : module, sub_module, lesson ou exercise.",
                        "schema": {},
                        "example": "lesson"
                    },
                    {
                        "name": "filter[title]",
                        "in": "query",
                        "description": "Filtre partiel sur le libell\u00e9 visible.",
                        "schema": {},
                        "example": "Support"
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : module, created_by, created_by.profile, resourceable.",
                        "schema": {},
                        "example": "module,resourceable"
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : title, -title, created_at, -created_at.",
                        "schema": {},
                        "example": "-created_at"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `LearningResourceResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/LearningResourceResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/resources\/{resource}": {
            "get": {
                "operationId": "v1.resources.show",
                "summary": "Consulter une ressource p\u00e9dagogique",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "resource",
                        "in": "path",
                        "required": true,
                        "description": "The resource ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`LearningResourceResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LearningResourceResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.resources.update",
                "summary": "Modifier une ressource p\u00e9dagogique",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "resource",
                        "in": "path",
                        "required": true,
                        "description": "The resource ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateLearningResourceRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`LearningResourceResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LearningResourceResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Ressource p\u00e9dagogique mise \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.resources.destroy",
                "summary": "Supprimer une ressource p\u00e9dagogique",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "resource",
                        "in": "path",
                        "required": true,
                        "description": "The resource ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Ressource p\u00e9dagogique supprim\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/exercises\/{exercise}\/resources": {
            "get": {
                "operationId": "v1.exercises.resources.index",
                "summary": "Lister les ressources rattach\u00e9es \u00e0 un exercice",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `LearningResourceResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/LearningResourceResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.exercises.resources.store",
                "summary": "Cr\u00e9er une ressource rattach\u00e9e \u00e0 un exercice",
                "tags": [
                    "Ressources p\u00e9dagogiques"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreLearningResourceRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`LearningResourceResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/LearningResourceResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Ressource p\u00e9dagogique cr\u00e9\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/project-deliverables": {
            "get": {
                "operationId": "v1.project-deliverables.index",
                "description": "Liste les livrables projet visibles pour le user courant, avec filtres par cohorte, module p\u00e9dagogique, statut, \u00e9ch\u00e9ance et cible.",
                "summary": "Lister les projets \u00e0 rendre",
                "tags": [
                    "\u00c9valuations - Livrables projet"
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ProjectDeliverableResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ProjectDeliverableResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.project-deliverables.store",
                "summary": "Cr\u00e9er un projet \u00e0 rendre",
                "tags": [
                    "\u00c9valuations - Livrables projet"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreProjectDeliverableRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ProjectDeliverableResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ProjectDeliverableResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Livrable projet cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/project-deliverables\/{projectDeliverable}": {
            "get": {
                "operationId": "v1.project-deliverables.show",
                "description": "Retourne le livrable projet, son contexte p\u00e9dagogique, ses assignations, ses soumissions et ses m\u00e9dias.",
                "summary": "Consulter un projet \u00e0 rendre",
                "tags": [
                    "\u00c9valuations - Livrables projet"
                ],
                "parameters": [
                    {
                        "name": "projectDeliverable",
                        "in": "path",
                        "required": true,
                        "description": "The project deliverable ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ProjectDeliverableResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ProjectDeliverableResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.project-deliverables.update",
                "summary": "Mettre \u00e0 jour un projet \u00e0 rendre",
                "tags": [
                    "\u00c9valuations - Livrables projet"
                ],
                "parameters": [
                    {
                        "name": "projectDeliverable",
                        "in": "path",
                        "required": true,
                        "description": "The project deliverable ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateProjectDeliverableRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ProjectDeliverableResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ProjectDeliverableResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Livrable projet mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.project-deliverables.destroy",
                "summary": "Supprimer un projet \u00e0 rendre",
                "tags": [
                    "\u00c9valuations - Livrables projet"
                ],
                "parameters": [
                    {
                        "name": "projectDeliverable",
                        "in": "path",
                        "required": true,
                        "description": "The project deliverable ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Livrable projet supprim\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/project-deliverables\/{projectDeliverable}\/submissions": {
            "get": {
                "operationId": "v1.project-deliverables.submissions.index",
                "summary": "Lister les soumissions d\u2019un projet \u00e0 rendre",
                "tags": [
                    "\u00c9valuations - Livrables projet"
                ],
                "parameters": [
                    {
                        "name": "projectDeliverable",
                        "in": "path",
                        "required": true,
                        "description": "The project deliverable ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ProjectDeliverableSubmissionResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ProjectDeliverableSubmissionResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.project-deliverables.submissions.store",
                "summary": "Soumettre un projet \u00e0 rendre",
                "tags": [
                    "\u00c9valuations - Livrables projet"
                ],
                "parameters": [
                    {
                        "name": "projectDeliverable",
                        "in": "path",
                        "required": true,
                        "description": "The project deliverable ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreProjectDeliverableSubmissionRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ProjectDeliverableSubmissionResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ProjectDeliverableSubmissionResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Soumission envoy\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/project-deliverables\/{projectDeliverable}\/submissions\/{submission}\/correction": {
            "patch": {
                "operationId": "v1.project-deliverables.submissions.correction",
                "summary": "Corriger une soumission de projet \u00e0 rendre",
                "tags": [
                    "\u00c9valuations - Livrables projet"
                ],
                "parameters": [
                    {
                        "name": "projectDeliverable",
                        "in": "path",
                        "required": true,
                        "description": "The project deliverable ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "submission",
                        "in": "path",
                        "required": true,
                        "description": "The submission ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/CorrectProjectDeliverableSubmissionRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ProjectDeliverableSubmissionResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ProjectDeliverableSubmissionResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Soumission corrig\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/exercises\/{exercise}\/publish": {
            "post": {
                "operationId": "v1.exercises.publish",
                "summary": "Publier un exercice",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Exercice publi\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/exercises\/{exercise}\/archive": {
            "post": {
                "operationId": "v1.exercises.archive",
                "summary": "Archiver un exercice",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Exercice archiv\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/exercises\/{exercise}\/questions": {
            "get": {
                "operationId": "v1.exercises.questions.index",
                "summary": "Lister les questions d\u2019un exercice",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of `ExerciseQuestionResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ExerciseQuestionResource"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.exercises.questions.store",
                "summary": "Cr\u00e9er une question d\u2019exercice",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreExerciseQuestionRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ExerciseQuestionResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseQuestionResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Question cr\u00e9\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/exercises\/{exercise}\/questions\/{question}": {
            "patch": {
                "operationId": "v1.exercises.questions.update",
                "summary": "Mettre \u00e0 jour une question d\u2019exercice",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "question",
                        "in": "path",
                        "required": true,
                        "description": "The question ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateExerciseQuestionRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ExerciseQuestionResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseQuestionResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Question mise \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.exercises.questions.destroy",
                "summary": "Supprimer une question d\u2019exercice",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "question",
                        "in": "path",
                        "required": true,
                        "description": "The question ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Question supprim\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/exercises\/{exercise}\/questions\/{question}\/options": {
            "post": {
                "operationId": "v1.exercises.questions.options.store",
                "summary": "Cr\u00e9er une option de question",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "question",
                        "in": "path",
                        "required": true,
                        "description": "The question ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreExerciseQuestionOptionRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ExerciseQuestionOptionResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseQuestionOptionResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Option cr\u00e9\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/exercises\/{exercise}\/questions\/{question}\/options\/{option}": {
            "patch": {
                "operationId": "v1.exercises.questions.options.update",
                "summary": "Mettre \u00e0 jour une option de question",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "question",
                        "in": "path",
                        "required": true,
                        "description": "The question ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "option",
                        "in": "path",
                        "required": true,
                        "description": "The option ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateExerciseQuestionOptionRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ExerciseQuestionOptionResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseQuestionOptionResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Option mise \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.exercises.questions.options.destroy",
                "summary": "Supprimer une option de question",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "question",
                        "in": "path",
                        "required": true,
                        "description": "The question ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "option",
                        "in": "path",
                        "required": true,
                        "description": "The option ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Option supprim\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/exercises\/{exercise}\/attempts": {
            "get": {
                "operationId": "v1.exercises.attempts.index",
                "summary": "Lister les tentatives d\u2019un exercice",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ExerciseAttemptResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ExerciseAttemptResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.exercises.attempts.store",
                "summary": "D\u00e9marrer une tentative d\u2019exercice",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "`ExerciseAttemptResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseAttemptResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Tentative d\u00e9marr\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/exercise-attempts\/{attempt}": {
            "get": {
                "operationId": "v1.exercise-attempts.show",
                "summary": "Consulter une tentative d\u2019exercice",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "attempt",
                        "in": "path",
                        "required": true,
                        "description": "The attempt ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ExerciseAttemptResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseAttemptResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/exercise-attempts\/{attempt}\/answers": {
            "post": {
                "operationId": "v1.exercise-attempts.answers.store",
                "summary": "Enregistrer une r\u00e9ponse de tentative",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "attempt",
                        "in": "path",
                        "required": true,
                        "description": "The attempt ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreExerciseAnswerRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ExerciseAnswerResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseAnswerResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00e9ponse enregistr\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/exercise-attempts\/{attempt}\/finish": {
            "post": {
                "operationId": "v1.exercise-attempts.finish",
                "summary": "Finaliser une tentative d\u2019exercice",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "attempt",
                        "in": "path",
                        "required": true,
                        "description": "The attempt ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ExerciseAttemptResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseAttemptResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Tentative finalis\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/exercise-attempts\/{attempt}\/answers\/{answer}\/correction": {
            "patch": {
                "operationId": "v1.exercise-attempts.answers.correction",
                "summary": "Corriger une r\u00e9ponse de tentative",
                "tags": [
                    "LMS - Exercices"
                ],
                "parameters": [
                    {
                        "name": "attempt",
                        "in": "path",
                        "required": true,
                        "description": "The attempt ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "answer",
                        "in": "path",
                        "required": true,
                        "description": "The answer ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/CorrectExerciseAnswerRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ExerciseAnswerResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseAnswerResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00e9ponse corrig\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/exercises": {
            "get": {
                "operationId": "v1.exercises.index",
                "description": "Liste les quiz et \u00e9v\u00e9nements d\u2019\u00e9valuation visibles pour le user courant, avec filtres par type, statut, cohorte, module p\u00e9dagogique et support p\u00e9dagogique.",
                "summary": "Lister les exercices",
                "tags": [
                    "\u00c9valuations - Exercices"
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ExerciseResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.exercises.store",
                "description": "Cr\u00e9e un quiz ou un \u00e9v\u00e9nement d\u2019\u00e9valuation rattach\u00e9 \u00e0 un module p\u00e9dagogique, avec rattachement optionnel \u00e0 un sous-module ou une le\u00e7on.",
                "summary": "Cr\u00e9er un exercice",
                "tags": [
                    "\u00c9valuations - Exercices"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreExerciseRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Exercice cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/exercises\/{exercise}": {
            "get": {
                "operationId": "v1.exercises.show",
                "description": "Retourne l\u2019exercice, son contexte p\u00e9dagogique, ses questions\/options et les compteurs de questions et tentatives.",
                "summary": "Consulter un exercice",
                "tags": [
                    "\u00c9valuations - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.exercises.update",
                "summary": "Mettre \u00e0 jour un exercice",
                "tags": [
                    "\u00c9valuations - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateExerciseRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ExerciseResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ExerciseResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Exercice mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.exercises.destroy",
                "summary": "Supprimer un exercice",
                "tags": [
                    "\u00c9valuations - Exercices"
                ],
                "parameters": [
                    {
                        "name": "exercise",
                        "in": "path",
                        "required": true,
                        "description": "The exercise ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Exercice supprim\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/faq\/categories": {
            "get": {
                "operationId": "v1.faq.categories.index",
                "summary": "Lister les cat\u00e9gories FAQ",
                "tags": [
                    "FAQ"
                ],
                "parameters": [
                    {
                        "name": "filter[name]",
                        "in": "query",
                        "description": "Filtre partiel sur le nom.",
                        "schema": {},
                        "example": "Compte"
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : position, -position, name, -name, created_at, -created_at.",
                        "schema": {},
                        "example": "position"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `FaqCategoryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/FaqCategoryResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.faq.categories.store",
                "summary": "Cr\u00e9er une cat\u00e9gorie FAQ",
                "tags": [
                    "FAQ"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreFaqCategoryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`FaqCategoryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FaqCategoryResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Cat\u00e9gorie FAQ cr\u00e9\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/faq\/categories\/{faqCategory}": {
            "get": {
                "operationId": "v1.faq.categories.show",
                "summary": "Consulter une cat\u00e9gorie FAQ",
                "tags": [
                    "FAQ"
                ],
                "parameters": [
                    {
                        "name": "faqCategory",
                        "in": "path",
                        "required": true,
                        "description": "The faq category ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`FaqCategoryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FaqCategoryResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.faq.categories.update",
                "summary": "Modifier une cat\u00e9gorie FAQ",
                "tags": [
                    "FAQ"
                ],
                "parameters": [
                    {
                        "name": "faqCategory",
                        "in": "path",
                        "required": true,
                        "description": "The faq category ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateFaqCategoryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`FaqCategoryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FaqCategoryResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Cat\u00e9gorie FAQ mise \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.faq.categories.destroy",
                "summary": "Supprimer une cat\u00e9gorie FAQ",
                "tags": [
                    "FAQ"
                ],
                "parameters": [
                    {
                        "name": "faqCategory",
                        "in": "path",
                        "required": true,
                        "description": "The faq category ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Cat\u00e9gorie FAQ supprim\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/faq\/entries": {
            "get": {
                "operationId": "v1.faq.entries.index",
                "summary": "Lister les entr\u00e9es FAQ",
                "tags": [
                    "FAQ"
                ],
                "parameters": [
                    {
                        "name": "filter[category_id]",
                        "in": "query",
                        "description": "Filtrer par cat\u00e9gorie FAQ.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "filter[published]",
                        "in": "query",
                        "description": "Filtrer par \u00e9tat de publication.",
                        "schema": {},
                        "example": true
                    },
                    {
                        "name": "filter[search]",
                        "in": "query",
                        "description": "Recherche partielle dans question et r\u00e9ponse.",
                        "schema": {},
                        "example": "mot de passe"
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : category, created_by, created_by.profile, published_by.",
                        "schema": {},
                        "example": "category,published_by"
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : position, question, published_at, created_at.",
                        "schema": {},
                        "example": "position,-created_at"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `FaqEntryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/FaqEntryResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.faq.entries.store",
                "summary": "Cr\u00e9er une entr\u00e9e FAQ",
                "tags": [
                    "FAQ"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreFaqEntryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`FaqEntryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FaqEntryResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Entr\u00e9e FAQ cr\u00e9\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/faq\/entries\/{faqEntry}": {
            "get": {
                "operationId": "v1.faq.entries.show",
                "summary": "Consulter une entr\u00e9e FAQ",
                "tags": [
                    "FAQ"
                ],
                "parameters": [
                    {
                        "name": "faqEntry",
                        "in": "path",
                        "required": true,
                        "description": "The faq entry ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`FaqEntryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FaqEntryResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.faq.entries.update",
                "summary": "Modifier une entr\u00e9e FAQ",
                "tags": [
                    "FAQ"
                ],
                "parameters": [
                    {
                        "name": "faqEntry",
                        "in": "path",
                        "required": true,
                        "description": "The faq entry ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateFaqEntryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`FaqEntryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FaqEntryResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Entr\u00e9e FAQ mise \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.faq.entries.destroy",
                "summary": "Supprimer une entr\u00e9e FAQ",
                "tags": [
                    "FAQ"
                ],
                "parameters": [
                    {
                        "name": "faqEntry",
                        "in": "path",
                        "required": true,
                        "description": "The faq entry ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Entr\u00e9e FAQ supprim\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/faq\/entries\/{faqEntry}\/publish": {
            "post": {
                "operationId": "v1.faq.entries.publish",
                "summary": "Publier une entr\u00e9e FAQ",
                "tags": [
                    "FAQ"
                ],
                "parameters": [
                    {
                        "name": "faqEntry",
                        "in": "path",
                        "required": true,
                        "description": "The faq entry ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`FaqEntryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FaqEntryResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Entr\u00e9e FAQ publi\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/faq\/entries\/{faqEntry}\/unpublish": {
            "post": {
                "operationId": "v1.faq.entries.unpublish",
                "summary": "D\u00e9publier une entr\u00e9e FAQ",
                "tags": [
                    "FAQ"
                ],
                "parameters": [
                    {
                        "name": "faqEntry",
                        "in": "path",
                        "required": true,
                        "description": "The faq entry ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`FaqEntryResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/FaqEntryResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Entr\u00e9e FAQ d\u00e9publi\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/event-types": {
            "get": {
                "operationId": "v1.event-types.index",
                "description": "Retourne les types d\u2019\u00e9v\u00e9nements Agenda avec leurs couleurs et champs attendus.",
                "summary": "Lister les types d\u2019\u00e9v\u00e9nement",
                "tags": [
                    "Agenda"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {}
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/events": {
            "get": {
                "operationId": "v1.events.index",
                "summary": "Lister les \u00e9v\u00e9nements",
                "tags": [
                    "Agenda"
                ],
                "parameters": [
                    {
                        "name": "view",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "day",
                                "week",
                                "month"
                            ]
                        }
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "course_session",
                                "evaluation",
                                "project_deliverable"
                            ]
                        }
                    },
                    {
                        "name": "filter[course_id]",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "schema": {
                            "type": [
                                "string",
                                "null"
                            ]
                        }
                    },
                    {
                        "name": "filter[type]",
                        "in": "query",
                        "description": "Filtre exact sur le type : course_session, evaluation, project_deliverable.",
                        "schema": {},
                        "example": "course_session"
                    },
                    {
                        "name": "filter[cohort_id]",
                        "in": "query",
                        "description": "Filtre exact sur la cohorte.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "filter[module_id]",
                        "in": "query",
                        "description": "Filtre exact sur le module p\u00e9dagogique.",
                        "schema": {},
                        "example": 1
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of `EventResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/EventResource"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.events.store",
                "summary": "Cr\u00e9er un \u00e9v\u00e9nement",
                "tags": [
                    "Agenda"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreEventRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Array of `EventResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/EventResource"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "enum": [
                                                "\u00c9v\u00e9nements cr\u00e9\u00e9s avec succ\u00e8s.",
                                                "\u00c9v\u00e9nement cr\u00e9\u00e9 avec succ\u00e8s."
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/events\/{event}": {
            "get": {
                "operationId": "v1.events.show",
                "summary": "Consulter un \u00e9v\u00e9nement",
                "tags": [
                    "Agenda"
                ],
                "parameters": [
                    {
                        "name": "event",
                        "in": "path",
                        "required": true,
                        "description": "The event ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`EventResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/EventResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.events.update",
                "summary": "Modifier un \u00e9v\u00e9nement",
                "tags": [
                    "Agenda"
                ],
                "parameters": [
                    {
                        "name": "event",
                        "in": "path",
                        "required": true,
                        "description": "The event ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateEventRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Array of `EventResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/EventResource"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "enum": [
                                                "S\u00e9rie d\u2019\u00e9v\u00e9nements mise \u00e0 jour avec succ\u00e8s.",
                                                "\u00c9v\u00e9nement mis \u00e0 jour avec succ\u00e8s."
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.events.destroy",
                "summary": "Supprimer un \u00e9v\u00e9nement",
                "tags": [
                    "Agenda"
                ],
                "parameters": [
                    {
                        "name": "event",
                        "in": "path",
                        "required": true,
                        "description": "The event ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "enum": [
                                                "S\u00e9rie d\u2019\u00e9v\u00e9nements supprim\u00e9e avec succ\u00e8s.",
                                                "\u00c9v\u00e9nement supprim\u00e9 avec succ\u00e8s."
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/conversations": {
            "get": {
                "operationId": "v1.conversations.index",
                "summary": "Lister ses conversations",
                "tags": [
                    "Communication - Messagerie"
                ],
                "parameters": [
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : members, members.profile.",
                        "schema": {},
                        "example": "members,members.profile"
                    },
                    {
                        "name": "filter[type]",
                        "in": "query",
                        "description": "Filtrer par type : direct ou group.",
                        "schema": {},
                        "example": "direct"
                    },
                    {
                        "name": "filter[search]",
                        "in": "query",
                        "description": "Recherche sur le nom de conversation ou les membres.",
                        "schema": {},
                        "example": "p\u00e9dagogie"
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : created_at, -created_at, updated_at, -updated_at.",
                        "schema": {},
                        "example": "-updated_at"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ConversationResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ConversationResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.conversations.store",
                "summary": "Cr\u00e9er une conversation",
                "tags": [
                    "Communication - Messagerie"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreConversationRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/conversations\/{conversation}": {
            "get": {
                "operationId": "v1.conversations.show",
                "summary": "Consulter une conversation",
                "tags": [
                    "Communication - Messagerie"
                ],
                "parameters": [
                    {
                        "name": "conversation",
                        "in": "path",
                        "required": true,
                        "description": "The conversation ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ConversationResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ConversationResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.conversations.destroy",
                "summary": "Archiver ou supprimer d\u00e9finitivement une conversation",
                "tags": [
                    "Communication - Messagerie"
                ],
                "parameters": [
                    {
                        "name": "conversation",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "properties": {
                                                "data": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "minItems": 0,
                                                    "maxItems": 0,
                                                    "additionalItems": false
                                                },
                                                "message": {
                                                    "type": "string",
                                                    "const": "Conversation archiv\u00e9e avec succ\u00e8s."
                                                }
                                            },
                                            "required": [
                                                "data",
                                                "message"
                                            ]
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "data": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "minItems": 0,
                                                    "maxItems": 0,
                                                    "additionalItems": false
                                                },
                                                "message": {
                                                    "type": "string",
                                                    "const": "Conversation supprim\u00e9e d\u00e9finitivement avec succ\u00e8s."
                                                }
                                            },
                                            "required": [
                                                "data",
                                                "message"
                                            ]
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/forum-threads": {
            "get": {
                "operationId": "v1.forum-threads.index",
                "summary": "Lister les sujets de forum",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "filter[visibility]",
                        "in": "query",
                        "description": "Filtrer par visibilit\u00e9 : cohort_only, trainers_only, public.",
                        "schema": {},
                        "example": "cohort_only"
                    },
                    {
                        "name": "filter[tag]",
                        "in": "query",
                        "description": "Filtrer par slug de tag.",
                        "schema": {},
                        "example": "pedagogie"
                    },
                    {
                        "name": "filter[cohort_id]",
                        "in": "query",
                        "description": "Filtrer par cohorte.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "filter[module_id]",
                        "in": "query",
                        "description": "Filtrer par module p\u00e9dagogique.",
                        "schema": {},
                        "example": 1
                    },
                    {
                        "name": "filter[forumable_type]",
                        "in": "query",
                        "description": "Filtrer par rattachement : module, sub_module ou lesson.",
                        "schema": {},
                        "example": "lesson"
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : cohort, module, created_by, created_by.profile, tags, posts.",
                        "schema": {},
                        "example": "tags,created_by"
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : created_at, -created_at, updated_at, -updated_at, title, -title.",
                        "schema": {},
                        "example": "-created_at"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ForumThreadResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ForumThreadResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.forum-threads.store",
                "summary": "Cr\u00e9er un sujet de forum",
                "tags": [
                    "Communication - Forum"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreForumThreadRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ForumThreadResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ForumThreadResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Sujet de forum cr\u00e9\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/forum-threads\/{forumThread}": {
            "get": {
                "operationId": "v1.forum-threads.show",
                "summary": "Consulter un sujet de forum",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumThread",
                        "in": "path",
                        "required": true,
                        "description": "The forum thread ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ForumThreadResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ForumThreadResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "put": {
                "operationId": "v1.forum-threads.update",
                "summary": "Modifier un sujet de forum",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumThread",
                        "in": "path",
                        "required": true,
                        "description": "The forum thread ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateForumThreadRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ForumThreadResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ForumThreadResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Sujet de forum mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.forum-threads.destroy",
                "summary": "Supprimer un sujet de forum",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumThread",
                        "in": "path",
                        "required": true,
                        "description": "The forum thread ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Sujet de forum supprim\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/forum-threads\/{forumThread}\/posts": {
            "get": {
                "operationId": "v1.forum-threads.posts.index",
                "summary": "Lister les posts d\u2019un sujet",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumThread",
                        "in": "path",
                        "required": true,
                        "description": "The forum thread ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : author, author.profile, comments, comments.author, comments.replies.",
                        "schema": {},
                        "example": "author,comments"
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : created_at, -created_at.",
                        "schema": {},
                        "example": "created_at"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ForumPostResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ForumPostResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.forum-threads.posts.store",
                "summary": "Cr\u00e9er un post dans un sujet",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumThread",
                        "in": "path",
                        "required": true,
                        "description": "The forum thread ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreForumPostRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ForumPostResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ForumPostResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Post publi\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/forum-posts\/{forumPost}": {
            "patch": {
                "operationId": "v1.forum-posts.update",
                "summary": "Modifier un post de forum",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumPost",
                        "in": "path",
                        "required": true,
                        "description": "The forum post ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateForumPostRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ForumPostResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ForumPostResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Post mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.forum-posts.destroy",
                "summary": "Supprimer un post de forum",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumPost",
                        "in": "path",
                        "required": true,
                        "description": "The forum post ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Post supprim\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/forum-posts\/{forumPost}\/reactions": {
            "post": {
                "operationId": "v1.forum-posts.reactions.toggle",
                "summary": "Basculer une r\u00e9action sur un post",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumPost",
                        "in": "path",
                        "required": true,
                        "description": "The forum post ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/ToggleForumReactionRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "reacted": {
                                                    "type": "boolean"
                                                },
                                                "counts": {
                                                    "type": "object",
                                                    "additionalProperties": {
                                                        "type": "integer"
                                                    }
                                                }
                                            },
                                            "required": [
                                                "reacted",
                                                "counts"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00e9action mise \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/forum-posts\/{forumPost}\/comments": {
            "get": {
                "operationId": "v1.forum-posts.comments.index",
                "summary": "Lister les commentaires d\u2019un post",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumPost",
                        "in": "path",
                        "required": true,
                        "description": "The forum post ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "description": "Relations autoris\u00e9es : author, author.profile, replies, replies.author.",
                        "schema": {},
                        "example": "author,replies"
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : created_at, -created_at.",
                        "schema": {},
                        "example": "created_at"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `ForumCommentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ForumCommentResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.forum-posts.comments.store",
                "summary": "Cr\u00e9er un commentaire de forum",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumPost",
                        "in": "path",
                        "required": true,
                        "description": "The forum post ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreForumCommentRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`ForumCommentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ForumCommentResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Commentaire publi\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/forum-comments\/{forumComment}": {
            "patch": {
                "operationId": "v1.forum-comments.update",
                "summary": "Modifier un commentaire de forum",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumComment",
                        "in": "path",
                        "required": true,
                        "description": "The forum comment ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/UpdateForumCommentRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ForumCommentResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ForumCommentResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Commentaire mis \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            },
            "delete": {
                "operationId": "v1.forum-comments.destroy",
                "summary": "Supprimer un commentaire de forum",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumComment",
                        "in": "path",
                        "required": true,
                        "description": "The forum comment ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "minItems": 0,
                                            "maxItems": 0,
                                            "additionalItems": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Commentaire supprim\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/forum-comments\/{forumComment}\/reactions": {
            "post": {
                "operationId": "v1.forum-comments.reactions.toggle",
                "summary": "Basculer une r\u00e9action sur un commentaire",
                "tags": [
                    "Communication - Forum"
                ],
                "parameters": [
                    {
                        "name": "forumComment",
                        "in": "path",
                        "required": true,
                        "description": "The forum comment ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/ToggleForumReactionRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "reacted": {
                                                    "type": "boolean"
                                                },
                                                "counts": {
                                                    "type": "object",
                                                    "additionalProperties": {
                                                        "type": "integer"
                                                    }
                                                }
                                            },
                                            "required": [
                                                "reacted",
                                                "counts"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "R\u00e9action mise \u00e0 jour avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/conversations\/{conversation}\/members": {
            "post": {
                "operationId": "v1.conversations.members.store",
                "summary": "Ajouter des membres",
                "tags": [
                    "Communication - Messagerie"
                ],
                "parameters": [
                    {
                        "name": "conversation",
                        "in": "path",
                        "required": true,
                        "description": "The conversation ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreConversationMembersRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`ConversationResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ConversationResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Membres ajout\u00e9s avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/conversations\/{conversation}\/members\/{user}": {
            "delete": {
                "operationId": "v1.conversations.members.destroy",
                "summary": "Retirer un membre",
                "tags": [
                    "Communication - Messagerie"
                ],
                "parameters": [
                    {
                        "name": "conversation",
                        "in": "path",
                        "required": true,
                        "description": "The conversation ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "description": "The user ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ConversationResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ConversationResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Membre retir\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/conversations\/{conversation}\/messages": {
            "get": {
                "operationId": "v1.conversations.messages.index",
                "summary": "Lister les messages",
                "tags": [
                    "Communication - Messagerie"
                ],
                "parameters": [
                    {
                        "name": "conversation",
                        "in": "path",
                        "required": true,
                        "description": "The conversation ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : created_at, -created_at.",
                        "schema": {},
                        "example": "created_at"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `MessageResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/MessageResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            },
            "post": {
                "operationId": "v1.conversations.messages.store",
                "summary": "Envoyer un message",
                "tags": [
                    "Communication - Messagerie"
                ],
                "parameters": [
                    {
                        "name": "conversation",
                        "in": "path",
                        "required": true,
                        "description": "The conversation ID",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "multipart\/form-data": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/StoreMessageRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`MessageResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/MessageResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Message envoy\u00e9 avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    }
                }
            }
        },
        "\/conversations\/{conversation}\/media": {
            "get": {
                "operationId": "v1.conversations.media.index",
                "summary": "Lister les m\u00e9dias d\u2019une conversation",
                "tags": [
                    "Communication - Messagerie"
                ],
                "parameters": [
                    {
                        "name": "conversation",
                        "in": "path",
                        "required": true,
                        "description": "The conversation ID",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Tris autoris\u00e9s : created_at, -created_at.",
                        "schema": {},
                        "example": "-created_at"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `MediaResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/MediaResource"
                                            }
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "description": "Generated paginator links.",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "url": {
                                                                "type": [
                                                                    "string",
                                                                    "null"
                                                                ]
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            },
                                                            "active": {
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "required": [
                                                            "url",
                                                            "label",
                                                            "active"
                                                        ]
                                                    }
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "links",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "links",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "404": {
                        "$ref": "#\/components\/responses\/ModelNotFoundException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/conversations\/{conversation}\/restore": {
            "post": {
                "operationId": "v1.conversations.restore",
                "summary": "Restaurer une conversation archiv\u00e9e",
                "tags": [
                    "Communication - Messagerie"
                ],
                "parameters": [
                    {
                        "name": "conversation",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ConversationResource`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ConversationResource"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Conversation restaur\u00e9e avec succ\u00e8s."
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "$ref": "#\/components\/responses\/AuthorizationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "AcceptUserInvitationRequest": {
                "type": "object",
                "properties": {
                    "token": {
                        "type": "string"
                    },
                    "password": {
                        "type": "string"
                    },
                    "password_confirmation": {
                        "type": "string"
                    }
                },
                "required": [
                    "token",
                    "password",
                    "password_confirmation"
                ],
                "title": "AcceptUserInvitationRequest"
            },
            "ActivityResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "log_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "module": {
                        "type": "string"
                    },
                    "event": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "action": {
                        "type": "string"
                    },
                    "summary": {
                        "type": "string"
                    },
                    "historique": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "target": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "anyOf": [
                                    {
                                        "type": "string"
                                    },
                                    {
                                        "type": "null"
                                    }
                                ]
                            },
                            "id": {
                                "type": [
                                    "integer",
                                    "null"
                                ]
                            },
                            "label": {
                                "anyOf": [
                                    {
                                        "type": "string"
                                    },
                                    {
                                        "type": "null"
                                    }
                                ]
                            },
                            "context": {
                                "anyOf": [
                                    {
                                        "type": "string"
                                    },
                                    {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "minItems": 0,
                                        "maxItems": 0,
                                        "additionalItems": false
                                    }
                                ]
                            },
                            "profile_category": {}
                        },
                        "required": [
                            "type",
                            "id",
                            "label",
                            "context",
                            "profile_category"
                        ]
                    },
                    "utilisateur": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "email": {
                                "type": "string"
                            },
                            "first_name": {
                                "type": "string"
                            },
                            "last_name": {
                                "type": "string"
                            },
                            "role": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "email",
                            "first_name",
                            "last_name",
                            "role"
                        ]
                    },
                    "connection": {
                        "type": "object",
                        "properties": {
                            "ip_address": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "user_agent": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "browser": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "client_os": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "device": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "location": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "attempted_email": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "failure_reason": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "ip_address",
                            "user_agent",
                            "browser",
                            "client_os",
                            "device",
                            "location",
                            "attempted_email",
                            "failure_reason"
                        ]
                    },
                    "attribute_changes": {
                        "type": [
                            "object",
                            "null"
                        ]
                    },
                    "details": {
                        "type": [
                            "object",
                            "null"
                        ]
                    },
                    "snapshot": {
                        "anyOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    }
                },
                "required": [
                    "id",
                    "created_at",
                    "log_name",
                    "module",
                    "event",
                    "action",
                    "summary",
                    "historique",
                    "status",
                    "target",
                    "utilisateur",
                    "connection",
                    "attribute_changes",
                    "details",
                    "snapshot"
                ],
                "title": "ActivityResource"
            },
            "AdminDashboardCountsResource": {
                "type": "object",
                "properties": {
                    "paths_total": {
                        "type": "integer"
                    },
                    "cohorts_total": {
                        "type": "integer"
                    },
                    "learners_total": {
                        "type": "integer"
                    },
                    "trainers_total": {
                        "type": "integer"
                    }
                },
                "required": [
                    "paths_total",
                    "cohorts_total",
                    "learners_total",
                    "trainers_total"
                ],
                "title": "AdminDashboardCountsResource"
            },
            "AdminDashboardPathCohortCountResource": {
                "type": "object",
                "properties": {
                    "path_id": {
                        "type": "integer"
                    },
                    "path_title": {
                        "type": "string"
                    },
                    "cohorts_count": {
                        "type": "integer"
                    }
                },
                "required": [
                    "path_id",
                    "path_title",
                    "cohorts_count"
                ],
                "title": "AdminDashboardPathCohortCountResource"
            },
            "AdminDashboardStatusMetricResource": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string"
                    },
                    "label": {
                        "type": "string"
                    },
                    "count": {
                        "type": "integer"
                    }
                },
                "required": [
                    "status",
                    "label",
                    "count"
                ],
                "title": "AdminDashboardStatusMetricResource"
            },
            "AdminDashboardSummaryResource": {
                "type": "object",
                "properties": {
                    "generated_at": {
                        "type": "string"
                    },
                    "counts": {
                        "$ref": "#\/components\/schemas\/AdminDashboardCountsResource"
                    },
                    "cohorts_by_path": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/AdminDashboardPathCohortCountResource"
                        }
                    },
                    "tracking": {
                        "$ref": "#\/components\/schemas\/AdminDashboardTrackingResource"
                    }
                },
                "required": [
                    "generated_at",
                    "counts",
                    "cohorts_by_path",
                    "tracking"
                ],
                "title": "AdminDashboardSummaryResource"
            },
            "AdminDashboardTrackingResource": {
                "type": "object",
                "properties": {
                    "cohorts_by_status": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/AdminDashboardStatusMetricResource"
                        }
                    },
                    "paths_by_status": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/AdminDashboardStatusMetricResource"
                        }
                    },
                    "active_learner_memberships": {
                        "type": "integer"
                    },
                    "pending_exercise_corrections": {
                        "type": "integer"
                    },
                    "pending_deliverable_submissions": {
                        "type": "integer"
                    },
                    "users_pending_activation": {
                        "type": "integer"
                    }
                },
                "required": [
                    "cohorts_by_status",
                    "paths_by_status",
                    "active_learner_memberships",
                    "pending_exercise_corrections",
                    "pending_deliverable_submissions",
                    "users_pending_activation"
                ],
                "title": "AdminDashboardTrackingResource"
            },
            "AuthenticatedUserResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "email": {
                        "type": "string"
                    },
                    "user_status": {
                        "type": "string"
                    },
                    "profile": {
                        "$ref": "#\/components\/schemas\/ManagedUserProfileResource"
                    },
                    "roles": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "cohort": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "name": {
                                "type": "string"
                            },
                            "code": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "id",
                            "name",
                            "code"
                        ]
                    },
                    "path": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "title": {
                                "type": "string"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "title",
                            "name"
                        ]
                    },
                    "modules": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "id": {
                                    "type": "integer"
                                },
                                "code": {
                                    "type": "string"
                                },
                                "label": {
                                    "type": "string"
                                },
                                "position": {
                                    "type": "integer"
                                }
                            },
                            "required": [
                                "id",
                                "code",
                                "label",
                                "position"
                            ]
                        }
                    },
                    "ui_shell": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "navigation": {
                        "type": "object",
                        "properties": {
                            "modules": {}
                        },
                        "required": [
                            "modules"
                        ]
                    },
                    "permissions": {}
                },
                "required": [
                    "id",
                    "email",
                    "user_status",
                    "created_at",
                    "ui_shell",
                    "navigation",
                    "permissions"
                ],
                "title": "AuthenticatedUserResource"
            },
            "CityResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "country_id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "code": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "country_id",
                    "name",
                    "code"
                ],
                "title": "CityResource"
            },
            "CohortFabriqueCode": {
                "type": "string",
                "enum": [
                    "EMNPAR",
                    "EMNCOT"
                ],
                "title": "CohortFabriqueCode"
            },
            "CohortMembershipStatus": {
                "type": "string",
                "enum": [
                    "active",
                    "removed",
                    "completed"
                ],
                "title": "CohortMembershipStatus"
            },
            "CohortPathResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "code": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "code",
                    "title",
                    "slug",
                    "description",
                    "status"
                ],
                "title": "CohortPathResource"
            },
            "CohortResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "code": {
                        "type": "string"
                    },
                    "fabrique_code": {
                        "type": "string"
                    },
                    "room": {
                        "type": "string"
                    },
                    "sequence": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "start_date": {
                        "type": "string"
                    },
                    "end_date": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "path_id": {
                        "type": "integer"
                    },
                    "referent_id": {
                        "type": "integer"
                    },
                    "learners_count": {
                        "type": "integer"
                    },
                    "launched_at": {
                        "type": "string"
                    },
                    "closed_at": {
                        "type": "string"
                    },
                    "cancelled_at": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "path": {
                        "$ref": "#\/components\/schemas\/CohortPathResource"
                    },
                    "modules": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/CourseResource"
                        }
                    },
                    "referent": {
                        "$ref": "#\/components\/schemas\/CreatedByUserResource"
                    },
                    "created_by": {
                        "$ref": "#\/components\/schemas\/CreatedByUserResource"
                    },
                    "launched_by": {
                        "$ref": "#\/components\/schemas\/CreatedByUserResource"
                    },
                    "closed_by": {
                        "$ref": "#\/components\/schemas\/CreatedByUserResource"
                    },
                    "cancelled_by": {
                        "$ref": "#\/components\/schemas\/CreatedByUserResource"
                    }
                },
                "required": [
                    "id",
                    "code",
                    "fabrique_code",
                    "room",
                    "sequence",
                    "name",
                    "description",
                    "start_date",
                    "end_date",
                    "status",
                    "path_id",
                    "referent_id",
                    "learners_count",
                    "launched_at",
                    "closed_at",
                    "cancelled_at",
                    "created_at",
                    "updated_at"
                ],
                "title": "CohortResource"
            },
            "CohortStatus": {
                "type": "string",
                "enum": [
                    "draft",
                    "launched",
                    "closed",
                    "cancelled"
                ],
                "title": "CohortStatus"
            },
            "CompetencyModuleResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "position": {
                        "type": "integer"
                    }
                },
                "required": [
                    "id",
                    "title",
                    "slug",
                    "description",
                    "position"
                ],
                "title": "CompetencyModuleResource"
            },
            "CompetencyResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "label": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "position": {},
                    "modules": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/CompetencyModuleResource"
                        }
                    }
                },
                "required": [
                    "id",
                    "label",
                    "description",
                    "position"
                ],
                "title": "CompetencyResource"
            },
            "ConversationResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "type": {
                        "type": "string"
                    },
                    "name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_by_id": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "members": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/UserResource"
                        }
                    }
                },
                "required": [
                    "id",
                    "type",
                    "name",
                    "created_by_id",
                    "created_at",
                    "updated_at"
                ],
                "title": "ConversationResource"
            },
            "CorrectExerciseAnswerRequest": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string",
                        "enum": [
                            "correct",
                            "incorrect",
                            "partially_correct",
                            "corrected"
                        ]
                    },
                    "points_awarded": {
                        "type": "number",
                        "minimum": 0
                    },
                    "correction_comment": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "points_awarded"
                ],
                "title": "CorrectExerciseAnswerRequest"
            },
            "CorrectProjectDeliverableSubmissionRequest": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "string",
                        "enum": [
                            "corrected",
                            "needs_revision"
                        ]
                    },
                    "score": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "minimum": 0
                    },
                    "trainer_comment": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "status"
                ],
                "title": "CorrectProjectDeliverableSubmissionRequest"
            },
            "CountryResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "iso2": {
                        "type": "string"
                    },
                    "iso3": {
                        "type": "string"
                    },
                    "phone_code": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "iso2",
                    "iso3",
                    "phone_code"
                ],
                "title": "CountryResource"
            },
            "CourseModuleResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "position": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "lessons_count": {
                        "type": "integer"
                    },
                    "abilities": {
                        "type": "object",
                        "properties": {
                            "can_manage_structure": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "can_manage_structure"
                        ]
                    }
                },
                "required": [
                    "id",
                    "module_id",
                    "title",
                    "slug",
                    "description",
                    "status",
                    "position",
                    "lessons_count",
                    "abilities"
                ],
                "title": "CourseModuleResource"
            },
            "CoursePathResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "title",
                    "slug",
                    "status"
                ],
                "title": "CoursePathResource"
            },
            "CourseResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "learning_objectives": {
                        "type": "array",
                        "items": {}
                    },
                    "study_hours": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "cover_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cover_url": {
                        "type": "string"
                    },
                    "cover_urls": {
                        "anyOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "thumb": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "card": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "large": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "original": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    }
                                },
                                "required": [
                                    "thumb",
                                    "card",
                                    "large",
                                    "original"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "thumb": {
                                        "type": "null"
                                    },
                                    "card": {
                                        "type": "null"
                                    },
                                    "large": {
                                        "type": "null"
                                    },
                                    "original": {
                                        "type": "null"
                                    }
                                },
                                "required": [
                                    "thumb",
                                    "card",
                                    "large",
                                    "original"
                                ]
                            }
                        ]
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "archived",
                            "active"
                        ]
                    },
                    "sub_modules_count": {
                        "type": "integer"
                    },
                    "abilities": {
                        "type": "object",
                        "properties": {
                            "can_manage_structure": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "can_manage_structure"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "paths": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/CoursePathResource"
                        }
                    },
                    "sub_modules": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/CourseModuleResource"
                        }
                    },
                    "competencies": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/CompetencyResource"
                        }
                    },
                    "cohort_trainer_assignments": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/CourseTrainerAssignmentResource"
                        }
                    },
                    "created_by": {
                        "$ref": "#\/components\/schemas\/CreatedByUserResource"
                    }
                },
                "required": [
                    "id",
                    "title",
                    "slug",
                    "description",
                    "learning_objectives",
                    "study_hours",
                    "cover_path",
                    "cover_url",
                    "cover_urls",
                    "status",
                    "sub_modules_count",
                    "abilities",
                    "created_at",
                    "updated_at"
                ],
                "title": "CourseResource"
            },
            "CourseTrainerAssignmentResource": {
                "type": "object",
                "properties": {
                    "trainer_id": {
                        "type": "integer"
                    },
                    "email": {
                        "type": "string"
                    },
                    "profile": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "first_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "middle_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "last_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "avatar_path": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "avatar_url": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "first_name",
                            "middle_name",
                            "last_name",
                            "avatar_path",
                            "avatar_url"
                        ]
                    },
                    "assigned_at": {
                        "type": "string"
                    },
                    "assigned_by_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "assigned_by": {
                        "anyOf": [
                            {
                                "$ref": "#\/components\/schemas\/CreatedByUserResource"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    }
                },
                "required": [
                    "trainer_id",
                    "email",
                    "profile",
                    "assigned_at",
                    "assigned_by_id"
                ],
                "title": "CourseTrainerAssignmentResource"
            },
            "CreatedByUserResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "email": {
                        "type": "string"
                    },
                    "profile": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "first_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "middle_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "last_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "avatar_path": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "avatar_url": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "first_name",
                            "middle_name",
                            "last_name",
                            "avatar_path",
                            "avatar_url"
                        ]
                    }
                },
                "required": [
                    "id",
                    "email"
                ],
                "title": "CreatedByUserResource"
            },
            "EventResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "type": {
                        "type": "string"
                    },
                    "type_label": {
                        "type": "string",
                        "enum": [
                            "Session de cours",
                            "\u00c9valuation",
                            "Livrable projet"
                        ]
                    },
                    "cohort_id": {
                        "type": "integer"
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "eventable_type": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "eventable_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string"
                    },
                    "comment": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "starts_at": {
                        "type": "string"
                    },
                    "ends_at": {
                        "type": "string"
                    },
                    "local_starts_at": {
                        "type": "string"
                    },
                    "local_ends_at": {
                        "type": "string"
                    },
                    "timezone": {
                        "type": "string"
                    },
                    "is_all_day": {
                        "type": "boolean"
                    },
                    "reminder_minutes_before": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "color": {
                        "type": "string"
                    },
                    "details": {
                        "type": "array",
                        "items": {}
                    },
                    "recurrence_group_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_by_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "cohort": {
                        "$ref": "#\/components\/schemas\/CohortResource"
                    },
                    "module": {
                        "$ref": "#\/components\/schemas\/CourseResource"
                    },
                    "created_by": {
                        "$ref": "#\/components\/schemas\/CreatedByUserResource"
                    }
                },
                "required": [
                    "id",
                    "type",
                    "type_label",
                    "cohort_id",
                    "module_id",
                    "eventable_type",
                    "eventable_id",
                    "title",
                    "comment",
                    "starts_at",
                    "ends_at",
                    "local_starts_at",
                    "local_ends_at",
                    "timezone",
                    "is_all_day",
                    "reminder_minutes_before",
                    "color",
                    "details",
                    "recurrence_group_id",
                    "created_by_id",
                    "created_at",
                    "updated_at"
                ],
                "title": "EventResource"
            },
            "Exercise": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "type": {
                        "$ref": "#\/components\/schemas\/ExerciseType"
                    },
                    "course_id": {
                        "type": "integer"
                    },
                    "cohort_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "exerciseable_type": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "exerciseable_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "status": {
                        "$ref": "#\/components\/schemas\/PublicationStatus"
                    },
                    "opens_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "closes_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "time_limit_seconds": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "max_score": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "max_attempts": {
                        "type": "integer"
                    },
                    "cover_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_by_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    }
                },
                "required": [
                    "id",
                    "type",
                    "course_id",
                    "cohort_id",
                    "exerciseable_type",
                    "exerciseable_id",
                    "title",
                    "description",
                    "status",
                    "opens_at",
                    "closes_at",
                    "time_limit_seconds",
                    "max_score",
                    "max_attempts",
                    "cover_path",
                    "created_by_id",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "Exercise"
            },
            "ExerciseAnswerResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "exercise_attempt_id": {
                        "type": "integer"
                    },
                    "exercise_question_id": {
                        "type": "integer"
                    },
                    "selected_option_ids": {
                        "type": [
                            "array",
                            "null"
                        ],
                        "items": {}
                    },
                    "text_answer": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "points_awarded": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "question_started_at": {
                        "type": "string"
                    },
                    "answered_at": {
                        "type": "string"
                    },
                    "corrected_at": {
                        "type": "string"
                    },
                    "correction_comment": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "question": {
                        "$ref": "#\/components\/schemas\/ExerciseQuestionResource"
                    },
                    "corrector": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    }
                },
                "required": [
                    "id",
                    "exercise_attempt_id",
                    "exercise_question_id",
                    "selected_option_ids",
                    "text_answer",
                    "question_started_at",
                    "answered_at"
                ],
                "title": "ExerciseAnswerResource"
            },
            "ExerciseAttemptResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "exercise_id": {
                        "type": "integer"
                    },
                    "learner_id": {
                        "type": "integer"
                    },
                    "attempt_number": {
                        "type": "integer"
                    },
                    "status": {
                        "type": "string"
                    },
                    "started_at": {
                        "type": "string"
                    },
                    "expires_at": {
                        "type": "string"
                    },
                    "submitted_at": {
                        "type": "string"
                    },
                    "raw_score": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "score": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "answers_count": {
                        "type": "integer"
                    },
                    "answers_summary": {
                        "type": "object",
                        "properties": {
                            "total": {
                                "type": "integer"
                            },
                            "pending_correction": {
                                "type": "integer"
                            }
                        },
                        "required": [
                            "total",
                            "pending_correction"
                        ]
                    },
                    "exercise": {
                        "$ref": "#\/components\/schemas\/ExerciseResource"
                    },
                    "learner": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    },
                    "answers": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ExerciseAnswerResource"
                        }
                    }
                },
                "required": [
                    "id",
                    "exercise_id",
                    "learner_id",
                    "attempt_number",
                    "status",
                    "started_at",
                    "expires_at",
                    "submitted_at"
                ],
                "title": "ExerciseAttemptResource"
            },
            "ExerciseQuestionOptionResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "exercise_question_id": {
                        "type": "integer"
                    },
                    "label": {
                        "type": "string"
                    },
                    "position": {
                        "type": "integer"
                    },
                    "is_correct": {
                        "type": "boolean"
                    },
                    "image_url": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "exercise_question_id",
                    "label",
                    "position",
                    "image_url",
                    "created_at",
                    "updated_at"
                ],
                "title": "ExerciseQuestionOptionResource"
            },
            "ExerciseQuestionResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "exercise_id": {
                        "type": "integer"
                    },
                    "type": {
                        "type": "string"
                    },
                    "grading_mode": {
                        "type": "string"
                    },
                    "prompt": {
                        "type": "string"
                    },
                    "points": {
                        "type": "string"
                    },
                    "time_limit_seconds": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "position": {
                        "type": "integer"
                    },
                    "image_url": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "options": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ExerciseQuestionOptionResource"
                        }
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "exercise_id",
                    "type",
                    "grading_mode",
                    "prompt",
                    "points",
                    "time_limit_seconds",
                    "position",
                    "image_url",
                    "created_at",
                    "updated_at"
                ],
                "title": "ExerciseQuestionResource"
            },
            "ExerciseResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "type": {
                        "type": "string"
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "cohort_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "exerciseable_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "module",
                            "sub_module",
                            "lesson",
                            null
                        ]
                    },
                    "exerciseable_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "opens_at": {
                        "type": "string"
                    },
                    "closes_at": {
                        "type": "string"
                    },
                    "time_limit_seconds": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "max_score": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "max_attempts": {
                        "type": "integer"
                    },
                    "cover_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cover_url": {
                        "type": "string"
                    },
                    "cover_urls": {
                        "anyOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "thumb": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "card": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "large": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "original": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    }
                                },
                                "required": [
                                    "thumb",
                                    "card",
                                    "large",
                                    "original"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "thumb": {
                                        "type": "null"
                                    },
                                    "card": {
                                        "type": "null"
                                    },
                                    "large": {
                                        "type": "null"
                                    },
                                    "original": {
                                        "type": "null"
                                    }
                                },
                                "required": [
                                    "thumb",
                                    "card",
                                    "large",
                                    "original"
                                ]
                            }
                        ]
                    },
                    "questions_count": {
                        "type": "integer"
                    },
                    "attempts_count": {
                        "type": "integer"
                    },
                    "attempts_summary": {
                        "type": "object",
                        "properties": {
                            "total": {
                                "type": "integer"
                            },
                            "in_progress": {
                                "type": "integer"
                            },
                            "submitted": {
                                "type": "integer"
                            },
                            "pending_correction": {
                                "type": "integer"
                            },
                            "corrected": {
                                "type": "integer"
                            },
                            "expired": {
                                "type": "integer"
                            }
                        },
                        "required": [
                            "total",
                            "in_progress",
                            "submitted",
                            "pending_correction",
                            "corrected",
                            "expired"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "cohort": {
                        "$ref": "#\/components\/schemas\/CohortResource"
                    },
                    "module": {
                        "$ref": "#\/components\/schemas\/CourseResource"
                    },
                    "exerciseable": {
                        "$ref": "#\/components\/schemas\/Exercise"
                    },
                    "creator": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    },
                    "questions": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ExerciseQuestionResource"
                        }
                    },
                    "attempts": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ExerciseAttemptResource"
                        }
                    }
                },
                "required": [
                    "id",
                    "type",
                    "module_id",
                    "cohort_id",
                    "exerciseable_type",
                    "exerciseable_id",
                    "title",
                    "description",
                    "status",
                    "opens_at",
                    "closes_at",
                    "time_limit_seconds",
                    "max_score",
                    "max_attempts",
                    "cover_path",
                    "cover_url",
                    "cover_urls",
                    "created_at",
                    "updated_at"
                ],
                "title": "ExerciseResource"
            },
            "ExerciseType": {
                "type": "string",
                "enum": [
                    "quiz",
                    "evaluation"
                ],
                "title": "ExerciseType"
            },
            "FaqCategoryResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "position": {
                        "type": "integer"
                    },
                    "entries_count": {
                        "type": "integer"
                    },
                    "published_entries_count": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "slug",
                    "description",
                    "position",
                    "created_at",
                    "updated_at"
                ],
                "title": "FaqCategoryResource"
            },
            "FaqEntryResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "faq_category_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "question": {
                        "type": "string"
                    },
                    "answer": {
                        "type": "string"
                    },
                    "position": {
                        "type": "integer"
                    },
                    "is_published": {
                        "type": "boolean"
                    },
                    "published_at": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "category": {
                        "$ref": "#\/components\/schemas\/FaqCategoryResource"
                    },
                    "creator": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    },
                    "publisher": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    }
                },
                "required": [
                    "id",
                    "faq_category_id",
                    "question",
                    "answer",
                    "position",
                    "is_published",
                    "published_at",
                    "created_at",
                    "updated_at"
                ],
                "title": "FaqEntryResource"
            },
            "ForgotPasswordRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "format": "email"
                    }
                },
                "required": [
                    "email"
                ],
                "title": "ForgotPasswordRequest"
            },
            "ForumCommentResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "forum_post_id": {
                        "type": "integer"
                    },
                    "parent_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "user_id": {
                        "type": "integer"
                    },
                    "body": {
                        "type": "string"
                    },
                    "reaction_counts": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "integer"
                        }
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "author": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    },
                    "replies": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ForumCommentResource"
                        }
                    }
                },
                "required": [
                    "id",
                    "forum_post_id",
                    "parent_id",
                    "user_id",
                    "body",
                    "reaction_counts",
                    "created_at",
                    "updated_at"
                ],
                "title": "ForumCommentResource"
            },
            "ForumPostResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "forum_thread_id": {
                        "type": "integer"
                    },
                    "user_id": {
                        "type": "integer"
                    },
                    "body": {
                        "type": "string"
                    },
                    "reaction_counts": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "integer"
                        }
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "author": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    },
                    "comments": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ForumCommentResource"
                        }
                    }
                },
                "required": [
                    "id",
                    "forum_thread_id",
                    "user_id",
                    "body",
                    "reaction_counts",
                    "created_at",
                    "updated_at"
                ],
                "title": "ForumPostResource"
            },
            "ForumTagResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "slug"
                ],
                "title": "ForumTagResource"
            },
            "ForumThreadResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "cohort_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "module_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "forumable_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "module",
                            "sub_module",
                            "lesson",
                            null
                        ]
                    },
                    "forumable_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "share_url": {
                        "type": "string"
                    },
                    "body": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "visibility": {
                        "type": "string"
                    },
                    "created_by_id": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "cohort": {
                        "$ref": "#\/components\/schemas\/CohortResource"
                    },
                    "module": {
                        "$ref": "#\/components\/schemas\/CourseResource"
                    },
                    "created_by": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ForumTagResource"
                        }
                    },
                    "posts": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ForumPostResource"
                        }
                    },
                    "posts_count": {
                        "type": "integer"
                    }
                },
                "required": [
                    "id",
                    "cohort_id",
                    "module_id",
                    "forumable_type",
                    "forumable_id",
                    "title",
                    "slug",
                    "share_url",
                    "body",
                    "visibility",
                    "created_by_id",
                    "created_at",
                    "updated_at"
                ],
                "title": "ForumThreadResource"
            },
            "Gender": {
                "type": "string",
                "enum": [
                    "homme",
                    "femme"
                ],
                "title": "Gender"
            },
            "ImportLearnersRequest": {
                "type": "object",
                "properties": {
                    "file": {
                        "type": "string",
                        "format": "binary",
                        "contentMediaType": "application\/octet-stream"
                    }
                },
                "required": [
                    "file"
                ],
                "title": "ImportLearnersRequest"
            },
            "ImportScopedUsersRequest": {
                "type": "object",
                "properties": {
                    "file": {
                        "type": "string",
                        "format": "binary",
                        "contentMediaType": "application\/octet-stream"
                    }
                },
                "required": [
                    "file"
                ],
                "title": "ImportScopedUsersRequest"
            },
            "LearnerDashboardCalendarEventResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    },
                    "starts_at": {
                        "type": "string"
                    },
                    "ends_at": {
                        "type": "string"
                    },
                    "participants_count": {
                        "type": "integer"
                    }
                },
                "required": [
                    "id",
                    "title",
                    "type",
                    "starts_at",
                    "ends_at",
                    "participants_count"
                ],
                "title": "LearnerDashboardCalendarEventResource"
            },
            "LearnerDashboardCalendarResource": {
                "type": "object",
                "properties": {
                    "date": {
                        "type": "string"
                    },
                    "start_hour": {
                        "type": "string"
                    },
                    "end_hour": {
                        "type": "string"
                    },
                    "events": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/LearnerDashboardCalendarEventResource"
                        }
                    }
                },
                "required": [
                    "date",
                    "start_hour",
                    "end_hour",
                    "events"
                ],
                "title": "LearnerDashboardCalendarResource"
            },
            "LearnerDashboardCurrentModuleResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "code": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string"
                    },
                    "cover_image_url": {
                        "type": "string"
                    },
                    "progress_percentage": {
                        "type": "integer"
                    }
                },
                "required": [
                    "id",
                    "code",
                    "title",
                    "cover_image_url",
                    "progress_percentage"
                ],
                "title": "LearnerDashboardCurrentModuleResource"
            },
            "LearnerDashboardDeadlineResource": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string"
                    },
                    "due_at": {
                        "type": "string"
                    },
                    "remaining_days": {
                        "type": "integer"
                    }
                },
                "required": [
                    "title",
                    "due_at",
                    "remaining_days"
                ],
                "title": "LearnerDashboardDeadlineResource"
            },
            "LearnerDashboardPendingAssignmentResource": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string"
                    },
                    "id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "course_title": {
                        "type": "string"
                    },
                    "due_at": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    }
                },
                "required": [
                    "type",
                    "id",
                    "title",
                    "course_title",
                    "due_at",
                    "status"
                ],
                "title": "LearnerDashboardPendingAssignmentResource"
            },
            "LearnerDashboardSummaryCountsResource": {
                "type": "object",
                "properties": {
                    "courses_in_progress": {
                        "type": "integer"
                    },
                    "pending_assignments_count": {
                        "type": "integer"
                    },
                    "completion_rate": {
                        "type": "integer"
                    }
                },
                "required": [
                    "courses_in_progress",
                    "pending_assignments_count",
                    "completion_rate"
                ],
                "title": "LearnerDashboardSummaryCountsResource"
            },
            "LearnerDashboardSummaryResource": {
                "type": "object",
                "properties": {
                    "summary": {
                        "$ref": "#\/components\/schemas\/LearnerDashboardSummaryCountsResource"
                    },
                    "current_modules": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/LearnerDashboardCurrentModuleResource"
                        }
                    },
                    "pending_assignments": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/LearnerDashboardPendingAssignmentResource"
                        }
                    },
                    "deadlines": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/LearnerDashboardDeadlineResource"
                        }
                    },
                    "calendar": {
                        "$ref": "#\/components\/schemas\/LearnerDashboardCalendarResource"
                    }
                },
                "required": [
                    "summary",
                    "current_modules",
                    "pending_assignments",
                    "deadlines",
                    "calendar"
                ],
                "title": "LearnerDashboardSummaryResource"
            },
            "LearnerMembershipResource": {
                "type": "object",
                "properties": {
                    "user_id": {
                        "type": "integer"
                    },
                    "email": {
                        "type": "string"
                    },
                    "user_status": {
                        "type": "string"
                    },
                    "profile": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "first_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "middle_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "last_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "avatar_path": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "avatar_url": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "first_name",
                            "middle_name",
                            "last_name",
                            "avatar_path",
                            "avatar_url"
                        ]
                    },
                    "membership_status": {
                        "type": "string"
                    },
                    "joined_at": {
                        "type": "string"
                    },
                    "left_at": {
                        "type": "string"
                    },
                    "enrolled_by_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "enrolled_by": {
                        "anyOf": [
                            {
                                "$ref": "#\/components\/schemas\/CreatedByUserResource"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    }
                },
                "required": [
                    "user_id",
                    "email",
                    "user_status",
                    "profile",
                    "membership_status",
                    "joined_at",
                    "left_at",
                    "enrolled_by_id"
                ],
                "title": "LearnerMembershipResource"
            },
            "LearnerProfileResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "personal_identifier": {
                        "type": "string"
                    },
                    "first_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "middle_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "last_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "gender": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "birthdate": {
                        "type": "string"
                    },
                    "nationality": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "birth_place": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "birth_country": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "phone": {
                        "type": "string"
                    },
                    "avatar_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_url": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_square_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_square_url": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "profile_category": {
                        "anyOf": [
                            {
                                "$ref": "#\/components\/schemas\/ProfileCategoryResource"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    }
                },
                "required": [
                    "id",
                    "personal_identifier",
                    "first_name",
                    "middle_name",
                    "last_name",
                    "gender",
                    "birthdate",
                    "nationality",
                    "birth_place",
                    "birth_country",
                    "phone",
                    "avatar_path",
                    "avatar_url",
                    "avatar_square_path",
                    "avatar_square_url"
                ],
                "title": "LearnerProfileResource"
            },
            "LearnerResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "email": {
                        "type": "string"
                    },
                    "user_status": {
                        "type": "string"
                    },
                    "profile": {
                        "$ref": "#\/components\/schemas\/LearnerProfileResource"
                    },
                    "current_cohort": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "code": {
                                "type": "string"
                            },
                            "name": {
                                "type": "string"
                            },
                            "status": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "code",
                            "name",
                            "status"
                        ]
                    },
                    "current_path": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "name"
                        ]
                    },
                    "roles": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "id",
                    "email",
                    "user_status",
                    "current_cohort",
                    "current_path"
                ],
                "title": "LearnerResource"
            },
            "LearningResourceResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "type": {
                        "type": "string"
                    },
                    "type_label": {
                        "type": "string",
                        "enum": [
                            "Texte",
                            "Image",
                            "Vid\u00e9o",
                            "PDF",
                            "Document"
                        ]
                    },
                    "title": {
                        "type": "string"
                    },
                    "body": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "resourceable_type": {
                        "type": "string"
                    },
                    "resourceable_id": {
                        "type": "integer"
                    },
                    "created_by_id": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "file": {
                        "anyOf": [
                            {
                                "$ref": "#\/components\/schemas\/MediaResource"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "module": {
                        "$ref": "#\/components\/schemas\/CourseResource"
                    },
                    "created_by": {
                        "$ref": "#\/components\/schemas\/CreatedByUserResource"
                    },
                    "resourceable": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {},
                            "type": {
                                "type": "string"
                            },
                            "title": {}
                        },
                        "required": [
                            "id",
                            "type",
                            "title"
                        ]
                    }
                },
                "required": [
                    "id",
                    "type",
                    "type_label",
                    "title",
                    "body",
                    "module_id",
                    "resourceable_type",
                    "resourceable_id",
                    "created_by_id",
                    "created_at",
                    "updated_at",
                    "file"
                ],
                "title": "LearningResourceResource"
            },
            "LessonLevel": {
                "type": "string",
                "enum": [
                    "basic",
                    "intermediate",
                    "expert"
                ],
                "title": "LessonLevel"
            },
            "LessonResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "sub_module_id": {
                        "type": "integer"
                    },
                    "version_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "published_version_id": {
                        "type": "string"
                    },
                    "working_version_id": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "type": {
                        "type": "string"
                    },
                    "type_label": {
                        "type": "string",
                        "enum": [
                            "Texte",
                            "Vid\u00e9o"
                        ]
                    },
                    "level": {
                        "type": "string"
                    },
                    "level_label": {
                        "type": "string",
                        "enum": [
                            "Basique",
                            "Interm\u00e9diaire",
                            "Expert"
                        ]
                    },
                    "content": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cover_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cover_url": {
                        "type": "string"
                    },
                    "cover_urls": {
                        "anyOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "thumb": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "card": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "large": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "original": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    }
                                },
                                "required": [
                                    "thumb",
                                    "card",
                                    "large",
                                    "original"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "thumb": {
                                        "type": "null"
                                    },
                                    "card": {
                                        "type": "null"
                                    },
                                    "large": {
                                        "type": "null"
                                    },
                                    "original": {
                                        "type": "null"
                                    }
                                },
                                "required": [
                                    "thumb",
                                    "card",
                                    "large",
                                    "original"
                                ]
                            }
                        ]
                    },
                    "video": {
                        "$ref": "#\/components\/schemas\/MediaResource"
                    },
                    "video_url": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "estimated_duration_minutes": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "status_label": {
                        "type": "string",
                        "enum": [
                            "Brouillon",
                            "En attente",
                            "Valid\u00e9e",
                            "\u00c0 corriger",
                            "Remplac\u00e9e"
                        ]
                    },
                    "position": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "is_completed": {
                        "type": "boolean"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "sub_module": {
                        "$ref": "#\/components\/schemas\/ModuleResource"
                    },
                    "review_comments": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/LessonReviewCommentResource"
                        }
                    }
                },
                "required": [
                    "id",
                    "sub_module_id",
                    "version_id",
                    "published_version_id",
                    "working_version_id",
                    "title",
                    "slug",
                    "type",
                    "type_label",
                    "level",
                    "level_label",
                    "content",
                    "description",
                    "cover_path",
                    "cover_url",
                    "cover_urls",
                    "video",
                    "video_url",
                    "estimated_duration_minutes",
                    "status",
                    "status_label",
                    "position",
                    "created_at",
                    "updated_at"
                ],
                "title": "LessonResource"
            },
            "LessonReviewCommentResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "lesson_id": {
                        "type": "integer"
                    },
                    "lesson_version_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "body": {
                        "type": "string"
                    },
                    "resolved_at": {
                        "type": "string"
                    },
                    "cancelled_at": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "creator": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "email": {
                                "type": "string"
                            },
                            "first_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "last_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "id",
                            "email",
                            "first_name",
                            "last_name"
                        ]
                    },
                    "resolver": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "email": {
                                "type": "string"
                            },
                            "first_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "last_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "id",
                            "email",
                            "first_name",
                            "last_name"
                        ]
                    },
                    "canceller": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "email": {
                                "type": "string"
                            },
                            "first_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "last_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "id",
                            "email",
                            "first_name",
                            "last_name"
                        ]
                    }
                },
                "required": [
                    "id",
                    "lesson_id",
                    "lesson_version_id",
                    "body",
                    "resolved_at",
                    "cancelled_at",
                    "created_at",
                    "updated_at"
                ],
                "title": "LessonReviewCommentResource"
            },
            "LessonType": {
                "type": "string",
                "enum": [
                    "text",
                    "video"
                ],
                "title": "LessonType"
            },
            "LoginRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "format": "email"
                    },
                    "password": {
                        "type": "string"
                    }
                },
                "required": [
                    "email",
                    "password"
                ],
                "title": "LoginRequest"
            },
            "ManagedUserProfileResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "personal_identifier": {
                        "type": "string"
                    },
                    "first_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "middle_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "last_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "gender": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "birthdate": {
                        "type": "string"
                    },
                    "nationality": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "birth_place": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "birth_country": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "phone": {
                        "type": "string"
                    },
                    "ifu": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "bank_identity": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_url": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_square_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_square_url": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "profile_category": {
                        "anyOf": [
                            {
                                "$ref": "#\/components\/schemas\/ProfileCategoryResource"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "country": {
                        "$ref": "#\/components\/schemas\/CountryResource"
                    }
                },
                "required": [
                    "id",
                    "personal_identifier",
                    "first_name",
                    "middle_name",
                    "last_name",
                    "gender",
                    "birthdate",
                    "nationality",
                    "birth_place",
                    "birth_country",
                    "phone",
                    "ifu",
                    "bank_identity",
                    "avatar_path",
                    "avatar_url",
                    "avatar_square_path",
                    "avatar_square_url"
                ],
                "title": "ManagedUserProfileResource"
            },
            "MarkMyNotificationsReadRequest": {
                "type": "object",
                "properties": {
                    "notification_ids": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "title": "MarkMyNotificationsReadRequest"
            },
            "MediaResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "file_name": {
                        "type": "string"
                    },
                    "mime_type": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "size": {
                        "type": "integer"
                    },
                    "url": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "file_name",
                    "mime_type",
                    "size",
                    "url",
                    "created_at"
                ],
                "title": "MediaResource"
            },
            "MessageResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "conversation_id": {
                        "type": "integer"
                    },
                    "user_id": {
                        "type": "integer"
                    },
                    "body": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "attachments": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/MediaResource"
                        }
                    }
                },
                "required": [
                    "id",
                    "conversation_id",
                    "user_id",
                    "body",
                    "created_at",
                    "attachments"
                ],
                "title": "MessageResource"
            },
            "ModuleLessonResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "sub_module_id": {
                        "type": "integer"
                    },
                    "version_id": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "type": {
                        "type": "string"
                    },
                    "level": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "position": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "estimated_duration_minutes": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "sub_module_id",
                    "version_id",
                    "title",
                    "slug",
                    "type",
                    "level",
                    "status",
                    "position",
                    "estimated_duration_minutes"
                ],
                "title": "ModuleLessonResource"
            },
            "ModuleResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cover_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cover_url": {
                        "type": "string"
                    },
                    "cover_urls": {
                        "anyOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "thumb": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "card": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "large": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "original": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    }
                                },
                                "required": [
                                    "thumb",
                                    "card",
                                    "large",
                                    "original"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "thumb": {
                                        "type": "null"
                                    },
                                    "card": {
                                        "type": "null"
                                    },
                                    "large": {
                                        "type": "null"
                                    },
                                    "original": {
                                        "type": "null"
                                    }
                                },
                                "required": [
                                    "thumb",
                                    "card",
                                    "large",
                                    "original"
                                ]
                            }
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "position": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "lessons_count": {
                        "type": "integer"
                    },
                    "progress_summary": {},
                    "abilities": {
                        "type": "object",
                        "properties": {
                            "can_manage_structure": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "can_manage_structure"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "module": {
                        "$ref": "#\/components\/schemas\/CourseResource"
                    },
                    "lessons": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ModuleLessonResource"
                        }
                    }
                },
                "required": [
                    "id",
                    "module_id",
                    "title",
                    "slug",
                    "description",
                    "cover_path",
                    "cover_url",
                    "cover_urls",
                    "status",
                    "position",
                    "lessons_count",
                    "progress_summary",
                    "abilities",
                    "created_at",
                    "updated_at"
                ],
                "title": "ModuleResource"
            },
            "PathCourseResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "study_hours": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "archived",
                            "active"
                        ]
                    },
                    "position": {
                        "type": "integer"
                    },
                    "is_required": {
                        "type": "boolean"
                    },
                    "sub_modules_count": {
                        "type": "integer"
                    }
                },
                "required": [
                    "id",
                    "title",
                    "slug",
                    "description",
                    "study_hours",
                    "status",
                    "position",
                    "is_required",
                    "sub_modules_count"
                ],
                "title": "PathCourseResource"
            },
            "PathResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "code": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string"
                    },
                    "slug": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "modules_count": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "modules": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/PathCourseResource"
                        }
                    },
                    "cohorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/CohortResource"
                        }
                    },
                    "created_by": {
                        "$ref": "#\/components\/schemas\/CreatedByUserResource"
                    }
                },
                "required": [
                    "id",
                    "code",
                    "title",
                    "slug",
                    "description",
                    "status",
                    "modules_count",
                    "created_at",
                    "updated_at"
                ],
                "title": "PathResource"
            },
            "PermissionName": {
                "type": "string",
                "enum": [
                    "dashboard.home.view",
                    "users.list.view",
                    "users.admins.view",
                    "users.admins.update",
                    "users.admins.invite",
                    "users.admins.resend_invitation",
                    "users.admins.suspend",
                    "users.admins.reactivate",
                    "users.admins.delete",
                    "users.staff.view",
                    "users.staff.update",
                    "users.staff.invite",
                    "users.staff.resend_invitation",
                    "users.staff.suspend",
                    "users.staff.reactivate",
                    "users.staff.delete",
                    "users.trainers.view",
                    "users.trainers.update",
                    "users.trainers.invite",
                    "users.trainers.resend_invitation",
                    "users.trainers.suspend",
                    "users.trainers.reactivate",
                    "users.trainers.delete",
                    "users.roles_permissions.view",
                    "users.roles_permissions.create_roles",
                    "users.roles_permissions.update_roles",
                    "users.roles_permissions.delete_roles",
                    "users.roles_permissions.assign_roles",
                    "users.roles_permissions.assign_permissions",
                    "learners.list.view",
                    "learners.list.import",
                    "learners.cohorts.view",
                    "learners.competency_tracking.view",
                    "learners.competency_tracking.update",
                    "learning.paths.view",
                    "learning.paths.create",
                    "learning.paths.update",
                    "learning.paths.delete",
                    "learning.paths.publish",
                    "learning.paths.related.view",
                    "learning.modules.view",
                    "learning.modules.create",
                    "learning.modules.update",
                    "learning.modules.delete",
                    "learning.competencies.view",
                    "learning.competencies.create",
                    "learning.competencies.update",
                    "learning.competencies.delete",
                    "learning.sub_modules.view",
                    "learning.sub_modules.create",
                    "learning.sub_modules.update",
                    "learning.sub_modules.delete",
                    "learning.sub_modules.publish",
                    "learning.sub_modules.archive",
                    "learning.sub_modules.reorder",
                    "learning.sub_modules.view_archived",
                    "learning.lessons.view",
                    "learning.lessons.create",
                    "learning.lessons.update",
                    "learning.lessons.delete",
                    "learning.lessons.review",
                    "learning.lessons.reject",
                    "learning.lessons.reorder",
                    "learning.lessons.view_archived",
                    "learning.cohorts.view",
                    "learning.cohorts.create",
                    "learning.cohorts.update",
                    "learning.cohorts.delete",
                    "learning.cohorts.launch",
                    "learning.cohorts.close",
                    "learning.cohorts.cancel",
                    "learning.cohorts.enroll_learners",
                    "learning.cohorts.remove_learners",
                    "learning.cohorts.view_learners",
                    "learning.cohorts.assign_trainers",
                    "learning.cohorts.remove_trainers",
                    "learning.cohorts.close_module",
                    "learning.resources.view",
                    "learning.resources.upload",
                    "learning.resources.update",
                    "learning.resources.delete",
                    "agenda.home.view",
                    "agenda.events.view",
                    "agenda.events.create",
                    "agenda.events.update",
                    "agenda.events.delete",
                    "agenda.settings.update",
                    "statistics.overview.view",
                    "statistics.reports.view",
                    "statistics.graphics.view",
                    "statistics.home.view",
                    "communication.messaging.view",
                    "communication.messaging.conversations.create",
                    "communication.messaging.conversations.manage_members",
                    "communication.messaging.conversations.archive",
                    "communication.messaging.conversations.restore",
                    "communication.messaging.conversations.force_delete",
                    "communication.forums.view",
                    "communication.forums.create",
                    "communication.forums.update",
                    "communication.forums.delete",
                    "communication.forums.comment",
                    "communication.forums.react",
                    "communication.forums.moderate",
                    "communication.forums.moderate_related",
                    "communication.forums.moderate_cohort",
                    "communication.forums.moderate_global",
                    "faq.home.view",
                    "faq.entries.view",
                    "faq.entries.create",
                    "faq.entries.update",
                    "faq.entries.delete",
                    "faq.entries.publish",
                    "notifications.home.view",
                    "settings.home.view",
                    "activity_tracking.actions.view",
                    "activity_tracking.logins.view",
                    "activity_tracking.archives.view",
                    "activity_tracking.archives.restore",
                    "activity_tracking.archives.force_delete",
                    "activity_tracking.exports.download",
                    "learning.modules.assigned.view",
                    "learning.modules.assigned.sub_modules.create",
                    "learning.modules.assigned.sub_modules.update",
                    "learning.modules.assigned.sub_modules.delete",
                    "learning.modules.assigned.sub_modules.publish",
                    "learning.modules.assigned.sub_modules.archive",
                    "learning.modules.assigned.sub_modules.reorder",
                    "learning.modules.assigned.lessons.create",
                    "learning.modules.assigned.lessons.update",
                    "learning.modules.assigned.lessons.delete",
                    "learning.modules.assigned.lessons.submit",
                    "learning.modules.assigned.lessons.reorder",
                    "learning.modules.learners.view",
                    "learning.paths.mine.view",
                    "learning.cohorts.mine.view",
                    "learning.modules.mine.view",
                    "learning.exercises.view",
                    "learning.exercises.create",
                    "learning.exercises.update",
                    "learning.exercises.delete",
                    "learning.exercises.attempt",
                    "learning.exercises.correct",
                    "learning.project_deliverables.view",
                    "learning.project_deliverables.create",
                    "learning.project_deliverables.update",
                    "learning.project_deliverables.delete",
                    "learning.project_deliverables.submit",
                    "learning.project_deliverables.corrected.view",
                    "learning.project_deliverables.correct",
                    "learning.resources.context.view",
                    "learning.resources.context.download",
                    "learning.resources.context.upload",
                    "learning.resources.context.update",
                    "learning.resources.context.delete"
                ],
                "title": "PermissionName"
            },
            "PhoneNumberResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "number": {
                        "type": "string"
                    },
                    "normalized_number": {
                        "type": "string"
                    },
                    "verified_at": {
                        "type": "string"
                    },
                    "country": {
                        "anyOf": [
                            {
                                "$ref": "#\/components\/schemas\/CountryResource"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    }
                },
                "required": [
                    "id",
                    "number",
                    "normalized_number",
                    "verified_at"
                ],
                "title": "PhoneNumberResource"
            },
            "ProfileCategoryResource": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "string"
                    },
                    "label": {
                        "type": "string"
                    }
                },
                "required": [
                    "code",
                    "label"
                ],
                "title": "ProfileCategoryResource"
            },
            "ProfileResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "personal_identifier": {
                        "type": "string"
                    },
                    "first_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "middle_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "last_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "gender": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "birthdate": {
                        "type": "string"
                    },
                    "nationality": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "birth_place": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "birth_country": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "ifu": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "bank_identity": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "profile_category": {
                        "anyOf": [
                            {
                                "$ref": "#\/components\/schemas\/ProfileCategoryResource"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "country": {
                        "anyOf": [
                            {
                                "$ref": "#\/components\/schemas\/CountryResource"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "city": {
                        "anyOf": [
                            {
                                "$ref": "#\/components\/schemas\/CityResource"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "phone_numbers": {
                        "type": "array",
                        "items": {}
                    },
                    "primary_phone_number": {
                        "anyOf": [
                            {
                                "$ref": "#\/components\/schemas\/PhoneNumberResource"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "phone": {
                        "type": "string"
                    },
                    "avatar_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_url": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_square_path": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_square_url": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "personal_identifier",
                    "first_name",
                    "middle_name",
                    "last_name",
                    "gender",
                    "birthdate",
                    "nationality",
                    "birth_place",
                    "birth_country",
                    "ifu",
                    "bank_identity",
                    "phone",
                    "avatar_path",
                    "avatar_url",
                    "avatar_square_path",
                    "avatar_square_url"
                ],
                "title": "ProfileResource"
            },
            "ProjectDeliverableAssignmentResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "project_deliverable_id": {
                        "type": "integer"
                    },
                    "learner_id": {
                        "type": "integer"
                    },
                    "assigned_at": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "learner": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    },
                    "submission": {
                        "$ref": "#\/components\/schemas\/ProjectDeliverableSubmissionResource"
                    }
                },
                "required": [
                    "id",
                    "project_deliverable_id",
                    "learner_id",
                    "assigned_at",
                    "created_at"
                ],
                "title": "ProjectDeliverableAssignmentResource"
            },
            "ProjectDeliverableResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "cohort_id": {
                        "type": "integer"
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "deliverableable_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "module",
                            "sub_module",
                            "lesson",
                            null
                        ]
                    },
                    "deliverableable_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "instructions": {
                        "type": "string"
                    },
                    "level": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "due_at": {
                        "type": "string"
                    },
                    "max_score": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "max_attempts": {
                        "type": "integer"
                    },
                    "allow_late_submissions": {
                        "type": "boolean"
                    },
                    "status": {
                        "type": "string"
                    },
                    "created_by_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "assignments_count": {
                        "type": "integer"
                    },
                    "submissions_count": {
                        "type": "integer"
                    },
                    "submissions_summary": {
                        "type": "object",
                        "properties": {
                            "total": {
                                "type": "integer"
                            },
                            "submitted": {
                                "type": "integer"
                            },
                            "corrected": {
                                "type": "integer"
                            },
                            "needs_revision": {
                                "type": "integer"
                            }
                        },
                        "required": [
                            "total",
                            "submitted",
                            "corrected",
                            "needs_revision"
                        ]
                    },
                    "cover_url": {
                        "type": "string"
                    },
                    "cover_urls": {
                        "anyOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "thumb": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "card": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "large": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    },
                                    "original": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    }
                                },
                                "required": [
                                    "thumb",
                                    "card",
                                    "large",
                                    "original"
                                ]
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "thumb": {
                                        "type": "null"
                                    },
                                    "card": {
                                        "type": "null"
                                    },
                                    "large": {
                                        "type": "null"
                                    },
                                    "original": {
                                        "type": "null"
                                    }
                                },
                                "required": [
                                    "thumb",
                                    "card",
                                    "large",
                                    "original"
                                ]
                            }
                        ]
                    },
                    "cover": {
                        "$ref": "#\/components\/schemas\/MediaResource"
                    },
                    "instructions_attachments": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/MediaResource"
                        }
                    },
                    "cohort": {
                        "$ref": "#\/components\/schemas\/CohortResource"
                    },
                    "module": {
                        "$ref": "#\/components\/schemas\/CourseResource"
                    },
                    "created_by": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    },
                    "deliverableable": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "type": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "enum": [
                                    "module",
                                    "sub_module",
                                    "lesson",
                                    null
                                ]
                            },
                            "id": {},
                            "title": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "type",
                            "id",
                            "title"
                        ]
                    },
                    "assignments": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ProjectDeliverableAssignmentResource"
                        }
                    },
                    "submissions": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/ProjectDeliverableSubmissionResource"
                        }
                    }
                },
                "required": [
                    "id",
                    "cohort_id",
                    "module_id",
                    "deliverableable_type",
                    "deliverableable_id",
                    "title",
                    "description",
                    "instructions",
                    "level",
                    "due_at",
                    "max_score",
                    "max_attempts",
                    "allow_late_submissions",
                    "status",
                    "created_by_id",
                    "created_at",
                    "updated_at",
                    "cover_url",
                    "cover_urls"
                ],
                "title": "ProjectDeliverableResource"
            },
            "ProjectDeliverableSubmissionResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "project_deliverable_id": {
                        "type": "integer"
                    },
                    "assignment_id": {
                        "type": "integer"
                    },
                    "learner_id": {
                        "type": "integer"
                    },
                    "comment": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string"
                    },
                    "status_label": {
                        "type": "string",
                        "enum": [
                            "Soumis",
                            "Corrig\u00e9",
                            "R\u00e9vision demand\u00e9e"
                        ]
                    },
                    "submitted_at": {
                        "type": "string"
                    },
                    "is_late": {
                        "type": "boolean"
                    },
                    "score": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "trainer_comment": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "corrected_at": {
                        "type": "string"
                    },
                    "corrected_by_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "attachments": {
                        "type": "array",
                        "items": {
                            "$ref": "#\/components\/schemas\/MediaResource"
                        }
                    },
                    "project_deliverable": {
                        "$ref": "#\/components\/schemas\/ProjectDeliverableResource"
                    },
                    "assignment": {
                        "$ref": "#\/components\/schemas\/ProjectDeliverableAssignmentResource"
                    },
                    "learner": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    },
                    "corrected_by": {
                        "$ref": "#\/components\/schemas\/UserResource"
                    }
                },
                "required": [
                    "id",
                    "project_deliverable_id",
                    "assignment_id",
                    "learner_id",
                    "comment",
                    "status",
                    "status_label",
                    "submitted_at",
                    "is_late",
                    "score",
                    "trainer_comment",
                    "corrected_at",
                    "corrected_by_id",
                    "created_at"
                ],
                "title": "ProjectDeliverableSubmissionResource"
            },
            "PublicationStatus": {
                "type": "string",
                "enum": [
                    "draft",
                    "published",
                    "archived"
                ],
                "title": "PublicationStatus"
            },
            "PublishModuleRequest": {
                "type": "object",
                "properties": {
                    "after_id": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0
                    }
                },
                "title": "PublishModuleRequest"
            },
            "ReorderCourseModulesRequest": {
                "type": "object",
                "properties": {
                    "items": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "minItems": 1
                    }
                },
                "required": [
                    "items"
                ],
                "title": "ReorderCourseModulesRequest"
            },
            "ReorderModuleLessonsRequest": {
                "type": "object",
                "properties": {
                    "items": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "minItems": 1
                    }
                },
                "required": [
                    "items"
                ],
                "title": "ReorderModuleLessonsRequest"
            },
            "RequestLessonCorrectionsRequest": {
                "type": "object",
                "properties": {
                    "comments": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "body": {
                                    "type": "string",
                                    "maxLength": 5000
                                }
                            },
                            "required": [
                                "body"
                            ]
                        },
                        "minItems": 1
                    }
                },
                "required": [
                    "comments"
                ],
                "title": "RequestLessonCorrectionsRequest"
            },
            "ResetPasswordRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "format": "email"
                    },
                    "token": {
                        "type": "string"
                    },
                    "password": {
                        "type": "string"
                    },
                    "password_confirmation": {
                        "type": "string"
                    }
                },
                "required": [
                    "email",
                    "token",
                    "password",
                    "password_confirmation"
                ],
                "title": "ResetPasswordRequest"
            },
            "RoleResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "is_system": {
                        "type": "boolean"
                    },
                    "users_count": {
                        "type": "integer"
                    },
                    "users_active_count": {
                        "type": "integer"
                    },
                    "users_inactive_count": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    },
                    "modules": {
                        "type": "array",
                        "items": {}
                    },
                    "permissions": {
                        "type": "array",
                        "items": {}
                    }
                },
                "required": [
                    "id",
                    "name",
                    "is_system",
                    "created_at",
                    "updated_at"
                ],
                "title": "RoleResource"
            },
            "StoreCohortRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "fabrique_code": {
                        "$ref": "#\/components\/schemas\/CohortFabriqueCode"
                    },
                    "room": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "referent_id": {
                        "type": "integer"
                    },
                    "start_date": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "end_date": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "code": {
                        "type": "string"
                    },
                    "path_id": {
                        "type": "string"
                    },
                    "sequence": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "created_by_id": {
                        "type": "string"
                    },
                    "launched_at": {
                        "type": "string"
                    },
                    "launched_by_id": {
                        "type": "string"
                    },
                    "closed_at": {
                        "type": "string"
                    },
                    "closed_by_id": {
                        "type": "string"
                    },
                    "cancelled_at": {
                        "type": "string"
                    },
                    "cancelled_by_id": {
                        "type": "string"
                    }
                },
                "required": [
                    "name",
                    "fabrique_code",
                    "room",
                    "referent_id",
                    "start_date",
                    "end_date"
                ],
                "title": "StoreCohortRequest"
            },
            "StoreCompetencyRequest": {
                "type": "object",
                "properties": {
                    "label": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "label"
                ],
                "title": "StoreCompetencyRequest"
            },
            "StoreConversationMembersRequest": {
                "type": "object",
                "properties": {
                    "user_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "minItems": 1
                    }
                },
                "required": [
                    "user_ids"
                ],
                "title": "StoreConversationMembersRequest"
            },
            "StoreConversationRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "user_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "minItems": 1
                    }
                },
                "required": [
                    "user_ids"
                ],
                "title": "StoreConversationRequest"
            },
            "StoreCourseTrainersRequest": {
                "type": "object",
                "properties": {
                    "trainer_id": {
                        "type": "integer"
                    }
                },
                "required": [
                    "trainer_id"
                ],
                "title": "StoreCourseTrainersRequest"
            },
            "StoreEventRequest": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "enum": [
                            "course_session",
                            "evaluation",
                            "project_deliverable"
                        ]
                    },
                    "cohort_id": {
                        "type": "integer"
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "course_id": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "comment": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "date": {
                        "type": "string",
                        "format": "date"
                    },
                    "start_time": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "end_time": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "timezone": {
                        "type": "string"
                    },
                    "is_all_day": {
                        "type": "boolean"
                    },
                    "reminder_minutes_before": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "maximum": 10080
                    },
                    "details": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "minItems": 1
                    },
                    "recurrence": {
                        "type": "object",
                        "properties": {
                            "frequency": {
                                "type": "string",
                                "enum": [
                                    "daily",
                                    "weekly",
                                    "monthly"
                                ]
                            },
                            "until_date": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "format": "date"
                            }
                        }
                    }
                },
                "required": [
                    "type",
                    "cohort_id",
                    "module_id",
                    "title",
                    "date",
                    "details"
                ],
                "title": "StoreEventRequest"
            },
            "StoreExerciseAnswerRequest": {
                "type": "object",
                "properties": {
                    "question_id": {
                        "type": "integer"
                    },
                    "text_answer": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "selected_option_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        }
                    }
                },
                "required": [
                    "question_id"
                ],
                "title": "StoreExerciseAnswerRequest"
            },
            "StoreExerciseQuestionOptionRequest": {
                "type": "object",
                "properties": {
                    "label": {
                        "type": "string"
                    },
                    "position": {
                        "type": "integer",
                        "minimum": 1
                    },
                    "is_correct": {
                        "type": "boolean"
                    },
                    "image": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "label"
                ],
                "title": "StoreExerciseQuestionOptionRequest"
            },
            "StoreExerciseQuestionRequest": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "enum": [
                            "single_choice",
                            "multiple_choice",
                            "free_text"
                        ]
                    },
                    "grading_mode": {
                        "type": "string",
                        "enum": [
                            "auto",
                            "manual"
                        ]
                    },
                    "prompt": {
                        "type": "string"
                    },
                    "points": {
                        "type": "number",
                        "minimum": 0.01
                    },
                    "time_limit_seconds": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1
                    },
                    "position": {
                        "type": "integer",
                        "minimum": 1
                    },
                    "image": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "type",
                    "prompt"
                ],
                "title": "StoreExerciseQuestionRequest"
            },
            "StoreExerciseRequest": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "enum": [
                            "quiz",
                            "evaluation"
                        ]
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "course_id": {
                        "type": "string"
                    },
                    "cohort_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "exerciseable_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "module",
                            "sub_module",
                            "lesson"
                        ]
                    },
                    "exerciseable_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "draft"
                        ]
                    },
                    "opens_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "closes_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "time_limit_seconds": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1
                    },
                    "max_score": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "minimum": 0
                    },
                    "max_attempts": {
                        "type": "integer",
                        "enum": [
                            "1"
                        ]
                    },
                    "cover": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "type",
                    "module_id",
                    "title"
                ],
                "title": "StoreExerciseRequest"
            },
            "StoreFaqCategoryRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "position": {
                        "type": "integer",
                        "minimum": 1
                    }
                },
                "required": [
                    "name"
                ],
                "title": "StoreFaqCategoryRequest"
            },
            "StoreFaqEntryRequest": {
                "type": "object",
                "properties": {
                    "faq_category_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "question": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "answer": {
                        "type": "string"
                    },
                    "position": {
                        "type": "integer",
                        "minimum": 1
                    }
                },
                "required": [
                    "question",
                    "answer"
                ],
                "title": "StoreFaqEntryRequest"
            },
            "StoreForumCommentRequest": {
                "type": "object",
                "properties": {
                    "body": {
                        "type": "string"
                    },
                    "parent_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    }
                },
                "required": [
                    "body"
                ],
                "title": "StoreForumCommentRequest"
            },
            "StoreForumPostRequest": {
                "type": "object",
                "properties": {
                    "body": {
                        "type": "string"
                    }
                },
                "required": [
                    "body"
                ],
                "title": "StoreForumPostRequest"
            },
            "StoreForumThreadRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "body": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "visibility": {
                        "type": "string",
                        "enum": [
                            "cohort_only",
                            "trainers_only",
                            "public"
                        ]
                    },
                    "cohort_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "module_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "course_id": {
                        "type": "string"
                    },
                    "forumable_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "module",
                            "sub_module",
                            "lesson"
                        ]
                    },
                    "forumable_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "maxLength": 50
                        },
                        "maxItems": 10
                    }
                },
                "required": [
                    "title"
                ],
                "title": "StoreForumThreadRequest"
            },
            "StoreLearnerRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "format": "email",
                        "maxLength": 255
                    },
                    "first_name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "middle_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "last_name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "gender": {
                        "$ref": "#\/components\/schemas\/Gender"
                    },
                    "birthdate": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "nationality": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "birth_place": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "birth_country": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "phone": {
                        "type": "string",
                        "maxLength": 50
                    },
                    "personal_identifier": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "cohort_id": {
                        "type": "integer"
                    },
                    "photo": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "email",
                    "first_name",
                    "last_name",
                    "gender",
                    "birthdate",
                    "nationality",
                    "birth_place",
                    "birth_country",
                    "phone",
                    "personal_identifier",
                    "cohort_id"
                ],
                "title": "StoreLearnerRequest"
            },
            "StoreLearningResourceRequest": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "enum": [
                            "text",
                            "image",
                            "video",
                            "pdf",
                            "document"
                        ]
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "body": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "file": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "binary",
                        "contentMediaType": "application\/octet-stream"
                    }
                },
                "required": [
                    "type",
                    "title"
                ],
                "title": "StoreLearningResourceRequest"
            },
            "StoreLessonRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
                        "maxLength": 255
                    },
                    "type": {
                        "$ref": "#\/components\/schemas\/LessonType"
                    },
                    "level": {
                        "$ref": "#\/components\/schemas\/LessonLevel"
                    },
                    "content": {
                        "type": "string"
                    },
                    "cover": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "estimated_duration_minutes": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1
                    },
                    "position": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0
                    }
                },
                "required": [
                    "title"
                ],
                "title": "StoreLessonRequest"
            },
            "StoreMessageRequest": {
                "type": "object",
                "properties": {
                    "body": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "attachments": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "binary",
                            "contentMediaType": "application\/octet-stream"
                        }
                    }
                },
                "title": "StoreMessageRequest"
            },
            "StoreModuleRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "position": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1
                    },
                    "cover": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "title"
                ],
                "title": "StoreModuleRequest"
            },
            "StorePathModuleRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "study_hours": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1
                    },
                    "cover": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "position": {
                        "type": "integer",
                        "minimum": 1
                    },
                    "is_required": {
                        "type": "boolean"
                    },
                    "competencies": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        }
                    },
                    "learning_objectives": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "label": {
                                    "type": "string",
                                    "maxLength": 255
                                },
                                "description": {
                                    "type": [
                                        "string",
                                        "null"
                                    ]
                                },
                                "position": {
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "minimum": 1
                                }
                            },
                            "required": [
                                "label"
                            ]
                        }
                    }
                },
                "required": [
                    "title"
                ],
                "title": "StorePathModuleRequest"
            },
            "StorePathRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "code": {
                        "type": "string"
                    },
                    "created_by_id": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    }
                },
                "required": [
                    "title"
                ],
                "title": "StorePathRequest"
            },
            "StoreProjectDeliverableRequest": {
                "type": "object",
                "properties": {
                    "cohort_id": {
                        "type": "integer"
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "course_id": {
                        "type": "string"
                    },
                    "deliverableable_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "module",
                            "sub_module",
                            "lesson"
                        ]
                    },
                    "deliverableable_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "instructions": {
                        "type": "string"
                    },
                    "level": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 100
                    },
                    "due_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "max_score": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "minimum": 0
                    },
                    "max_attempts": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                    },
                    "allow_late_submissions": {
                        "type": "boolean"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "draft",
                            "published",
                            "archived"
                        ]
                    },
                    "cover": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "learner_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        }
                    },
                    "instructions_attachments": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "binary",
                            "contentMediaType": "application\/octet-stream"
                        }
                    }
                },
                "required": [
                    "cohort_id",
                    "module_id",
                    "title",
                    "instructions",
                    "due_at"
                ],
                "title": "StoreProjectDeliverableRequest"
            },
            "StoreProjectDeliverableSubmissionRequest": {
                "type": "object",
                "properties": {
                    "comment": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "submission_attachments": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "binary",
                            "contentMediaType": "application\/octet-stream"
                        },
                        "minItems": 1,
                        "maxItems": 5
                    }
                },
                "required": [
                    "submission_attachments"
                ],
                "title": "StoreProjectDeliverableSubmissionRequest"
            },
            "StoreRolePermissionRequest": {
                "type": "object",
                "properties": {
                    "permission": {
                        "$ref": "#\/components\/schemas\/PermissionName"
                    }
                },
                "required": [
                    "permission"
                ],
                "title": "StoreRolePermissionRequest"
            },
            "StoreRoleRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    }
                },
                "required": [
                    "name"
                ],
                "title": "StoreRoleRequest"
            },
            "StoreStaffUserRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "format": "email",
                        "maxLength": 255
                    },
                    "first_name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "middle_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "last_name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "gender": {
                        "$ref": "#\/components\/schemas\/Gender"
                    },
                    "birthdate": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "nationality": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "birth_place": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "birth_country": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "phone": {
                        "type": "string",
                        "maxLength": 50
                    },
                    "personal_identifier": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "ifu": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "bank_identity": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "photo": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "email",
                    "first_name",
                    "last_name",
                    "gender",
                    "birthdate",
                    "nationality",
                    "birth_place",
                    "birth_country",
                    "phone",
                    "personal_identifier"
                ],
                "title": "StoreStaffUserRequest"
            },
            "StoreTrainerUserRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "format": "email",
                        "maxLength": 255
                    },
                    "first_name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "middle_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "last_name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "gender": {
                        "$ref": "#\/components\/schemas\/Gender"
                    },
                    "birthdate": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "nationality": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "birth_place": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "birth_country": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "phone": {
                        "type": "string",
                        "maxLength": 50
                    },
                    "personal_identifier": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "ifu": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "bank_identity": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "photo": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "email",
                    "first_name",
                    "last_name",
                    "gender",
                    "birthdate",
                    "nationality",
                    "birth_place",
                    "birth_country",
                    "phone",
                    "personal_identifier"
                ],
                "title": "StoreTrainerUserRequest"
            },
            "StoreUserRoleRequest": {
                "type": "object",
                "properties": {
                    "role_id": {
                        "type": "integer"
                    }
                },
                "required": [
                    "role_id"
                ],
                "title": "StoreUserRoleRequest"
            },
            "ToggleForumReactionRequest": {
                "type": "object",
                "properties": {
                    "emoji": {
                        "type": "string",
                        "enum": [
                            "thumbs_up",
                            "joy",
                            "thinking",
                            "smile",
                            "clap",
                            "idea"
                        ]
                    }
                },
                "required": [
                    "emoji"
                ],
                "title": "ToggleForumReactionRequest"
            },
            "TrainerDashboardSummaryResource": {
                "type": "object",
                "properties": {
                    "generated_at": {
                        "type": "string"
                    },
                    "counts": {
                        "type": "object",
                        "properties": {
                            "cohorts_total": {
                                "type": "integer"
                            },
                            "modules_total": {
                                "type": "integer"
                            },
                            "deliverables_to_submit_total": {
                                "type": "integer"
                            },
                            "pending_corrections_total": {
                                "type": "integer"
                            }
                        },
                        "required": [
                            "cohorts_total",
                            "modules_total",
                            "deliverables_to_submit_total",
                            "pending_corrections_total"
                        ]
                    },
                    "learner_progress_by_module": {
                        "type": "string"
                    },
                    "pending_corrections": {
                        "type": "string"
                    },
                    "course_statistics": {
                        "type": "string"
                    }
                },
                "required": [
                    "generated_at",
                    "counts",
                    "learner_progress_by_module",
                    "pending_corrections",
                    "course_statistics"
                ],
                "title": "TrainerDashboardSummaryResource"
            },
            "UpdateCohortRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "room": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "referent_id": {
                        "type": "integer"
                    },
                    "start_date": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "end_date": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "code": {
                        "type": "string"
                    },
                    "fabrique_code": {
                        "type": "string"
                    },
                    "path_id": {
                        "type": "string"
                    },
                    "sequence": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "created_by_id": {
                        "type": "string"
                    },
                    "launched_at": {
                        "type": "string"
                    },
                    "launched_by_id": {
                        "type": "string"
                    },
                    "closed_at": {
                        "type": "string"
                    },
                    "closed_by_id": {
                        "type": "string"
                    },
                    "cancelled_at": {
                        "type": "string"
                    },
                    "cancelled_by_id": {
                        "type": "string"
                    }
                },
                "title": "UpdateCohortRequest"
            },
            "UpdateCompetencyRequest": {
                "type": "object",
                "properties": {
                    "label": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "title": "UpdateCompetencyRequest"
            },
            "UpdateCourseRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "study_hours": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1
                    },
                    "cover": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "competencies": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        }
                    },
                    "learning_objectives": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "label": {
                                    "type": "string",
                                    "maxLength": 255
                                },
                                "description": {
                                    "type": [
                                        "string",
                                        "null"
                                    ]
                                },
                                "position": {
                                    "type": [
                                        "integer",
                                        "null"
                                    ],
                                    "minimum": 1
                                }
                            },
                            "required": [
                                "label"
                            ]
                        }
                    }
                },
                "title": "UpdateCourseRequest"
            },
            "UpdateEventRequest": {
                "type": "object",
                "properties": {
                    "mutation_scope": {
                        "type": "string",
                        "enum": [
                            "occurrence",
                            "series"
                        ]
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "course_session",
                            "evaluation",
                            "project_deliverable"
                        ]
                    },
                    "cohort_id": {
                        "type": "integer"
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "course_id": {
                        "type": "string"
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "comment": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "date": {
                        "type": "string",
                        "format": "date"
                    },
                    "start_time": {
                        "type": "string"
                    },
                    "end_time": {
                        "type": "string"
                    },
                    "timezone": {
                        "type": "string"
                    },
                    "is_all_day": {
                        "type": "boolean"
                    },
                    "reminder_minutes_before": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 0,
                        "maximum": 10080
                    },
                    "details": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "minItems": 1
                    },
                    "recurrence": {
                        "type": "string"
                    }
                },
                "title": "UpdateEventRequest"
            },
            "UpdateExerciseQuestionOptionRequest": {
                "type": "object",
                "properties": {
                    "label": {
                        "type": "string"
                    },
                    "position": {
                        "type": "integer",
                        "minimum": 1
                    },
                    "is_correct": {
                        "type": "boolean"
                    },
                    "image": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "title": "UpdateExerciseQuestionOptionRequest"
            },
            "UpdateExerciseQuestionRequest": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "enum": [
                            "single_choice",
                            "multiple_choice",
                            "free_text"
                        ]
                    },
                    "grading_mode": {
                        "type": "string",
                        "enum": [
                            "auto",
                            "manual"
                        ]
                    },
                    "prompt": {
                        "type": "string"
                    },
                    "points": {
                        "type": "number",
                        "minimum": 0.01
                    },
                    "time_limit_seconds": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1
                    },
                    "position": {
                        "type": "integer",
                        "minimum": 1
                    },
                    "image": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "title": "UpdateExerciseQuestionRequest"
            },
            "UpdateExerciseRequest": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "enum": [
                            "quiz",
                            "evaluation"
                        ]
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "course_id": {
                        "type": "string"
                    },
                    "cohort_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "exerciseable_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "module",
                            "sub_module",
                            "lesson"
                        ]
                    },
                    "exerciseable_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "opens_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "closes_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "time_limit_seconds": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1
                    },
                    "max_score": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "minimum": 0
                    },
                    "max_attempts": {
                        "type": "integer",
                        "enum": [
                            "1"
                        ]
                    },
                    "cover": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "title": "UpdateExerciseRequest"
            },
            "UpdateFaqCategoryRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "position": {
                        "type": "integer",
                        "minimum": 1
                    }
                },
                "title": "UpdateFaqCategoryRequest"
            },
            "UpdateFaqEntryRequest": {
                "type": "object",
                "properties": {
                    "faq_category_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "question": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "answer": {
                        "type": "string"
                    },
                    "position": {
                        "type": "integer",
                        "minimum": 1
                    }
                },
                "title": "UpdateFaqEntryRequest"
            },
            "UpdateForumCommentRequest": {
                "type": "object",
                "properties": {
                    "body": {
                        "type": "string"
                    }
                },
                "required": [
                    "body"
                ],
                "title": "UpdateForumCommentRequest"
            },
            "UpdateForumPostRequest": {
                "type": "object",
                "properties": {
                    "body": {
                        "type": "string"
                    }
                },
                "required": [
                    "body"
                ],
                "title": "UpdateForumPostRequest"
            },
            "UpdateForumThreadRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "body": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "visibility": {
                        "type": "string",
                        "enum": [
                            "cohort_only",
                            "trainers_only",
                            "public"
                        ]
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "maxLength": 50
                        },
                        "maxItems": 10
                    }
                },
                "title": "UpdateForumThreadRequest"
            },
            "UpdateLearningResourceRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "body": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "file": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "binary",
                        "contentMediaType": "application\/octet-stream"
                    }
                },
                "title": "UpdateLearningResourceRequest"
            },
            "UpdateLessonRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
                        "maxLength": 255
                    },
                    "level": {
                        "$ref": "#\/components\/schemas\/LessonLevel"
                    },
                    "type": {
                        "type": "string"
                    },
                    "content": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "video_url": {
                        "type": "string"
                    },
                    "video": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "binary",
                        "contentMediaType": "application\/octet-stream"
                    },
                    "cover": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "estimated_duration_minutes": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "minimum": 1
                    }
                },
                "title": "UpdateLessonRequest"
            },
            "UpdateLessonReviewCommentRequest": {
                "type": "object",
                "properties": {
                    "body": {
                        "type": "string",
                        "maxLength": 5000
                    }
                },
                "required": [
                    "body"
                ],
                "title": "UpdateLessonReviewCommentRequest"
            },
            "UpdateModuleRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cover": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "title": "UpdateModuleRequest"
            },
            "UpdateMyProfileRequest": {
                "type": "object",
                "properties": {
                    "first_name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "middle_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "last_name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "gender": {
                        "$ref": "#\/components\/schemas\/Gender"
                    },
                    "birthdate": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "nationality": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "birth_place": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "birth_country": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "country_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "city_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "phone": {
                        "type": "string"
                    },
                    "avatar": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_path": {
                        "type": "string"
                    },
                    "personal_identifier": {
                        "type": "string"
                    },
                    "ifu": {
                        "type": "string"
                    },
                    "bank_identity": {
                        "type": "string"
                    },
                    "profile_category_id": {
                        "type": "string"
                    },
                    "user_id": {
                        "type": "string"
                    },
                    "primary_phone_number": {
                        "type": "object",
                        "properties": {
                            "country_id": {
                                "type": "integer"
                            },
                            "number": {
                                "type": "string",
                                "maxLength": 50
                            }
                        }
                    }
                },
                "title": "UpdateMyProfileRequest"
            },
            "UpdateMySettingsRequest": {
                "type": "object",
                "properties": {
                    "general": {
                        "type": "object",
                        "properties": {
                            "notifications": {
                                "type": "object",
                                "properties": {
                                    "email_enabled": {
                                        "type": "boolean"
                                    },
                                    "in_app_enabled": {
                                        "type": "boolean"
                                    },
                                    "types": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "email_enabled": {
                                                    "type": "boolean"
                                                },
                                                "in_app_enabled": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "email_enabled",
                                                "in_app_enabled"
                                            ]
                                        },
                                        "minItems": 1
                                    }
                                },
                                "required": [
                                    "email_enabled",
                                    "in_app_enabled",
                                    "types"
                                ]
                            }
                        },
                        "required": [
                            "notifications"
                        ]
                    },
                    "agenda": {
                        "type": "object",
                        "properties": {
                            "timezone": {
                                "type": "string"
                            },
                            "week_starts_on": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 7
                            },
                            "default_view": {
                                "type": "string",
                                "enum": [
                                    "day",
                                    "week",
                                    "month"
                                ]
                            },
                            "default_reminder_minutes_before": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 10080
                            },
                            "notifications": {
                                "type": "object",
                                "properties": {
                                    "email_enabled": {
                                        "type": "boolean"
                                    },
                                    "in_app_enabled": {
                                        "type": "boolean"
                                    },
                                    "types": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "email_enabled": {
                                                    "type": "boolean"
                                                },
                                                "in_app_enabled": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "email_enabled",
                                                "in_app_enabled"
                                            ]
                                        },
                                        "minItems": 1
                                    }
                                },
                                "required": [
                                    "email_enabled",
                                    "in_app_enabled",
                                    "types"
                                ]
                            }
                        },
                        "required": [
                            "timezone",
                            "week_starts_on",
                            "default_view",
                            "default_reminder_minutes_before",
                            "notifications"
                        ]
                    },
                    "learning": {
                        "type": "object",
                        "properties": {
                            "notifications": {
                                "type": "object",
                                "properties": {
                                    "email_enabled": {
                                        "type": "boolean"
                                    },
                                    "in_app_enabled": {
                                        "type": "boolean"
                                    },
                                    "types": {
                                        "type": "array",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "email_enabled": {
                                                    "type": "boolean"
                                                },
                                                "in_app_enabled": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "email_enabled",
                                                "in_app_enabled"
                                            ]
                                        },
                                        "minItems": 1
                                    }
                                },
                                "required": [
                                    "email_enabled",
                                    "in_app_enabled",
                                    "types"
                                ]
                            }
                        },
                        "required": [
                            "notifications"
                        ]
                    }
                },
                "title": "UpdateMySettingsRequest"
            },
            "UpdatePathRequest": {
                "type": "object",
                "properties": {
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "slug": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "code": {
                        "type": "string"
                    },
                    "created_by_id": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    }
                },
                "title": "UpdatePathRequest"
            },
            "UpdateProfileRequest": {
                "type": "object",
                "properties": {
                    "first_name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "middle_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "last_name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "gender": {
                        "$ref": "#\/components\/schemas\/Gender"
                    },
                    "birthdate": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "nationality": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "birth_place": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "birth_country": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "ifu": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "bank_identity": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "country_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "city_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "phone": {
                        "type": "string"
                    },
                    "avatar": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "avatar_path": {
                        "type": "string"
                    },
                    "personal_identifier": {
                        "type": "string"
                    },
                    "profile_category_id": {
                        "type": "string"
                    },
                    "user_id": {
                        "type": "string"
                    },
                    "primary_phone_number": {
                        "type": "object",
                        "properties": {
                            "country_id": {
                                "type": "integer"
                            },
                            "number": {
                                "type": "string",
                                "maxLength": 50
                            }
                        }
                    }
                },
                "title": "UpdateProfileRequest"
            },
            "UpdateProjectDeliverableRequest": {
                "type": "object",
                "properties": {
                    "cohort_id": {
                        "type": "integer"
                    },
                    "module_id": {
                        "type": "integer"
                    },
                    "course_id": {
                        "type": "string"
                    },
                    "deliverableable_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "enum": [
                            "module",
                            "sub_module",
                            "lesson"
                        ]
                    },
                    "deliverableable_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "instructions": {
                        "type": "string"
                    },
                    "level": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 100
                    },
                    "due_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "max_score": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "minimum": 0
                    },
                    "max_attempts": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                    },
                    "allow_late_submissions": {
                        "type": "boolean"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "draft",
                            "published",
                            "archived"
                        ]
                    },
                    "cover": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "learner_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        }
                    },
                    "instructions_attachments": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "binary",
                            "contentMediaType": "application\/octet-stream"
                        }
                    }
                },
                "title": "UpdateProjectDeliverableRequest"
            },
            "UpdateRoleRequest": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    }
                },
                "required": [
                    "name"
                ],
                "title": "UpdateRoleRequest"
            },
            "UpdateUserRequest": {
                "type": "object",
                "properties": {
                    "email": {
                        "type": "string",
                        "format": "email",
                        "maxLength": 255
                    },
                    "first_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "middle_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "last_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "gender": {
                        "$ref": "#\/components\/schemas\/Gender"
                    },
                    "birthdate": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "nationality": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "birth_place": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "birth_country": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "phone": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 50
                    },
                    "personal_identifier": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "ifu": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "maxLength": 255
                    },
                    "bank_identity": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "photo": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "title": "UpdateUserRequest"
            },
            "UserNotificationResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    },
                    "entity_type": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "entity_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "title": {
                        "type": "string"
                    },
                    "body": {
                        "type": "string"
                    },
                    "reason": {
                        "type": "string"
                    },
                    "navigation_target": {
                        "type": "string"
                    },
                    "data": {
                        "type": "string"
                    },
                    "read_at": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "type",
                    "entity_type",
                    "entity_id",
                    "title",
                    "body",
                    "reason",
                    "navigation_target",
                    "data",
                    "read_at",
                    "created_at"
                ],
                "title": "UserNotificationResource"
            },
            "UserResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "email": {
                        "type": "string"
                    },
                    "user_status": {
                        "type": "string"
                    },
                    "profile": {
                        "$ref": "#\/components\/schemas\/ManagedUserProfileResource"
                    },
                    "roles": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "cohort": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "name": {
                                "type": "string"
                            },
                            "code": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "id",
                            "name",
                            "code"
                        ]
                    },
                    "path": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "title": {
                                "type": "string"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "title",
                            "name"
                        ]
                    },
                    "modules": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "id": {
                                    "type": "integer"
                                },
                                "code": {
                                    "type": "string"
                                },
                                "label": {
                                    "type": "string"
                                },
                                "position": {
                                    "type": "integer"
                                }
                            },
                            "required": [
                                "id",
                                "code",
                                "label",
                                "position"
                            ]
                        }
                    }
                },
                "required": [
                    "id",
                    "email",
                    "user_status",
                    "created_at"
                ],
                "title": "UserResource"
            },
            "UserSettingResource": {
                "anyOf": [
                    {
                        "type": "array",
                        "items": {}
                    },
                    {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "user_id": {
                                "type": "integer"
                            },
                            "learning": {},
                            "notification_types": {
                                "type": "object",
                                "additionalProperties": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "type": "object",
                                        "properties": {
                                            "type": {
                                                "type": "string"
                                            },
                                            "label": {
                                                "type": "string"
                                            },
                                            "default_email_enabled": {
                                                "type": "boolean"
                                            },
                                            "default_in_app_enabled": {
                                                "type": "boolean"
                                            }
                                        },
                                        "required": [
                                            "type",
                                            "label",
                                            "default_email_enabled",
                                            "default_in_app_enabled"
                                        ]
                                    }
                                }
                            },
                            "created_at": {
                                "type": "string"
                            },
                            "updated_at": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "user_id",
                            "learning",
                            "notification_types",
                            "created_at",
                            "updated_at"
                        ]
                    },
                    {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "user_id": {
                                "type": "integer"
                            },
                            "agenda": {},
                            "notification_types": {
                                "type": "object",
                                "additionalProperties": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "type": "object",
                                        "properties": {
                                            "type": {
                                                "type": "string"
                                            },
                                            "label": {
                                                "type": "string"
                                            },
                                            "default_email_enabled": {
                                                "type": "boolean"
                                            },
                                            "default_in_app_enabled": {
                                                "type": "boolean"
                                            }
                                        },
                                        "required": [
                                            "type",
                                            "label",
                                            "default_email_enabled",
                                            "default_in_app_enabled"
                                        ]
                                    }
                                }
                            },
                            "created_at": {
                                "type": "string"
                            },
                            "updated_at": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "user_id",
                            "agenda",
                            "notification_types",
                            "created_at",
                            "updated_at"
                        ]
                    },
                    {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "user_id": {
                                "type": "integer"
                            },
                            "general": {},
                            "notification_types": {
                                "type": "object",
                                "additionalProperties": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "type": "object",
                                        "properties": {
                                            "type": {
                                                "type": "string"
                                            },
                                            "label": {
                                                "type": "string"
                                            },
                                            "default_email_enabled": {
                                                "type": "boolean"
                                            },
                                            "default_in_app_enabled": {
                                                "type": "boolean"
                                            }
                                        },
                                        "required": [
                                            "type",
                                            "label",
                                            "default_email_enabled",
                                            "default_in_app_enabled"
                                        ]
                                    }
                                }
                            },
                            "created_at": {
                                "type": "string"
                            },
                            "updated_at": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "user_id",
                            "general",
                            "notification_types",
                            "created_at",
                            "updated_at"
                        ]
                    }
                ],
                "title": "UserSettingResource"
            },
            "UserStatus": {
                "type": "string",
                "enum": [
                    "pending",
                    "active",
                    "suspended"
                ],
                "title": "UserStatus"
            },
            "ValidateLessonRequest": {
                "type": "object",
                "properties": {
                    "force_resolve_corrections": {
                        "type": "boolean"
                    }
                },
                "title": "ValidateLessonRequest"
            }
        },
        "responses": {
            "ValidationException": {
                "description": "Validation error",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Errors overview."
                                },
                                "errors": {
                                    "type": "object",
                                    "description": "A detailed description of each field that failed validation.",
                                    "additionalProperties": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                }
                            },
                            "required": [
                                "message",
                                "errors"
                            ]
                        }
                    }
                }
            },
            "AuthenticationException": {
                "description": "Unauthenticated",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            },
            "AuthorizationException": {
                "description": "Authorization error",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            },
            "ModelNotFoundException": {
                "description": "Not found",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            }
        }
    }
}