Documentation API ECML API

L\'API de la plateforme e-learning ECML

Introduction

Authentification & Compte

Crée un nouveau compte utilisateur.

Valide que l'email n'est pas déjà utilisé et crée un nouveau compte User.

Corps de la requête

  • first_name string
  • last_name string
  • email string
  • password string
  • password_confirmation string

Réponses

201: Utilisateur enregistré avec succès

  • message string
  • user string
  • access_token string
  • token_type string

422: Erreurs de validation

  • message string
  • errors object
POST /v1/register
curl -X POST \n  'https://apieclm.appliway.com/api/v1/register' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "password": "password",
    "password_confirmation": "password"
}'
Réponse
{
    "message": "User registered successfully",
    "user": "",
    "access_token": "1|abcdefghijklmnopqrstuvwxyz",
    "token_type": "Bearer"
}

Authentifie un utilisateur.

Authentifie un User avec son email et mot de passe. Retourne un token d'authentification en cas de succès.

Corps de la requête

  • email string
  • password string

Réponses

200: Connexion réussie

  • message string
  • user string
  • access_token string
  • token_type string

401: Détails de connexion invalides

  • message string
POST /v1/login
curl -X POST \n  'https://apieclm.appliway.com/api/v1/login' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "email": "john.doe@example.com",
    "password": "password"
}'
Réponse
{
    "message": "Login successful",
    "user": "",
    "access_token": "1|abcdefghijklmnopqrstuvwxyz",
    "token_type": "Bearer"
}

Déconnecte l'utilisateur authentifié.

Invalide le token d'authentification de l'utilisateur actuellement connecté.

Réponses

200: Déconnexion réussie

  • message string

401: Non authentifié

POST /v1/logout
curl -X POST \n  'https://apieclm.appliway.com/api/v1/logout' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "message": "Logged out successfully"
}

Récupère les informations du profil de l'utilisateur actuellement connecté.

Réponses

200: Opération réussie

  • id integer

    ID de l'utilisateur

  • first_name string

    Prénom de l'utilisateur

  • last_name string

    Nom de l'utilisateur

  • email string

    Adresse email de l'utilisateur

  • role string

    Rôle de l'utilisateur

  • created_at string

    Date de création

401: Non authentifié

GET /v1/user
curl -X GET \n  'https://apieclm.appliway.com/api/v1/user' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "first_name": "",
    "last_name": "",
    "email": "",
    "role": "",
    "created_at": ""
}

Déclenche le processus de réinitialisation de mot de passe.

Envoie un email à l'utilisateur avec un lien de réinitialisation de mot de passe.

Corps de la requête

  • email string

Réponses

200: Lien de réinitialisation envoyé

  • message string

500: Erreur lors de l'envoi du lien

  • message string
POST /v1/forgot-password
curl -X POST \n  'https://apieclm.appliway.com/api/v1/forgot-password' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "email": "john.doe@example.com"
}'
Réponse
{
    "message": "We have emailed your password reset link!"
}

Met à jour le mot de passe de l'utilisateur.

Met à jour le mot de passe de l'utilisateur avec le token reçu par email.

Corps de la requête

  • token string
  • email string
  • password string
  • password_confirmation string

Réponses

200: Mot de passe réinitialisé avec succès

  • message string

500: Erreur lors de la réinitialisation du mot de passe

  • message string
POST /v1/reset-password
curl -X POST \n  'https://apieclm.appliway.com/api/v1/reset-password' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "token": "some_reset_token",
    "email": "user@example.com",
    "password": "new_password",
    "password_confirmation": "new_password"
}'
Réponse
{
    "message": "Your password has been reset!"
}

Accès Public

Formations Publiques

Récupère la liste de toutes les formations publiées.

Supporte la pagination et le filtrage par catégorie.

Paramètres

NomDansTypeRequisDescription
page query integer Non Numéro de la page
category query string Non Slug de la catégorie pour filtrer les formations

Réponses

200: Opération réussie

400: Requête invalide

GET /v1/formations
curl -X GET \n  'https://apieclm.appliway.com/api/v1/formations' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Récupère les détails complets d'une formation par son slug.

Inclut l'instructeur, la catégorie, les objectifs, les prérequis, les fonctionnalités, et la liste des modules et leçons (titres seuls).

Paramètres

NomDansTypeRequisDescription
slug path string Oui Slug de la formation

Réponses

200: Opération réussie

  • id integer

    ID de la formation

  • title string

    Titre de la formation

  • subtitle string

    Sous-titre de la formation

  • short_description string

    Description courte destinée aux cartes et listes

  • slug string

    Slug unique de la formation

  • full_description string

    Description complète de la formation

  • target_audience string

    Public cible de la formation

  • duration string

    Durée estimée de la formation

  • price number

    Prix de la formation

  • difficulte string

    Niveau de difficulté de la formation

  • image_url string

    URL de l'image de couverture

  • video_presentation_url string

    URL de la vidéo de présentation

  • is_published boolean

    Indique si la formation est publiée

  • average_rating number

    Note moyenne de la formation

  • reviews_count integer

    Nombre total d'avis

  • instructor string
  • category string
  • objectives array

    Liste des objectifs de la formation

    Items (FormationObjectiveResource)
    • id integer

      ID de l'objectif

    • formation_id integer

      ID de la formation associée

    • text string

      Description de l'objectif

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • features array

    Liste des avantages de la formation

    Items (FormationFeatureResource)
    • id integer

      ID de la caractéristique

    • formation_id integer

      ID de la formation associée

    • text string

      Description de la caractéristique

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • prerequisites array

    Liste des prérequis de la formation

    Items (FormationPrerequisiteResource)
    • id integer

      ID du prérequis

    • formation_id integer

      ID de la formation associée

    • text string

      Description du prérequis

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • modules array

    Liste des modules de la formation

    Items (ModuleResource)
    • id integer

      ID du module

    • title string

      Titre du module

    • order integer

      Ordre du module dans la formation

    • formation_id integer

      ID de la formation associée

    • lessons array

      Liste des leçons du module

      Items (LessonResource)
      • id integer

        ID de la leçon

      • title string

        Titre de la leçon

      • introduction string

        Introduction de la leçon

      • objectives string

        Objectifs de la leçon

      • module_id integer

        ID du module parent

      • content_blocks array

        Liste des blocs de contenu de la leçon

        Items (ContentBlockResource)
        • id integer

          ID du bloc de contenu

        • lesson_id integer

          ID de la leçon associée

        • order integer

          Ordre du bloc dans la leçon

        • contentable_type string

          Type du contenu polymorphique (e.g., App\\Models\\HeadingBlock)

        • contentable object

          Contenu polymorphique du bloc

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • resources array

        Liste des ressources téléchargeables de la leçon

        Items (ResourceResource)
        • id integer

          ID de la ressource

        • name string

          Nom lisible de la ressource

        • file_name string

          Nom d'origine du fichier

        • file_extension string

          Extension du fichier (ex: pdf)

        • mime_type string

          Type MIME détecté

        • file_size integer

          Taille du fichier en octets

        • disk string

          Disque de stockage utilisé

        • file_path string

          URL directe ou temporisée (alias de download_url)

        • download_url string

          URL directe ou temporisée vers la ressource

        • expires_at string

          Date d'expiration du lien si privé

        • lesson_id integer

          ID de la leçon associée

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • quizzes array

      Liste des quiz du module

      Items (QuizResource)
      • id integer

        ID du quiz

      • name string

        Nom du quiz

      • is_passed boolean

        Indique si le quiz a été réussi

      • module_id integer

        ID du module associé

      • questions array

        Liste des questions du quiz

        Items (QuestionResource)
        • id integer

          ID de la question

        • text string

          Texte de la question

        • quiz_id integer

          ID du quiz associé

        • answers array

          Liste des réponses possibles pour la question

          Items (AnswerResource)
          • id integer

            ID de la réponse

          • text string

            Texte de la réponse

          • is_correct boolean

            Indique si la réponse est correcte

          • question_id integer

            ID de la question associée

          • created_at string

            Date de création

          • updated_at string

            Date de dernière mise à jour

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

404: Formation non trouvée

GET /v1/formations/{slug}
curl -X GET \n  'https://apieclm.appliway.com/api/v1/formations/{slug}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "title": "",
    "subtitle": "",
    "short_description": "",
    "slug": "",
    "full_description": "",
    "target_audience": "",
    "duration": "",
    "price": "",
    "difficulte": "",
    "image_url": "",
    "video_presentation_url": "",
    "is_published": false,
    "average_rating": "",
    "reviews_count": 1,
    "instructor": "",
    "category": "",
    "objectives": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "features": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "prerequisites": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "modules": [
        {
            "id": 1,
            "title": "",
            "order": 1,
            "formation_id": 1,
            "lessons": [
                {
                    "id": 1,
                    "title": "",
                    "introduction": "",
                    "objectives": "",
                    "module_id": 1,
                    "content_blocks": [
                        {
                            "id": 1,
                            "lesson_id": 1,
                            "order": 1,
                            "contentable_type": "",
                            "contentable": [],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "resources": [
                        {
                            "id": 1,
                            "name": "",
                            "file_name": "",
                            "file_extension": "",
                            "mime_type": "",
                            "file_size": 1,
                            "disk": "",
                            "file_path": "",
                            "download_url": "",
                            "expires_at": "",
                            "lesson_id": 1,
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "quizzes": [
                {
                    "id": 1,
                    "name": "",
                    "is_passed": false,
                    "module_id": 1,
                    "questions": [
                        {
                            "id": 1,
                            "text": "",
                            "quiz_id": 1,
                            "answers": [
                                {
                                    "id": 1,
                                    "text": "",
                                    "is_correct": false,
                                    "question_id": 1,
                                    "created_at": "",
                                    "updated_at": ""
                                }
                            ],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Catégories Publiques

Récupère la liste de toutes les catégories de formations.

Utilisé pour les menus de filtre.

Réponses

200: Opération réussie

GET /v1/categories
curl -X GET \n  'https://apieclm.appliway.com/api/v1/categories' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Récupère une catégorie spécifique par son ID.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la catégorie

Réponses

200: Catégorie trouvée

  • id integer

    ID de la catégorie

  • name string

    Nom de la catégorie

  • slug string

    Slug de la catégorie

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

404: Catégorie non trouvée

GET /v1/categories/{id}
curl -X GET \n  'https://apieclm.appliway.com/api/v1/categories/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "name": "",
    "slug": "",
    "created_at": "",
    "updated_at": ""
}

Instructeurs Publiques

Récupère le profil public d'un instructeur.

Récupère le profil public d'un instructeur (nom, photo, biographie).

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de l'instructeur

Réponses

200: Opération réussie

  • id integer

    ID de l'instructeur

  • user_id integer

    ID de l'utilisateur associé à l'instructeur

  • bio string

    Biographie de l'instructeur

  • photo_url string

    URL de la photo de l'instructeur

  • user string
  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

404: Instructeur non trouvé

GET /v1/instructors/{id}
curl -X GET \n  'https://apieclm.appliway.com/api/v1/instructors/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "user_id": 1,
    "bio": "",
    "photo_url": "",
    "user": "",
    "created_at": "",
    "updated_at": ""
}

Avis Publiques

Récupère tous les avis pour une formation spécifique.

Récupère tous les avis (reviews) pour une formation spécifique, avec les informations de l'utilisateur (nom, prénom).

Paramètres

NomDansTypeRequisDescription
formation_id path integer Oui ID de la formation

Réponses

200: Opération réussie

404: Formation non trouvée

GET /v1/formations/{formation_id}/reviews
curl -X GET \n  'https://apieclm.appliway.com/api/v1/formations/{formation_id}/reviews' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Contact Public

Permet à un visiteur d'envoyer un message via le formulaire de contact.

Le backend envoie une notification email à l'administrateur.

Corps de la requête

  • name string
  • email string
  • subject string
  • message string

Réponses

200: Message envoyé avec succès

  • message string

422: Erreurs de validation

  • message string
  • errors object
POST /v1/contact
curl -X POST \n  'https://apieclm.appliway.com/api/v1/contact' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "name": "John Doe",
    "email": "john.doe@example.com",
    "subject": "Demande d'information",
    "message": "Bonjour, je souhaite en savoir plus sur vos formations."
}'
Réponse
{
    "message": "Your message has been sent successfully!"
}

Espace Apprenant

Espace Apprenant - Tableau de Bord

Récupère la liste des formations auxquelles l'utilisateur est inscrit.

Pour chaque formation, inclut le pourcentage de complétion calculé à partir des LessonCompletion.

Réponses

200: Opération réussie

401: Non authentifié

GET /v1/student/my-formations
curl -X GET \n  'https://apieclm.appliway.com/api/v1/student/my-formations' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Récupère la liste des formations recommandées pour l'utilisateur.

Algorithme simple basé sur les catégories des formations suivies. Si aucun historique, retourne des formations populaires ou aléatoires.

Réponses

200: Opération réussie

401: Non authentifié

GET /v1/student/recommended-formations
curl -X GET \n  'https://apieclm.appliway.com/api/v1/student/recommended-formations' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Inscrire l'utilisateur à une formation

Crée une inscription pour l'utilisateur connecté à la formation donnée.

Paramètres

NomDansTypeRequisDescription
formation path integer Oui ID de la formation

Réponses

200: Inscription réussie

  • id integer

    ID de la formation

  • title string

    Titre de la formation

  • subtitle string

    Sous-titre de la formation

  • short_description string

    Description courte destinée aux cartes et listes

  • slug string

    Slug unique de la formation

  • full_description string

    Description complète de la formation

  • target_audience string

    Public cible de la formation

  • duration string

    Durée estimée de la formation

  • price number

    Prix de la formation

  • difficulte string

    Niveau de difficulté de la formation

  • image_url string

    URL de l'image de couverture

  • video_presentation_url string

    URL de la vidéo de présentation

  • is_published boolean

    Indique si la formation est publiée

  • average_rating number

    Note moyenne de la formation

  • reviews_count integer

    Nombre total d'avis

  • instructor string
  • category string
  • objectives array

    Liste des objectifs de la formation

    Items (FormationObjectiveResource)
    • id integer

      ID de l'objectif

    • formation_id integer

      ID de la formation associée

    • text string

      Description de l'objectif

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • features array

    Liste des avantages de la formation

    Items (FormationFeatureResource)
    • id integer

      ID de la caractéristique

    • formation_id integer

      ID de la formation associée

    • text string

      Description de la caractéristique

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • prerequisites array

    Liste des prérequis de la formation

    Items (FormationPrerequisiteResource)
    • id integer

      ID du prérequis

    • formation_id integer

      ID de la formation associée

    • text string

      Description du prérequis

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • modules array

    Liste des modules de la formation

    Items (ModuleResource)
    • id integer

      ID du module

    • title string

      Titre du module

    • order integer

      Ordre du module dans la formation

    • formation_id integer

      ID de la formation associée

    • lessons array

      Liste des leçons du module

      Items (LessonResource)
      • id integer

        ID de la leçon

      • title string

        Titre de la leçon

      • introduction string

        Introduction de la leçon

      • objectives string

        Objectifs de la leçon

      • module_id integer

        ID du module parent

      • content_blocks array

        Liste des blocs de contenu de la leçon

        Items (ContentBlockResource)
        • id integer

          ID du bloc de contenu

        • lesson_id integer

          ID de la leçon associée

        • order integer

          Ordre du bloc dans la leçon

        • contentable_type string

          Type du contenu polymorphique (e.g., App\\Models\\HeadingBlock)

        • contentable object

          Contenu polymorphique du bloc

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • resources array

        Liste des ressources téléchargeables de la leçon

        Items (ResourceResource)
        • id integer

          ID de la ressource

        • name string

          Nom lisible de la ressource

        • file_name string

          Nom d'origine du fichier

        • file_extension string

          Extension du fichier (ex: pdf)

        • mime_type string

          Type MIME détecté

        • file_size integer

          Taille du fichier en octets

        • disk string

          Disque de stockage utilisé

        • file_path string

          URL directe ou temporisée (alias de download_url)

        • download_url string

          URL directe ou temporisée vers la ressource

        • expires_at string

          Date d'expiration du lien si privé

        • lesson_id integer

          ID de la leçon associée

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • quizzes array

      Liste des quiz du module

      Items (QuizResource)
      • id integer

        ID du quiz

      • name string

        Nom du quiz

      • is_passed boolean

        Indique si le quiz a été réussi

      • module_id integer

        ID du module associé

      • questions array

        Liste des questions du quiz

        Items (QuestionResource)
        • id integer

          ID de la question

        • text string

          Texte de la question

        • quiz_id integer

          ID du quiz associé

        • answers array

          Liste des réponses possibles pour la question

          Items (AnswerResource)
          • id integer

            ID de la réponse

          • text string

            Texte de la réponse

          • is_correct boolean

            Indique si la réponse est correcte

          • question_id integer

            ID de la question associée

          • created_at string

            Date de création

          • updated_at string

            Date de dernière mise à jour

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

400: Déjà inscrit ou formation introuvable

POST /v1/student/formations/{formation}/enroll
curl -X POST \n  'https://apieclm.appliway.com/api/v1/student/formations/{formation}/enroll' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "title": "",
    "subtitle": "",
    "short_description": "",
    "slug": "",
    "full_description": "",
    "target_audience": "",
    "duration": "",
    "price": "",
    "difficulte": "",
    "image_url": "",
    "video_presentation_url": "",
    "is_published": false,
    "average_rating": "",
    "reviews_count": 1,
    "instructor": "",
    "category": "",
    "objectives": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "features": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "prerequisites": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "modules": [
        {
            "id": 1,
            "title": "",
            "order": 1,
            "formation_id": 1,
            "lessons": [
                {
                    "id": 1,
                    "title": "",
                    "introduction": "",
                    "objectives": "",
                    "module_id": 1,
                    "content_blocks": [
                        {
                            "id": 1,
                            "lesson_id": 1,
                            "order": 1,
                            "contentable_type": "",
                            "contentable": [],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "resources": [
                        {
                            "id": 1,
                            "name": "",
                            "file_name": "",
                            "file_extension": "",
                            "mime_type": "",
                            "file_size": 1,
                            "disk": "",
                            "file_path": "",
                            "download_url": "",
                            "expires_at": "",
                            "lesson_id": 1,
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "quizzes": [
                {
                    "id": 1,
                    "name": "",
                    "is_passed": false,
                    "module_id": 1,
                    "questions": [
                        {
                            "id": 1,
                            "text": "",
                            "quiz_id": 1,
                            "answers": [
                                {
                                    "id": 1,
                                    "text": "",
                                    "is_correct": false,
                                    "question_id": 1,
                                    "created_at": "",
                                    "updated_at": ""
                                }
                            ],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Espace Apprenant - Profil

Récupère le profil complet de l'étudiant connecté

Réponses

200: Profil récupéré avec succès

  • success boolean
  • data object

401: Non authentifié

GET /v1/student/profile
curl -X GET \n  'https://apieclm.appliway.com/api/v1/student/profile' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "success": true,
    "data": {
        "identity": {
            "firstName": "Fadeilou",
            "lastName": "Alassane",
            "birthDate": "1990-01-15",
            "gender": "male",
            "hasCivilLiabilityInsurance": true,
            "profilePicture": "https:\/\/api.example.com\/uploads\/profile-123.jpg"
        },
        "contact": {
            "email": "afadeilou@gmail.com",
            "phone": "+33612345678",
            "address": {
                "street": "123 Rue de la R\u00e9publique",
                "additionalInfo": "Appartement 4B",
                "city": "Paris",
                "zipCode": "75001",
                "country": "France"
            }
        },
        "profileCompletionPercentage": 85
    }
}

Met à jour les informations d'identité de l'étudiant

Corps de la requête

  • firstName string
  • lastName string
  • birthDate string
  • gender string
  • hasCivilLiabilityInsurance boolean

Réponses

200: Identité mise à jour avec succès

422: Erreur de validation

PATCH /v1/student/profile/identity
curl -X PATCH \n  'https://apieclm.appliway.com/api/v1/student/profile/identity' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "firstName": "Nouveau Pr\u00e9nom",
    "lastName": "Nouveau Nom",
    "birthDate": "1990-01-15",
    "gender": "",
    "hasCivilLiabilityInsurance": true
}'
Réponse
{}

Met à jour les informations de contact de l'étudiant

Corps de la requête

  • phone string
  • address object

Réponses

200: Contact mis à jour avec succès

PATCH /v1/student/profile/contact
curl -X PATCH \n  'https://apieclm.appliway.com/api/v1/student/profile/contact' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "phone": "+33687654321",
    "address": {
        "street": "456 Avenue des Champs",
        "additionalInfo": "Appartement 2A",
        "city": "Lyon",
        "zipCode": "69000",
        "country": "France"
    }
}'
Réponse
{}

Met à jour la photo de profil

Réponses

200: Photo de profil mise à jour avec succès

POST /v1/student/profile/picture
curl -X POST \n  'https://apieclm.appliway.com/api/v1/student/profile/picture' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Met à jour les informations professionnelles

Corps de la requête

  • situation string
  • objectives array
    Items (Inline Object)
  • skills array
    Items (Inline Object)

Réponses

200: Informations professionnelles mises à jour

PATCH /v1/student/profile/professional
curl -X PATCH \n  'https://apieclm.appliway.com/api/v1/student/profile/professional' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "situation": "\u00c9tudiant",
    "objectives": [
        "D\u00e9veloppement web",
        "IA"
    ],
    "skills": [
        "JavaScript",
        "Python"
    ]
}'
Réponse
{}

Met à jour le statut et les allocations

Corps de la requête

  • statuses array
    Items (Inline Object)
  • allowances array
    Items (Inline Object)

Réponses

200: Statut mis à jour avec succès

PATCH /v1/student/profile/status
curl -X PATCH \n  'https://apieclm.appliway.com/api/v1/student/profile/status' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "statuses": [
        "\u00c9tudiant"
    ],
    "allowances": [
        "Bourse d'\u00e9tudes"
    ]
}'
Réponse
{}

Espace Apprenant - Lecteur de Cours

Indique qu'une leçon n'est plus terminée (supprime LessonCompletion)

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la leçon à dé-marquer

Réponses

200: Leçon indiquée comme non terminée.

  • message string

401: Non authentifié

POST /v1/student/lessons/{id}/incomplete
curl -X POST \n  'https://apieclm.appliway.com/api/v1/student/lessons/{id}/incomplete' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "message": "Lesson marked as incomplete."
}

Récupère la structure complète (modules, leçons) d'une formation à laquelle l'utilisateur a accès.

Pour chaque leçon, indique si elle est complétée (LessonCompletion).

Paramètres

NomDansTypeRequisDescription
slug path string Oui Slug de la formation

Réponses

200: Opération réussie

  • id integer

    ID de la formation

  • title string

    Titre de la formation

  • subtitle string

    Sous-titre de la formation

  • short_description string

    Description courte destinée aux cartes et listes

  • slug string

    Slug unique de la formation

  • full_description string

    Description complète de la formation

  • target_audience string

    Public cible de la formation

  • duration string

    Durée estimée de la formation

  • price number

    Prix de la formation

  • difficulte string

    Niveau de difficulté de la formation

  • image_url string

    URL de l'image de couverture

  • video_presentation_url string

    URL de la vidéo de présentation

  • is_published boolean

    Indique si la formation est publiée

  • average_rating number

    Note moyenne de la formation

  • reviews_count integer

    Nombre total d'avis

  • instructor string
  • category string
  • objectives array

    Liste des objectifs de la formation

    Items (FormationObjectiveResource)
    • id integer

      ID de l'objectif

    • formation_id integer

      ID de la formation associée

    • text string

      Description de l'objectif

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • features array

    Liste des avantages de la formation

    Items (FormationFeatureResource)
    • id integer

      ID de la caractéristique

    • formation_id integer

      ID de la formation associée

    • text string

      Description de la caractéristique

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • prerequisites array

    Liste des prérequis de la formation

    Items (FormationPrerequisiteResource)
    • id integer

      ID du prérequis

    • formation_id integer

      ID de la formation associée

    • text string

      Description du prérequis

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • modules array

    Liste des modules de la formation

    Items (ModuleResource)
    • id integer

      ID du module

    • title string

      Titre du module

    • order integer

      Ordre du module dans la formation

    • formation_id integer

      ID de la formation associée

    • lessons array

      Liste des leçons du module

      Items (LessonResource)
      • id integer

        ID de la leçon

      • title string

        Titre de la leçon

      • introduction string

        Introduction de la leçon

      • objectives string

        Objectifs de la leçon

      • module_id integer

        ID du module parent

      • content_blocks array

        Liste des blocs de contenu de la leçon

        Items (ContentBlockResource)
        • id integer

          ID du bloc de contenu

        • lesson_id integer

          ID de la leçon associée

        • order integer

          Ordre du bloc dans la leçon

        • contentable_type string

          Type du contenu polymorphique (e.g., App\\Models\\HeadingBlock)

        • contentable object

          Contenu polymorphique du bloc

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • resources array

        Liste des ressources téléchargeables de la leçon

        Items (ResourceResource)
        • id integer

          ID de la ressource

        • name string

          Nom lisible de la ressource

        • file_name string

          Nom d'origine du fichier

        • file_extension string

          Extension du fichier (ex: pdf)

        • mime_type string

          Type MIME détecté

        • file_size integer

          Taille du fichier en octets

        • disk string

          Disque de stockage utilisé

        • file_path string

          URL directe ou temporisée (alias de download_url)

        • download_url string

          URL directe ou temporisée vers la ressource

        • expires_at string

          Date d'expiration du lien si privé

        • lesson_id integer

          ID de la leçon associée

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • quizzes array

      Liste des quiz du module

      Items (QuizResource)
      • id integer

        ID du quiz

      • name string

        Nom du quiz

      • is_passed boolean

        Indique si le quiz a été réussi

      • module_id integer

        ID du module associé

      • questions array

        Liste des questions du quiz

        Items (QuestionResource)
        • id integer

          ID de la question

        • text string

          Texte de la question

        • quiz_id integer

          ID du quiz associé

        • answers array

          Liste des réponses possibles pour la question

          Items (AnswerResource)
          • id integer

            ID de la réponse

          • text string

            Texte de la réponse

          • is_correct boolean

            Indique si la réponse est correcte

          • question_id integer

            ID de la question associée

          • created_at string

            Date de création

          • updated_at string

            Date de dernière mise à jour

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - L'utilisateur n'est pas inscrit à cette formation

404: Formation non trouvée

GET /v1/student/formations/{slug}/player
curl -X GET \n  'https://apieclm.appliway.com/api/v1/student/formations/{slug}/player' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "title": "",
    "subtitle": "",
    "short_description": "",
    "slug": "",
    "full_description": "",
    "target_audience": "",
    "duration": "",
    "price": "",
    "difficulte": "",
    "image_url": "",
    "video_presentation_url": "",
    "is_published": false,
    "average_rating": "",
    "reviews_count": 1,
    "instructor": "",
    "category": "",
    "objectives": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "features": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "prerequisites": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "modules": [
        {
            "id": 1,
            "title": "",
            "order": 1,
            "formation_id": 1,
            "lessons": [
                {
                    "id": 1,
                    "title": "",
                    "introduction": "",
                    "objectives": "",
                    "module_id": 1,
                    "content_blocks": [
                        {
                            "id": 1,
                            "lesson_id": 1,
                            "order": 1,
                            "contentable_type": "",
                            "contentable": [],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "resources": [
                        {
                            "id": 1,
                            "name": "",
                            "file_name": "",
                            "file_extension": "",
                            "mime_type": "",
                            "file_size": 1,
                            "disk": "",
                            "file_path": "",
                            "download_url": "",
                            "expires_at": "",
                            "lesson_id": 1,
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "quizzes": [
                {
                    "id": 1,
                    "name": "",
                    "is_passed": false,
                    "module_id": 1,
                    "questions": [
                        {
                            "id": 1,
                            "text": "",
                            "quiz_id": 1,
                            "answers": [
                                {
                                    "id": 1,
                                    "text": "",
                                    "is_correct": false,
                                    "question_id": 1,
                                    "created_at": "",
                                    "updated_at": ""
                                }
                            ],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Récupère le contenu détaillé d'une leçon.

Vérifie que l'utilisateur est bien inscrit à la formation parente.

Réponses

200: Opération réussie

  • id integer

    ID de la leçon

  • title string

    Titre de la leçon

  • introduction string

    Introduction de la leçon

  • objectives string

    Objectifs de la leçon

  • module_id integer

    ID du module parent

  • content_blocks array

    Liste des blocs de contenu de la leçon

    Items (ContentBlockResource)
    • id integer

      ID du bloc de contenu

    • lesson_id integer

      ID de la leçon associée

    • order integer

      Ordre du bloc dans la leçon

    • contentable_type string

      Type du contenu polymorphique (e.g., App\\Models\\HeadingBlock)

    • contentable object

      Contenu polymorphique du bloc

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • resources array

    Liste des ressources téléchargeables de la leçon

    Items (ResourceResource)
    • id integer

      ID de la ressource

    • name string

      Nom lisible de la ressource

    • file_name string

      Nom d'origine du fichier

    • file_extension string

      Extension du fichier (ex: pdf)

    • mime_type string

      Type MIME détecté

    • file_size integer

      Taille du fichier en octets

    • disk string

      Disque de stockage utilisé

    • file_path string

      URL directe ou temporisée (alias de download_url)

    • download_url string

      URL directe ou temporisée vers la ressource

    • expires_at string

      Date d'expiration du lien si privé

    • lesson_id integer

      ID de la leçon associée

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - L'utilisateur n'est pas inscrit à la formation parente

404: Leçon non trouvée

GET /v1/student/lessons/{id}/content
curl -X GET \n  'https://apieclm.appliway.com/api/v1/student/lessons/{id}/content' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "title": "",
    "introduction": "",
    "objectives": "",
    "module_id": 1,
    "content_blocks": [
        {
            "id": 1,
            "lesson_id": 1,
            "order": 1,
            "contentable_type": "",
            "contentable": [],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "resources": [
        {
            "id": 1,
            "name": "",
            "file_name": "",
            "file_extension": "",
            "mime_type": "",
            "file_size": 1,
            "disk": "",
            "file_path": "",
            "download_url": "",
            "expires_at": "",
            "lesson_id": 1,
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Marque une leçon comme (terminée).

Crée une entrée dans LessonCompletion. Met à jour la progression et retourne l'ID de la leçon suivante pour une navigation fluide.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la leçon à marquer comme terminée

Réponses

200: Leçon marquée comme terminée.

  • message string
  • next_lesson_id integer

401: Non authentifié

403: Accès refusé - L'utilisateur n'est pas autorisé à compléter cette leçon

404: Leçon non trouvée

POST /v1/student/lessons/{id}/complete
curl -X POST \n  'https://apieclm.appliway.com/api/v1/student/lessons/{id}/complete' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "message": "Lesson marked as completed.",
    "next_lesson_id": 2
}

Récupère les questions et les options de réponse (sans la bonne réponse) d'un quiz.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID du quiz

Réponses

200: Opération réussie

  • id integer

    ID du quiz

  • name string

    Nom du quiz

  • is_passed boolean

    Indique si le quiz a été réussi

  • module_id integer

    ID du module associé

  • questions array

    Liste des questions du quiz

    Items (QuestionResource)
    • id integer

      ID de la question

    • text string

      Texte de la question

    • quiz_id integer

      ID du quiz associé

    • answers array

      Liste des réponses possibles pour la question

      Items (AnswerResource)
      • id integer

        ID de la réponse

      • text string

        Texte de la réponse

      • is_correct boolean

        Indique si la réponse est correcte

      • question_id integer

        ID de la question associée

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - L'utilisateur n'est pas inscrit à la formation parente

404: Quiz non trouvé

GET /v1/student/quizzes/{id}
curl -X GET \n  'https://apieclm.appliway.com/api/v1/student/quizzes/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "name": "",
    "is_passed": false,
    "module_id": 1,
    "questions": [
        {
            "id": 1,
            "text": "",
            "quiz_id": 1,
            "answers": [
                {
                    "id": 1,
                    "text": "",
                    "is_correct": false,
                    "question_id": 1,
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Soumet les réponses de l'utilisateur pour un quiz.

La route calcule le score et le retourne, en indiquant les bonnes et mauvaises réponses.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID du quiz

Corps de la requête

  • answers array
    Items (Inline Object)
    • question_id integer
    • answer_id integer

Réponses

200: Quiz soumis avec succès.

  • message string
  • score integer
  • total_questions integer
  • results array
    Items (Inline Object)
    • question_id integer
    • submitted_answer_id integer
    • is_correct boolean
    • correct_answer_id integer

401: Non authentifié

403: Accès refusé - L'utilisateur n'est pas inscrit à la formation parente

404: Quiz non trouvé

422: Erreurs de validation

POST /v1/student/quizzes/{id}/submit
curl -X POST \n  'https://apieclm.appliway.com/api/v1/student/quizzes/{id}/submit' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "answers": [
        {
            "question_id": 1,
            "answer_id": 1
        }
    ]
}'
Réponse
{
    "message": "Quiz submitted successfully.",
    "score": 2,
    "total_questions": 3,
    "results": [
        {
            "question_id": 1,
            "submitted_answer_id": 1,
            "is_correct": true,
            "correct_answer_id": 1
        }
    ]
}

Espace Apprenant - Avis

Soumet un avis pour une formation.

Permet à un apprenant authentifié de laisser une note et un commentaire pour une formation.

Paramètres

NomDansTypeRequisDescription
formation_id path integer Oui ID de la formation pour laquelle l'avis est soumis

Corps de la requête

  • rating integer
  • comment string

Réponses

201: Avis soumis avec succès

  • id integer

    ID de l'avis

  • rating integer

    Note donnée (1-5)

  • comment string

    Commentaire de l'avis

  • user_id integer

    ID de l'utilisateur qui a laissé l'avis

  • country string

    Pays de l'auteur de l'avis

  • formation_id integer

    ID de la formation concernée par l'avis

  • created_by_admin boolean

    Indique si l'avis a été créé par un administrateur

  • created_by_admin_id integer

    ID de l'administrateur qui a créé l'avis

  • user string
  • created_by_admin_user string
  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé

404: Formation non trouvée

422: Erreurs de validation

POST /v1/student/formations/{formation_id}/reviews
curl -X POST \n  'https://apieclm.appliway.com/api/v1/student/formations/{formation_id}/reviews' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "rating": 5,
    "comment": "Ce cours est excellent et tr\u00e8s instructif."
}'
Réponse
{
    "id": 1,
    "rating": 1,
    "comment": "",
    "user_id": 1,
    "country": "",
    "formation_id": 1,
    "created_by_admin": false,
    "created_by_admin_id": 1,
    "user": "",
    "created_by_admin_user": "",
    "created_at": "",
    "updated_at": ""
}

Espace Apprenant - Certificats

Récupère la liste de tous les certificats obtenus par l'utilisateur.

Réponses

200: Opération réussie

401: Non authentifié

GET /v1/student/my-certificates
curl -X GET \n  'https://apieclm.appliway.com/api/v1/student/my-certificates' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Télécharge le certificat au format PNG.

Paramètres

NomDansTypeRequisDescription
unique_code path string Oui Code unique du certificat

Réponses

200: Flux binaire PNG du certificat.

404: Certificat non trouvé

GET /v1/certificates/{unique_code}/download
curl -X GET \n  'https://apieclm.appliway.com/api/v1/certificates/{unique_code}/download' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Administration

Administration - Tableau de Bord

Récupère les statistiques clés pour le tableau de bord de l'administrateur.

Réponses

200: Opération réussie

  • revenue object
  • sales object
  • users object
  • formations object
  • recent_enrollments array
    Items (Inline Object)
  • recent_orders array
    Items (Inline Object)
  • popular_formations array
    Items (Inline Object)

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

GET /v1/admin/dashboard/stats
curl -X GET \n  'https://apieclm.appliway.com/api/v1/admin/dashboard/stats' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "revenue": {
        "total": ""
    },
    "sales": {
        "total": 1
    },
    "users": {
        "total": 1
    },
    "formations": {
        "total": 1
    },
    "recent_enrollments": [
        []
    ],
    "recent_orders": [
        []
    ],
    "popular_formations": [
        []
    ]
}

Administration - Utilisateurs

Liste tous les utilisateurs avec recherche et filtres (par rôle).

Paramètres

NomDansTypeRequisDescription
role query string Non Filtrer par rôle (APPRENANT, INSTRUCTOR, ADMIN)
search query string Non Rechercher par nom, prénom ou email
sort query string Non Trier la liste (RECENT, NAME_ASC, NAME_DESC)
email_status query string Non Filtrer selon l'état de vérification de l'email (VERIFIED, UNVERIFIED)

Réponses

200: Opération réussie

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

GET /v1/admin/users
curl -X GET \n  'https://apieclm.appliway.com/api/v1/admin/users' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Crée un nouvel utilisateur (Admin).

Corps de la requête

  • first_name string
  • last_name string
  • email string
  • password string
  • password_confirmation string
  • role string

Réponses

201: Utilisateur créé avec succès

  • id integer

    ID de l'utilisateur

  • first_name string

    Prénom de l'utilisateur

  • last_name string

    Nom de l'utilisateur

  • email string

    Adresse email de l'utilisateur

  • role string

    Rôle de l'utilisateur

  • created_at string

    Date de création

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

POST /v1/admin/users
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/users' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "password": "password",
    "password_confirmation": "password",
    "role": "APPRENANT"
}'
Réponse
{
    "id": 1,
    "first_name": "",
    "last_name": "",
    "email": "",
    "role": "",
    "created_at": ""
}

Récupère les détails d'un utilisateur, incluant son historique d'achats et sa progression.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de l'utilisateur

Réponses

200: Opération réussie

  • id integer

    ID de l'utilisateur

  • first_name string

    Prénom de l'utilisateur

  • last_name string

    Nom de l'utilisateur

  • email string

    Adresse email de l'utilisateur

  • role string

    Rôle de l'utilisateur

  • created_at string

    Date de création

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Utilisateur non trouvé

GET /v1/admin/users/{id}
curl -X GET \n  'https://apieclm.appliway.com/api/v1/admin/users/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "first_name": "",
    "last_name": "",
    "email": "",
    "role": "",
    "created_at": ""
}

Met à jour un utilisateur (Admin).

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de l'utilisateur à mettre à jour

Corps de la requête

  • first_name string
  • last_name string
  • email string
  • password string
  • password_confirmation string
  • role string

Réponses

200: Utilisateur mis à jour avec succès

  • id integer

    ID de l'utilisateur

  • first_name string

    Prénom de l'utilisateur

  • last_name string

    Nom de l'utilisateur

  • email string

    Adresse email de l'utilisateur

  • role string

    Rôle de l'utilisateur

  • created_at string

    Date de création

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Utilisateur non trouvé

422: Erreurs de validation

PUT /v1/admin/users/{id}
curl -X PUT \n  'https://apieclm.appliway.com/api/v1/admin/users/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "first_name": "Jane",
    "last_name": "Doe",
    "email": "jane.doe@example.com",
    "password": "new_password",
    "password_confirmation": "new_password",
    "role": "INSTRUCTOR"
}'
Réponse
{
    "id": 1,
    "first_name": "",
    "last_name": "",
    "email": "",
    "role": "",
    "created_at": ""
}

Supprime un utilisateur.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de l'utilisateur à supprimer

Réponses

204: Utilisateur supprimé avec succès

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Utilisateur non trouvé

DELETE /v1/admin/users/{id}
curl -X DELETE \n  'https://apieclm.appliway.com/api/v1/admin/users/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Inscrit manuellement un utilisateur à une formation.

Paramètres

NomDansTypeRequisDescription
user_id path integer Oui ID de l'utilisateur à inscrire

Corps de la requête

  • formation_id integer

Réponses

201: Utilisateur inscrit avec succès

  • message string
  • enrollment object

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

409: Conflit - Utilisateur déjà inscrit à cette formation

  • message string

422: Erreurs de validation

POST /v1/admin/users/{user_id}/enrollments
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/users/{user_id}/enrollments' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "formation_id": 1
}'
Réponse
{
    "message": "User enrolled successfully.",
    "enrollment": []
}

Désinscrit un utilisateur d'une formation.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de l'inscription à désinscrire

Réponses

204: Désinscription réussie

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Inscription non trouvée

DELETE /v1/admin/enrollments/{id}
curl -X DELETE \n  'https://apieclm.appliway.com/api/v1/admin/enrollments/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Administration - Formations

Liste toutes les formations (publiées et non publiées).

Réponses

200: Opération réussie

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

GET /v1/admin/formations
curl -X GET \n  'https://apieclm.appliway.com/api/v1/admin/formations' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Crée une nouvelle formation.

Corps de la requête

  • title string
  • subtitle string
  • short_description string
  • slug string
  • full_description string
  • target_audience string
  • duration string
  • price number
  • image_url string
  • video_presentation_url string
  • is_published boolean
  • testimonial_images array

    Jusqu'à 6 captures ou visuels de témoignages

    Items (Inline Object)
  • instructor_ids array
    Items (Inline Object)
  • category_id integer
  • currency string

Réponses

201: Formation créée avec succès

  • id integer

    ID de la formation

  • title string

    Titre de la formation

  • subtitle string

    Sous-titre de la formation

  • short_description string

    Description courte destinée aux cartes et listes

  • slug string

    Slug unique de la formation

  • full_description string

    Description complète de la formation

  • target_audience string

    Public cible de la formation

  • duration string

    Durée estimée de la formation

  • price number

    Prix de la formation

  • difficulte string

    Niveau de difficulté de la formation

  • image_url string

    URL de l'image de couverture

  • video_presentation_url string

    URL de la vidéo de présentation

  • is_published boolean

    Indique si la formation est publiée

  • average_rating number

    Note moyenne de la formation

  • reviews_count integer

    Nombre total d'avis

  • instructor string
  • category string
  • objectives array

    Liste des objectifs de la formation

    Items (FormationObjectiveResource)
    • id integer

      ID de l'objectif

    • formation_id integer

      ID de la formation associée

    • text string

      Description de l'objectif

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • features array

    Liste des avantages de la formation

    Items (FormationFeatureResource)
    • id integer

      ID de la caractéristique

    • formation_id integer

      ID de la formation associée

    • text string

      Description de la caractéristique

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • prerequisites array

    Liste des prérequis de la formation

    Items (FormationPrerequisiteResource)
    • id integer

      ID du prérequis

    • formation_id integer

      ID de la formation associée

    • text string

      Description du prérequis

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • modules array

    Liste des modules de la formation

    Items (ModuleResource)
    • id integer

      ID du module

    • title string

      Titre du module

    • order integer

      Ordre du module dans la formation

    • formation_id integer

      ID de la formation associée

    • lessons array

      Liste des leçons du module

      Items (LessonResource)
      • id integer

        ID de la leçon

      • title string

        Titre de la leçon

      • introduction string

        Introduction de la leçon

      • objectives string

        Objectifs de la leçon

      • module_id integer

        ID du module parent

      • content_blocks array

        Liste des blocs de contenu de la leçon

        Items (ContentBlockResource)
        • id integer

          ID du bloc de contenu

        • lesson_id integer

          ID de la leçon associée

        • order integer

          Ordre du bloc dans la leçon

        • contentable_type string

          Type du contenu polymorphique (e.g., App\\Models\\HeadingBlock)

        • contentable object

          Contenu polymorphique du bloc

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • resources array

        Liste des ressources téléchargeables de la leçon

        Items (ResourceResource)
        • id integer

          ID de la ressource

        • name string

          Nom lisible de la ressource

        • file_name string

          Nom d'origine du fichier

        • file_extension string

          Extension du fichier (ex: pdf)

        • mime_type string

          Type MIME détecté

        • file_size integer

          Taille du fichier en octets

        • disk string

          Disque de stockage utilisé

        • file_path string

          URL directe ou temporisée (alias de download_url)

        • download_url string

          URL directe ou temporisée vers la ressource

        • expires_at string

          Date d'expiration du lien si privé

        • lesson_id integer

          ID de la leçon associée

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • quizzes array

      Liste des quiz du module

      Items (QuizResource)
      • id integer

        ID du quiz

      • name string

        Nom du quiz

      • is_passed boolean

        Indique si le quiz a été réussi

      • module_id integer

        ID du module associé

      • questions array

        Liste des questions du quiz

        Items (QuestionResource)
        • id integer

          ID de la question

        • text string

          Texte de la question

        • quiz_id integer

          ID du quiz associé

        • answers array

          Liste des réponses possibles pour la question

          Items (AnswerResource)
          • id integer

            ID de la réponse

          • text string

            Texte de la réponse

          • is_correct boolean

            Indique si la réponse est correcte

          • question_id integer

            ID de la question associée

          • created_at string

            Date de création

          • updated_at string

            Date de dernière mise à jour

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

POST /v1/admin/formations
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/formations' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "title": "Ma Nouvelle Formation",
    "subtitle": "Sous-titre de la formation",
    "short_description": "R\u00e9sum\u00e9 court pour les cartes.",
    "slug": "ma-nouvelle-formation",
    "full_description": "Description compl\u00e8te de ma nouvelle formation.",
    "target_audience": "D\u00e9butants en d\u00e9veloppement web.",
    "duration": "10 heures",
    "price": 99.99,
    "image_url": "http:\/\/example.com\/image.jpg",
    "video_presentation_url": "http:\/\/example.com\/video.mp4",
    "is_published": false,
    "testimonial_images": [
        []
    ],
    "instructor_ids": [
        1,
        2
    ],
    "category_id": 1,
    "currency": "XOF"
}'
Réponse
{
    "id": 1,
    "title": "",
    "subtitle": "",
    "short_description": "",
    "slug": "",
    "full_description": "",
    "target_audience": "",
    "duration": "",
    "price": "",
    "difficulte": "",
    "image_url": "",
    "video_presentation_url": "",
    "is_published": false,
    "average_rating": "",
    "reviews_count": 1,
    "instructor": "",
    "category": "",
    "objectives": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "features": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "prerequisites": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "modules": [
        {
            "id": 1,
            "title": "",
            "order": 1,
            "formation_id": 1,
            "lessons": [
                {
                    "id": 1,
                    "title": "",
                    "introduction": "",
                    "objectives": "",
                    "module_id": 1,
                    "content_blocks": [
                        {
                            "id": 1,
                            "lesson_id": 1,
                            "order": 1,
                            "contentable_type": "",
                            "contentable": [],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "resources": [
                        {
                            "id": 1,
                            "name": "",
                            "file_name": "",
                            "file_extension": "",
                            "mime_type": "",
                            "file_size": 1,
                            "disk": "",
                            "file_path": "",
                            "download_url": "",
                            "expires_at": "",
                            "lesson_id": 1,
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "quizzes": [
                {
                    "id": 1,
                    "name": "",
                    "is_passed": false,
                    "module_id": 1,
                    "questions": [
                        {
                            "id": 1,
                            "text": "",
                            "quiz_id": 1,
                            "answers": [
                                {
                                    "id": 1,
                                    "text": "",
                                    "is_correct": false,
                                    "question_id": 1,
                                    "created_at": "",
                                    "updated_at": ""
                                }
                            ],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Récupère les données brutes d'une formation pour l'édition.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la formation

Réponses

200: Opération réussie

  • id integer

    ID de la formation

  • title string

    Titre de la formation

  • subtitle string

    Sous-titre de la formation

  • short_description string

    Description courte destinée aux cartes et listes

  • slug string

    Slug unique de la formation

  • full_description string

    Description complète de la formation

  • target_audience string

    Public cible de la formation

  • duration string

    Durée estimée de la formation

  • price number

    Prix de la formation

  • difficulte string

    Niveau de difficulté de la formation

  • image_url string

    URL de l'image de couverture

  • video_presentation_url string

    URL de la vidéo de présentation

  • is_published boolean

    Indique si la formation est publiée

  • average_rating number

    Note moyenne de la formation

  • reviews_count integer

    Nombre total d'avis

  • instructor string
  • category string
  • objectives array

    Liste des objectifs de la formation

    Items (FormationObjectiveResource)
    • id integer

      ID de l'objectif

    • formation_id integer

      ID de la formation associée

    • text string

      Description de l'objectif

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • features array

    Liste des avantages de la formation

    Items (FormationFeatureResource)
    • id integer

      ID de la caractéristique

    • formation_id integer

      ID de la formation associée

    • text string

      Description de la caractéristique

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • prerequisites array

    Liste des prérequis de la formation

    Items (FormationPrerequisiteResource)
    • id integer

      ID du prérequis

    • formation_id integer

      ID de la formation associée

    • text string

      Description du prérequis

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • modules array

    Liste des modules de la formation

    Items (ModuleResource)
    • id integer

      ID du module

    • title string

      Titre du module

    • order integer

      Ordre du module dans la formation

    • formation_id integer

      ID de la formation associée

    • lessons array

      Liste des leçons du module

      Items (LessonResource)
      • id integer

        ID de la leçon

      • title string

        Titre de la leçon

      • introduction string

        Introduction de la leçon

      • objectives string

        Objectifs de la leçon

      • module_id integer

        ID du module parent

      • content_blocks array

        Liste des blocs de contenu de la leçon

        Items (ContentBlockResource)
        • id integer

          ID du bloc de contenu

        • lesson_id integer

          ID de la leçon associée

        • order integer

          Ordre du bloc dans la leçon

        • contentable_type string

          Type du contenu polymorphique (e.g., App\\Models\\HeadingBlock)

        • contentable object

          Contenu polymorphique du bloc

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • resources array

        Liste des ressources téléchargeables de la leçon

        Items (ResourceResource)
        • id integer

          ID de la ressource

        • name string

          Nom lisible de la ressource

        • file_name string

          Nom d'origine du fichier

        • file_extension string

          Extension du fichier (ex: pdf)

        • mime_type string

          Type MIME détecté

        • file_size integer

          Taille du fichier en octets

        • disk string

          Disque de stockage utilisé

        • file_path string

          URL directe ou temporisée (alias de download_url)

        • download_url string

          URL directe ou temporisée vers la ressource

        • expires_at string

          Date d'expiration du lien si privé

        • lesson_id integer

          ID de la leçon associée

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • quizzes array

      Liste des quiz du module

      Items (QuizResource)
      • id integer

        ID du quiz

      • name string

        Nom du quiz

      • is_passed boolean

        Indique si le quiz a été réussi

      • module_id integer

        ID du module associé

      • questions array

        Liste des questions du quiz

        Items (QuestionResource)
        • id integer

          ID de la question

        • text string

          Texte de la question

        • quiz_id integer

          ID du quiz associé

        • answers array

          Liste des réponses possibles pour la question

          Items (AnswerResource)
          • id integer

            ID de la réponse

          • text string

            Texte de la réponse

          • is_correct boolean

            Indique si la réponse est correcte

          • question_id integer

            ID de la question associée

          • created_at string

            Date de création

          • updated_at string

            Date de dernière mise à jour

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Formation non trouvée

GET /v1/admin/formations/{id}
curl -X GET \n  'https://apieclm.appliway.com/api/v1/admin/formations/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "title": "",
    "subtitle": "",
    "short_description": "",
    "slug": "",
    "full_description": "",
    "target_audience": "",
    "duration": "",
    "price": "",
    "difficulte": "",
    "image_url": "",
    "video_presentation_url": "",
    "is_published": false,
    "average_rating": "",
    "reviews_count": 1,
    "instructor": "",
    "category": "",
    "objectives": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "features": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "prerequisites": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "modules": [
        {
            "id": 1,
            "title": "",
            "order": 1,
            "formation_id": 1,
            "lessons": [
                {
                    "id": 1,
                    "title": "",
                    "introduction": "",
                    "objectives": "",
                    "module_id": 1,
                    "content_blocks": [
                        {
                            "id": 1,
                            "lesson_id": 1,
                            "order": 1,
                            "contentable_type": "",
                            "contentable": [],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "resources": [
                        {
                            "id": 1,
                            "name": "",
                            "file_name": "",
                            "file_extension": "",
                            "mime_type": "",
                            "file_size": 1,
                            "disk": "",
                            "file_path": "",
                            "download_url": "",
                            "expires_at": "",
                            "lesson_id": 1,
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "quizzes": [
                {
                    "id": 1,
                    "name": "",
                    "is_passed": false,
                    "module_id": 1,
                    "questions": [
                        {
                            "id": 1,
                            "text": "",
                            "quiz_id": 1,
                            "answers": [
                                {
                                    "id": 1,
                                    "text": "",
                                    "is_correct": false,
                                    "question_id": 1,
                                    "created_at": "",
                                    "updated_at": ""
                                }
                            ],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Met à jour une formation.

Utilise POST avec _method=PUT pour gérer les fichiers multipart/form-data comme les images.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la formation à mettre à jour

Corps de la requête

  • title string
  • subtitle string
  • short_description string
  • slug string
  • full_description string
  • target_audience string
  • duration string
  • price number
  • image_url string
  • video_presentation_url string
  • is_published boolean
  • testimonial_images array

    Jusqu'à 6 captures ou visuels de témoignages

    Items (Inline Object)
  • instructor_ids array
    Items (Inline Object)
  • category_id integer
  • currency string

Réponses

200: Formation mise à jour avec succès

  • id integer

    ID de la formation

  • title string

    Titre de la formation

  • subtitle string

    Sous-titre de la formation

  • short_description string

    Description courte destinée aux cartes et listes

  • slug string

    Slug unique de la formation

  • full_description string

    Description complète de la formation

  • target_audience string

    Public cible de la formation

  • duration string

    Durée estimée de la formation

  • price number

    Prix de la formation

  • difficulte string

    Niveau de difficulté de la formation

  • image_url string

    URL de l'image de couverture

  • video_presentation_url string

    URL de la vidéo de présentation

  • is_published boolean

    Indique si la formation est publiée

  • average_rating number

    Note moyenne de la formation

  • reviews_count integer

    Nombre total d'avis

  • instructor string
  • category string
  • objectives array

    Liste des objectifs de la formation

    Items (FormationObjectiveResource)
    • id integer

      ID de l'objectif

    • formation_id integer

      ID de la formation associée

    • text string

      Description de l'objectif

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • features array

    Liste des avantages de la formation

    Items (FormationFeatureResource)
    • id integer

      ID de la caractéristique

    • formation_id integer

      ID de la formation associée

    • text string

      Description de la caractéristique

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • prerequisites array

    Liste des prérequis de la formation

    Items (FormationPrerequisiteResource)
    • id integer

      ID du prérequis

    • formation_id integer

      ID de la formation associée

    • text string

      Description du prérequis

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • modules array

    Liste des modules de la formation

    Items (ModuleResource)
    • id integer

      ID du module

    • title string

      Titre du module

    • order integer

      Ordre du module dans la formation

    • formation_id integer

      ID de la formation associée

    • lessons array

      Liste des leçons du module

      Items (LessonResource)
      • id integer

        ID de la leçon

      • title string

        Titre de la leçon

      • introduction string

        Introduction de la leçon

      • objectives string

        Objectifs de la leçon

      • module_id integer

        ID du module parent

      • content_blocks array

        Liste des blocs de contenu de la leçon

        Items (ContentBlockResource)
        • id integer

          ID du bloc de contenu

        • lesson_id integer

          ID de la leçon associée

        • order integer

          Ordre du bloc dans la leçon

        • contentable_type string

          Type du contenu polymorphique (e.g., App\\Models\\HeadingBlock)

        • contentable object

          Contenu polymorphique du bloc

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • resources array

        Liste des ressources téléchargeables de la leçon

        Items (ResourceResource)
        • id integer

          ID de la ressource

        • name string

          Nom lisible de la ressource

        • file_name string

          Nom d'origine du fichier

        • file_extension string

          Extension du fichier (ex: pdf)

        • mime_type string

          Type MIME détecté

        • file_size integer

          Taille du fichier en octets

        • disk string

          Disque de stockage utilisé

        • file_path string

          URL directe ou temporisée (alias de download_url)

        • download_url string

          URL directe ou temporisée vers la ressource

        • expires_at string

          Date d'expiration du lien si privé

        • lesson_id integer

          ID de la leçon associée

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • quizzes array

      Liste des quiz du module

      Items (QuizResource)
      • id integer

        ID du quiz

      • name string

        Nom du quiz

      • is_passed boolean

        Indique si le quiz a été réussi

      • module_id integer

        ID du module associé

      • questions array

        Liste des questions du quiz

        Items (QuestionResource)
        • id integer

          ID de la question

        • text string

          Texte de la question

        • quiz_id integer

          ID du quiz associé

        • answers array

          Liste des réponses possibles pour la question

          Items (AnswerResource)
          • id integer

            ID de la réponse

          • text string

            Texte de la réponse

          • is_correct boolean

            Indique si la réponse est correcte

          • question_id integer

            ID de la question associée

          • created_at string

            Date de création

          • updated_at string

            Date de dernière mise à jour

        • created_at string

          Date de création

        • updated_at string

          Date de dernière mise à jour

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Formation non trouvée

422: Erreurs de validation

POST /v1/admin/formations/{id}
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/formations/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "title": "Ma Formation Mise \u00e0 Jour",
    "subtitle": "Sous-titre mis \u00e0 jour",
    "short_description": "R\u00e9sum\u00e9 court pour les cartes.",
    "slug": "ma-formation-mise-a-jour",
    "full_description": "Description compl\u00e8te mise \u00e0 jour.",
    "target_audience": "Public avanc\u00e9.",
    "duration": "20 heures",
    "price": 149.99,
    "image_url": "http:\/\/example.com\/image_updated.jpg",
    "video_presentation_url": "http:\/\/example.com\/video_updated.mp4",
    "is_published": true,
    "testimonial_images": [
        []
    ],
    "instructor_ids": [
        1,
        3
    ],
    "category_id": 2,
    "currency": "XOF"
}'
Réponse
{
    "id": 1,
    "title": "",
    "subtitle": "",
    "short_description": "",
    "slug": "",
    "full_description": "",
    "target_audience": "",
    "duration": "",
    "price": "",
    "difficulte": "",
    "image_url": "",
    "video_presentation_url": "",
    "is_published": false,
    "average_rating": "",
    "reviews_count": 1,
    "instructor": "",
    "category": "",
    "objectives": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "features": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "prerequisites": [
        {
            "id": 1,
            "formation_id": 1,
            "text": "",
            "created_at": "",
            "updated_at": ""
        }
    ],
    "modules": [
        {
            "id": 1,
            "title": "",
            "order": 1,
            "formation_id": 1,
            "lessons": [
                {
                    "id": 1,
                    "title": "",
                    "introduction": "",
                    "objectives": "",
                    "module_id": 1,
                    "content_blocks": [
                        {
                            "id": 1,
                            "lesson_id": 1,
                            "order": 1,
                            "contentable_type": "",
                            "contentable": [],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "resources": [
                        {
                            "id": 1,
                            "name": "",
                            "file_name": "",
                            "file_extension": "",
                            "mime_type": "",
                            "file_size": 1,
                            "disk": "",
                            "file_path": "",
                            "download_url": "",
                            "expires_at": "",
                            "lesson_id": 1,
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "quizzes": [
                {
                    "id": 1,
                    "name": "",
                    "is_passed": false,
                    "module_id": 1,
                    "questions": [
                        {
                            "id": 1,
                            "text": "",
                            "quiz_id": 1,
                            "answers": [
                                {
                                    "id": 1,
                                    "text": "",
                                    "is_correct": false,
                                    "question_id": 1,
                                    "created_at": "",
                                    "updated_at": ""
                                }
                            ],
                            "created_at": "",
                            "updated_at": ""
                        }
                    ],
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Supprime une formation et tout son contenu en cascade.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la formation à supprimer

Réponses

204: Formation supprimée avec succès

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Formation non trouvée

DELETE /v1/admin/formations/{id}
curl -X DELETE \n  'https://apieclm.appliway.com/api/v1/admin/formations/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Administration - Leçons

Crée une nouvelle leçon dans un module.

Paramètres

NomDansTypeRequisDescription
module_id path integer Oui ID du module parent

Corps de la requête

  • title string
  • introduction string
  • objectives string
  • order integer

Réponses

201: Leçon créée avec succès

  • id integer

    ID de la leçon

  • title string

    Titre de la leçon

  • introduction string

    Introduction de la leçon

  • objectives string

    Objectifs de la leçon

  • module_id integer

    ID du module parent

  • content_blocks array

    Liste des blocs de contenu de la leçon

    Items (ContentBlockResource)
    • id integer

      ID du bloc de contenu

    • lesson_id integer

      ID de la leçon associée

    • order integer

      Ordre du bloc dans la leçon

    • contentable_type string

      Type du contenu polymorphique (e.g., App\\Models\\HeadingBlock)

    • contentable object

      Contenu polymorphique du bloc

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • resources array

    Liste des ressources téléchargeables de la leçon

    Items (ResourceResource)
    • id integer

      ID de la ressource

    • name string

      Nom lisible de la ressource

    • file_name string

      Nom d'origine du fichier

    • file_extension string

      Extension du fichier (ex: pdf)

    • mime_type string

      Type MIME détecté

    • file_size integer

      Taille du fichier en octets

    • disk string

      Disque de stockage utilisé

    • file_path string

      URL directe ou temporisée (alias de download_url)

    • download_url string

      URL directe ou temporisée vers la ressource

    • expires_at string

      Date d'expiration du lien si privé

    • lesson_id integer

      ID de la leçon associée

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

POST /v1/admin/modules/{module_id}/lessons
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/modules/{module_id}/lessons' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "title": "Introduction au Marketing Digital",
    "introduction": "Cette le\u00e7on couvre les bases du marketing digital.",
    "objectives": "Comprendre les canaux, identifier les cibles.",
    "order": 0
}'
Réponse
{
    "id": 1,
    "title": "",
    "introduction": "",
    "objectives": "",
    "module_id": 1,
    "content_blocks": [
        {
            "id": 1,
            "lesson_id": 1,
            "order": 1,
            "contentable_type": "",
            "contentable": [],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "resources": [
        {
            "id": 1,
            "name": "",
            "file_name": "",
            "file_extension": "",
            "mime_type": "",
            "file_size": 1,
            "disk": "",
            "file_path": "",
            "download_url": "",
            "expires_at": "",
            "lesson_id": 1,
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Met à jour les métadonnées d'une leçon (titre, intro...).

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la leçon à mettre à jour

Corps de la requête

  • title string
  • introduction string
  • objectives string
  • order integer

Réponses

200: Leçon mise à jour avec succès

  • id integer

    ID de la leçon

  • title string

    Titre de la leçon

  • introduction string

    Introduction de la leçon

  • objectives string

    Objectifs de la leçon

  • module_id integer

    ID du module parent

  • content_blocks array

    Liste des blocs de contenu de la leçon

    Items (ContentBlockResource)
    • id integer

      ID du bloc de contenu

    • lesson_id integer

      ID de la leçon associée

    • order integer

      Ordre du bloc dans la leçon

    • contentable_type string

      Type du contenu polymorphique (e.g., App\\Models\\HeadingBlock)

    • contentable object

      Contenu polymorphique du bloc

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • resources array

    Liste des ressources téléchargeables de la leçon

    Items (ResourceResource)
    • id integer

      ID de la ressource

    • name string

      Nom lisible de la ressource

    • file_name string

      Nom d'origine du fichier

    • file_extension string

      Extension du fichier (ex: pdf)

    • mime_type string

      Type MIME détecté

    • file_size integer

      Taille du fichier en octets

    • disk string

      Disque de stockage utilisé

    • file_path string

      URL directe ou temporisée (alias de download_url)

    • download_url string

      URL directe ou temporisée vers la ressource

    • expires_at string

      Date d'expiration du lien si privé

    • lesson_id integer

      ID de la leçon associée

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Leçon non trouvée

422: Erreurs de validation

PUT /v1/admin/lessons/{id}
curl -X PUT \n  'https://apieclm.appliway.com/api/v1/admin/lessons/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "title": "Introduction au Marketing Digital Avanc\u00e9",
    "introduction": "Cette le\u00e7on approfondit les bases du marketing digital.",
    "objectives": "Ma\u00eetriser les strat\u00e9gies, analyser les performances.",
    "order": 2
}'
Réponse
{
    "id": 1,
    "title": "",
    "introduction": "",
    "objectives": "",
    "module_id": 1,
    "content_blocks": [
        {
            "id": 1,
            "lesson_id": 1,
            "order": 1,
            "contentable_type": "",
            "contentable": [],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "resources": [
        {
            "id": 1,
            "name": "",
            "file_name": "",
            "file_extension": "",
            "mime_type": "",
            "file_size": 1,
            "disk": "",
            "file_path": "",
            "download_url": "",
            "expires_at": "",
            "lesson_id": 1,
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Supprime une leçon.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la leçon à supprimer

Réponses

204: Leçon supprimée avec succès

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Leçon non trouvée

DELETE /v1/admin/lessons/{id}
curl -X DELETE \n  'https://apieclm.appliway.com/api/v1/admin/lessons/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Met à jour l'ordre des leçons dans un module.

Corps de la requête

  • lesson_ids array

    Liste ordonnée des IDs des leçons

    Items (Inline Object)

Réponses

200: Leçons réordonnées avec succès

  • message string

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

PUT /v1/admin/lessons/reorder
curl -X PUT \n  'https://apieclm.appliway.com/api/v1/admin/lessons/reorder' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "lesson_ids": [
        []
    ]
}'
Réponse
{
    "message": "Lessons reordered successfully."
}

Administration - Contenu des Leçons

Crée un nouveau bloc de contenu dans une leçon.

La requête contient le type (TextBlock, ImageBlock...) et les données. Le backend crée l'entrée ContentBlock ET l'entrée dans la table de contenu spécialisée (TextBlock, etc.).

Paramètres

NomDansTypeRequisDescription
lesson_id path integer Oui ID de la leçon parente

Corps de la requête

  • lesson_id integer
  • order integer
  • content_type string
  • content object

    Contenu spécifique au type de bloc

  • level object

    Niveau du titre (pour HeadingBlock)

  • image_url object

    URL de l'image (pour ImageBlock)

  • caption object

    Légende de l'image (pour ImageBlock)

  • alt_text object

    Texte alternatif de l'image (pour ImageBlock)

  • video_url object

    URL de la vidéo (pour VideoBlock)

  • provider object

    Fournisseur de la vidéo (pour VideoBlock)

  • code object

    Contenu du code (pour CodeBlock)

  • language object

    Langage du code (pour CodeBlock)

Réponses

201: Bloc de contenu créé avec succès

  • id integer

    ID du bloc de contenu

  • lesson_id integer

    ID de la leçon associée

  • order integer

    Ordre du bloc dans la leçon

  • contentable_type string

    Type du contenu polymorphique (e.g., App\\Models\\HeadingBlock)

  • contentable object

    Contenu polymorphique du bloc

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

POST /v1/admin/lessons/{lesson_id}/content-blocks
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/lessons/{lesson_id}/content-blocks' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "lesson_id": 1,
    "order": 1,
    "content_type": "TextBlock",
    "content": [],
    "level": {
        "heading": 1
    },
    "image_url": {
        "image": "http:\/\/example.com\/image.jpg"
    },
    "caption": {
        "image": "L\u00e9gende de l'image"
    },
    "alt_text": {
        "image": "Texte alternatif"
    },
    "video_url": {
        "video": "http:\/\/example.com\/video.mp4"
    },
    "provider": {
        "video": "youtube"
    },
    "code": {
        "code": "console.log('Hello');"
    },
    "language": {
        "code": "javascript"
    }
}'
Réponse
{
    "id": 1,
    "lesson_id": 1,
    "order": 1,
    "contentable_type": "",
    "contentable": [],
    "created_at": "",
    "updated_at": ""
}

Met à jour le contenu d'un bloc de contenu spécifique.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID du bloc de contenu à mettre à jour

Corps de la requête

  • lesson_id integer
  • order integer
  • content_type string
  • content object

    Contenu spécifique au type de bloc

  • level object

    Niveau du titre (pour HeadingBlock)

  • image_url object

    URL de l'image (pour ImageBlock)

  • caption object

    Légende de l'image (pour ImageBlock)

  • alt_text object

    Texte alternatif de l'image (pour ImageBlock)

  • video_url object

    URL de la vidéo (pour VideoBlock)

  • provider object

    Fournisseur de la vidéo (pour VideoBlock)

  • code object

    Contenu du code (pour CodeBlock)

  • language object

    Langage du code (pour CodeBlock)

Réponses

200: Bloc de contenu mis à jour avec succès

  • id integer

    ID du bloc de contenu

  • lesson_id integer

    ID de la leçon associée

  • order integer

    Ordre du bloc dans la leçon

  • contentable_type string

    Type du contenu polymorphique (e.g., App\\Models\\HeadingBlock)

  • contentable object

    Contenu polymorphique du bloc

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Bloc de contenu non trouvé

422: Erreurs de validation

PUT /v1/admin/content-blocks/{id}
curl -X PUT \n  'https://apieclm.appliway.com/api/v1/admin/content-blocks/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "lesson_id": 1,
    "order": 1,
    "content_type": "TextBlock",
    "content": [],
    "level": {
        "heading": 1
    },
    "image_url": {
        "image": "http:\/\/example.com\/image.jpg"
    },
    "caption": {
        "image": "L\u00e9gende de l'image"
    },
    "alt_text": {
        "image": "Texte alternatif"
    },
    "video_url": {
        "video": "http:\/\/example.com\/video.mp4"
    },
    "provider": {
        "video": "youtube"
    },
    "code": {
        "code": "console.log('Hello');"
    },
    "language": {
        "code": "javascript"
    }
}'
Réponse
{
    "id": 1,
    "lesson_id": 1,
    "order": 1,
    "contentable_type": "",
    "contentable": [],
    "created_at": "",
    "updated_at": ""
}

Supprime un ContentBlock et l'entrée de contenu spécialisée associée.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID du bloc de contenu à supprimer

Réponses

204: Bloc de contenu supprimé avec succès

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Bloc de contenu non trouvé

DELETE /v1/admin/content-blocks/{id}
curl -X DELETE \n  'https://apieclm.appliway.com/api/v1/admin/content-blocks/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Met à jour l'ordre des blocs de contenu dans une leçon.

Paramètres

NomDansTypeRequisDescription
lesson_id path integer Oui ID de la leçon

Corps de la requête

  • message string

Réponses

200: Blocs de contenu réordonnés avec succès

  • message string

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

POST /v1/admin/lessons/{lesson_id}/content-blocks/reorder
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/lessons/{lesson_id}/content-blocks/reorder' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "message": "Content blocks reordered successfully."
}'
Réponse
{
    "message": "Content blocks reordered successfully."
}

Administration - Quiz

Crée un nouveau quiz dans un module.

Paramètres

NomDansTypeRequisDescription
module_id path integer Oui ID du module parent

Corps de la requête

  • name string
  • module_id integer

Réponses

201: Quiz créé avec succès

  • id integer

    ID du quiz

  • name string

    Nom du quiz

  • is_passed boolean

    Indique si le quiz a été réussi

  • module_id integer

    ID du module associé

  • questions array

    Liste des questions du quiz

    Items (QuestionResource)
    • id integer

      ID de la question

    • text string

      Texte de la question

    • quiz_id integer

      ID du quiz associé

    • answers array

      Liste des réponses possibles pour la question

      Items (AnswerResource)
      • id integer

        ID de la réponse

      • text string

        Texte de la réponse

      • is_correct boolean

        Indique si la réponse est correcte

      • question_id integer

        ID de la question associée

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

POST /v1/admin/modules/{module_id}/quizzes
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/modules/{module_id}/quizzes' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "name": "Quiz sur le Module 1",
    "module_id": 1
}'
Réponse
{
    "id": 1,
    "name": "",
    "is_passed": false,
    "module_id": 1,
    "questions": [
        {
            "id": 1,
            "text": "",
            "quiz_id": 1,
            "answers": [
                {
                    "id": 1,
                    "text": "",
                    "is_correct": false,
                    "question_id": 1,
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Met à jour les informations d'un quiz.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID du quiz à mettre à jour

Corps de la requête

  • name string
  • is_passed boolean
  • module_id integer

Réponses

200: Quiz mis à jour avec succès

  • id integer

    ID du quiz

  • name string

    Nom du quiz

  • is_passed boolean

    Indique si le quiz a été réussi

  • module_id integer

    ID du module associé

  • questions array

    Liste des questions du quiz

    Items (QuestionResource)
    • id integer

      ID de la question

    • text string

      Texte de la question

    • quiz_id integer

      ID du quiz associé

    • answers array

      Liste des réponses possibles pour la question

      Items (AnswerResource)
      • id integer

        ID de la réponse

      • text string

        Texte de la réponse

      • is_correct boolean

        Indique si la réponse est correcte

      • question_id integer

        ID de la question associée

      • created_at string

        Date de création

      • updated_at string

        Date de dernière mise à jour

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Quiz non trouvé

422: Erreurs de validation

PUT /v1/admin/quizzes/{id}
curl -X PUT \n  'https://apieclm.appliway.com/api/v1/admin/quizzes/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "name": "Quiz sur le Module 1 - R\u00e9vis\u00e9",
    "is_passed": true,
    "module_id": 1
}'
Réponse
{
    "id": 1,
    "name": "",
    "is_passed": false,
    "module_id": 1,
    "questions": [
        {
            "id": 1,
            "text": "",
            "quiz_id": 1,
            "answers": [
                {
                    "id": 1,
                    "text": "",
                    "is_correct": false,
                    "question_id": 1,
                    "created_at": "",
                    "updated_at": ""
                }
            ],
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Supprime un quiz.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID du quiz à supprimer

Réponses

204: Quiz supprimé avec succès

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Quiz non trouvé

DELETE /v1/admin/quizzes/{id}
curl -X DELETE \n  'https://apieclm.appliway.com/api/v1/admin/quizzes/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Administration - Questions de Quiz

Ajoute une nouvelle question à un quiz.

Paramètres

NomDansTypeRequisDescription
quiz_id path integer Oui ID du quiz parent

Corps de la requête

  • text string
  • quiz_id integer

Réponses

201: Question créée avec succès

  • id integer

    ID de la question

  • text string

    Texte de la question

  • quiz_id integer

    ID du quiz associé

  • answers array

    Liste des réponses possibles pour la question

    Items (AnswerResource)
    • id integer

      ID de la réponse

    • text string

      Texte de la réponse

    • is_correct boolean

      Indique si la réponse est correcte

    • question_id integer

      ID de la question associée

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

POST /v1/admin/quizzes/{quiz_id}/questions
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/quizzes/{quiz_id}/questions' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "text": "Quelle est la capitale de la France ?",
    "quiz_id": 1
}'
Réponse
{
    "id": 1,
    "text": "",
    "quiz_id": 1,
    "answers": [
        {
            "id": 1,
            "text": "",
            "is_correct": false,
            "question_id": 1,
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Met à jour le texte d'une question.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la question à mettre à jour

Corps de la requête

  • text string
  • quiz_id integer

Réponses

200: Question mise à jour avec succès

  • id integer

    ID de la question

  • text string

    Texte de la question

  • quiz_id integer

    ID du quiz associé

  • answers array

    Liste des réponses possibles pour la question

    Items (AnswerResource)
    • id integer

      ID de la réponse

    • text string

      Texte de la réponse

    • is_correct boolean

      Indique si la réponse est correcte

    • question_id integer

      ID de la question associée

    • created_at string

      Date de création

    • updated_at string

      Date de dernière mise à jour

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Question non trouvée

422: Erreurs de validation

PUT /v1/admin/questions/{id}
curl -X PUT \n  'https://apieclm.appliway.com/api/v1/admin/questions/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "text": "Quelle est la capitale de l'Allemagne ?",
    "quiz_id": 1
}'
Réponse
{
    "id": 1,
    "text": "",
    "quiz_id": 1,
    "answers": [
        {
            "id": 1,
            "text": "",
            "is_correct": false,
            "question_id": 1,
            "created_at": "",
            "updated_at": ""
        }
    ],
    "created_at": "",
    "updated_at": ""
}

Supprime une question.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la question à supprimer

Réponses

204: Question supprimée avec succès

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Question non trouvée

DELETE /v1/admin/questions/{id}
curl -X DELETE \n  'https://apieclm.appliway.com/api/v1/admin/questions/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Administration - Réponses de Quiz

Ajoute une option de réponse à une question.

La requête inclut le texte et un booléen is_correct.

Paramètres

NomDansTypeRequisDescription
question_id path integer Oui ID de la question parente

Corps de la requête

  • text string
  • is_correct boolean
  • question_id integer

Réponses

201: Réponse créée avec succès

  • id integer

    ID de la réponse

  • text string

    Texte de la réponse

  • is_correct boolean

    Indique si la réponse est correcte

  • question_id integer

    ID de la question associée

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

POST /v1/admin/questions/{question_id}/answers
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/questions/{question_id}/answers' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "text": "Paris",
    "is_correct": true,
    "question_id": 1
}'
Réponse
{
    "id": 1,
    "text": "",
    "is_correct": false,
    "question_id": 1,
    "created_at": "",
    "updated_at": ""
}

Met à jour une option de réponse.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la réponse à mettre à jour

Corps de la requête

  • text string
  • is_correct boolean
  • question_id integer

Réponses

200: Réponse mise à jour avec succès

  • id integer

    ID de la réponse

  • text string

    Texte de la réponse

  • is_correct boolean

    Indique si la réponse est correcte

  • question_id integer

    ID de la question associée

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Réponse non trouvée

422: Erreurs de validation

PUT /v1/admin/answers/{id}
curl -X PUT \n  'https://apieclm.appliway.com/api/v1/admin/answers/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "text": "Berlin",
    "is_correct": false,
    "question_id": 1
}'
Réponse
{
    "id": 1,
    "text": "",
    "is_correct": false,
    "question_id": 1,
    "created_at": "",
    "updated_at": ""
}

Supprime une option de réponse.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la réponse à supprimer

Réponses

204: Réponse supprimée avec succès

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Réponse non trouvée

DELETE /v1/admin/answers/{id}
curl -X DELETE \n  'https://apieclm.appliway.com/api/v1/admin/answers/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Administration - Catégories

Liste toutes les catégories.

Réponses

200: Opération réussie

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

GET /v1/admin/categories
curl -X GET \n  'https://apieclm.appliway.com/api/v1/admin/categories' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Crée une nouvelle catégorie.

Corps de la requête

  • name string
  • slug string

Réponses

201: Catégorie créée avec succès

  • id integer

    ID de la catégorie

  • name string

    Nom de la catégorie

  • slug string

    Slug de la catégorie

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

POST /v1/admin/categories
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/categories' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "name": "Gestion de Projet",
    "slug": "gestion-de-projet"
}'
Réponse
{
    "id": 1,
    "name": "",
    "slug": "",
    "created_at": "",
    "updated_at": ""
}

Récupère une catégorie par son ID.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la catégorie

Réponses

200: Opération réussie

  • id integer

    ID de la catégorie

  • name string

    Nom de la catégorie

  • slug string

    Slug de la catégorie

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Catégorie non trouvée

GET /v1/admin/categories/{id}
curl -X GET \n  'https://apieclm.appliway.com/api/v1/admin/categories/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "name": "",
    "slug": "",
    "created_at": "",
    "updated_at": ""
}

Met à jour une catégorie.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la catégorie à mettre à jour

Corps de la requête

  • name string
  • slug string

Réponses

200: Catégorie mise à jour avec succès

  • id integer

    ID de la catégorie

  • name string

    Nom de la catégorie

  • slug string

    Slug de la catégorie

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Catégorie non trouvée

422: Erreurs de validation

PUT /v1/admin/categories/{id}
curl -X PUT \n  'https://apieclm.appliway.com/api/v1/admin/categories/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "name": "Leadership Avanc\u00e9",
    "slug": "leadership-avance"
}'
Réponse
{
    "id": 1,
    "name": "",
    "slug": "",
    "created_at": "",
    "updated_at": ""
}

Supprime une catégorie.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la catégorie à supprimer

Réponses

204: Catégorie supprimée avec succès

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Catégorie non trouvée

DELETE /v1/admin/categories/{id}
curl -X DELETE \n  'https://apieclm.appliway.com/api/v1/admin/categories/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Administration - Ventes

Affiche la liste de toutes les transactions (Orders).

Réponses

200: Opération réussie

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

GET /v1/admin/orders
curl -X GET \n  'https://apieclm.appliway.com/api/v1/admin/orders' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Administration - Avis

Liste tous les avis pour modération.

Réponses

200: Opération réussie

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

GET /v1/admin/reviews
curl -X GET \n  'https://apieclm.appliway.com/api/v1/admin/reviews' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Crée un nouvel avis au nom d'un apprenant inscrit.

Corps de la requête

  • user_id integer
  • formation_id integer
  • rating integer
  • country string
  • comment string

Réponses

201: Avis créé avec succès

  • id integer

    ID de l'avis

  • rating integer

    Note donnée (1-5)

  • comment string

    Commentaire de l'avis

  • user_id integer

    ID de l'utilisateur qui a laissé l'avis

  • country string

    Pays de l'auteur de l'avis

  • formation_id integer

    ID de la formation concernée par l'avis

  • created_by_admin boolean

    Indique si l'avis a été créé par un administrateur

  • created_by_admin_id integer

    ID de l'administrateur qui a créé l'avis

  • user string
  • created_by_admin_user string
  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

POST /v1/admin/reviews
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/reviews' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "user_id": 12,
    "formation_id": 5,
    "rating": 5,
    "country": "S\u00e9n\u00e9gal",
    "comment": "Avis saisi par l'administrateur."
}'
Réponse
{
    "id": 1,
    "rating": 1,
    "comment": "",
    "user_id": 1,
    "country": "",
    "formation_id": 1,
    "created_by_admin": false,
    "created_by_admin_id": 1,
    "user": "",
    "created_by_admin_user": "",
    "created_at": "",
    "updated_at": ""
}

Récupère un avis par son ID.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de l'avis

Réponses

200: Opération réussie

  • id integer

    ID de l'avis

  • rating integer

    Note donnée (1-5)

  • comment string

    Commentaire de l'avis

  • user_id integer

    ID de l'utilisateur qui a laissé l'avis

  • country string

    Pays de l'auteur de l'avis

  • formation_id integer

    ID de la formation concernée par l'avis

  • created_by_admin boolean

    Indique si l'avis a été créé par un administrateur

  • created_by_admin_id integer

    ID de l'administrateur qui a créé l'avis

  • user string
  • created_by_admin_user string
  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Avis non trouvé

GET /v1/admin/reviews/{id}
curl -X GET \n  'https://apieclm.appliway.com/api/v1/admin/reviews/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "rating": 1,
    "comment": "",
    "user_id": 1,
    "country": "",
    "formation_id": 1,
    "created_by_admin": false,
    "created_by_admin_id": 1,
    "user": "",
    "created_by_admin_user": "",
    "created_at": "",
    "updated_at": ""
}

Met à jour un avis (ex: l'approuver).

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de l'avis à mettre à jour

Corps de la requête

  • rating integer
  • comment string
  • country string

Réponses

200: Avis mis à jour avec succès

  • id integer

    ID de l'avis

  • rating integer

    Note donnée (1-5)

  • comment string

    Commentaire de l'avis

  • user_id integer

    ID de l'utilisateur qui a laissé l'avis

  • country string

    Pays de l'auteur de l'avis

  • formation_id integer

    ID de la formation concernée par l'avis

  • created_by_admin boolean

    Indique si l'avis a été créé par un administrateur

  • created_by_admin_id integer

    ID de l'administrateur qui a créé l'avis

  • user string
  • created_by_admin_user string
  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Avis non trouvé

422: Erreurs de validation

PUT /v1/admin/reviews/{id}
curl -X PUT \n  'https://apieclm.appliway.com/api/v1/admin/reviews/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json' \n  -d '{
    "rating": 5,
    "comment": "Excellent cours !",
    "country": "B\u00e9nin"
}'
Réponse
{
    "id": 1,
    "rating": 1,
    "comment": "",
    "user_id": 1,
    "country": "",
    "formation_id": 1,
    "created_by_admin": false,
    "created_by_admin_id": 1,
    "user": "",
    "created_by_admin_user": "",
    "created_at": "",
    "updated_at": ""
}

Supprime un avis.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de l'avis à supprimer

Réponses

204: Avis supprimé avec succès

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Avis non trouvé

DELETE /v1/admin/reviews/{id}
curl -X DELETE \n  'https://apieclm.appliway.com/api/v1/admin/reviews/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Administration - Ressources

Uploade et associe une nouvelle ressource à une leçon.

Paramètres

NomDansTypeRequisDescription
lesson_id path integer Oui ID de la leçon parente

Réponses

201: Ressource créée avec succès

  • id integer

    ID de la ressource

  • name string

    Nom lisible de la ressource

  • file_name string

    Nom d'origine du fichier

  • file_extension string

    Extension du fichier (ex: pdf)

  • mime_type string

    Type MIME détecté

  • file_size integer

    Taille du fichier en octets

  • disk string

    Disque de stockage utilisé

  • file_path string

    URL directe ou temporisée (alias de download_url)

  • download_url string

    URL directe ou temporisée vers la ressource

  • expires_at string

    Date d'expiration du lien si privé

  • lesson_id integer

    ID de la leçon associée

  • created_at string

    Date de création

  • updated_at string

    Date de dernière mise à jour

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

422: Erreurs de validation

POST /v1/admin/lessons/{lesson_id}/resources
curl -X POST \n  'https://apieclm.appliway.com/api/v1/admin/lessons/{lesson_id}/resources' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{
    "id": 1,
    "name": "",
    "file_name": "",
    "file_extension": "",
    "mime_type": "",
    "file_size": 1,
    "disk": "",
    "file_path": "",
    "download_url": "",
    "expires_at": "",
    "lesson_id": 1,
    "created_at": "",
    "updated_at": ""
}

Supprime une ressource.

Paramètres

NomDansTypeRequisDescription
id path integer Oui ID de la ressource à supprimer

Réponses

204: Ressource supprimée avec succès

401: Non authentifié

403: Accès refusé - Rôle ADMIN requis

404: Ressource non trouvée

DELETE /v1/admin/resources/{id}
curl -X DELETE \n  'https://apieclm.appliway.com/api/v1/admin/resources/{id}' \n  -H 'Authorization: Bearer YOUR_API_TOKEN' \n  -H 'Content-Type: application/json'
Réponse
{}

Tester la requête API