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_namestring -
last_namestring -
emailstring -
passwordstring -
password_confirmationstring
Réponses
201: Utilisateur enregistré avec succès
-
messagestring -
userstring -
access_tokenstring -
token_typestring
422: Erreurs de validation
-
messagestring -
errorsobject
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"
}'
const url = 'https://apieclm.appliway.com/api/v1/register';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"password": "password",
"password_confirmation": "password"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/register', array (
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@example.com',
'password' => 'password',
'password_confirmation' => 'password',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
-
emailstring -
passwordstring
Réponses
200: Connexion réussie
-
messagestring -
userstring -
access_tokenstring -
token_typestring
401: Détails de connexion invalides
-
messagestring
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"
}'
const url = 'https://apieclm.appliway.com/api/v1/login';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"email": "john.doe@example.com",
"password": "password"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/login', array (
'email' => 'john.doe@example.com',
'password' => 'password',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
-
messagestring
401: Non authentifié
curl -X POST \n 'https://apieclm.appliway.com/api/v1/logout' \n -H 'Authorization: Bearer YOUR_API_TOKEN' \n -H 'Content-Type: application/json'
const url = 'https://apieclm.appliway.com/api/v1/logout';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/logout');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"message": "Logged out successfully"
}
Récupère les informations du profil de l'utilisateur actuellement connecté.
Réponses
200: Opération réussie
-
idintegerID de l'utilisateur
-
first_namestringPrénom de l'utilisateur
-
last_namestringNom de l'utilisateur
-
emailstringAdresse email de l'utilisateur
-
rolestringRôle de l'utilisateur
-
created_atstringDate de création
401: Non authentifié
curl -X GET \n 'https://apieclm.appliway.com/api/v1/user' \n -H 'Authorization: Bearer YOUR_API_TOKEN' \n -H 'Content-Type: application/json'
const url = 'https://apieclm.appliway.com/api/v1/user';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/user');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
-
emailstring
Réponses
200: Lien de réinitialisation envoyé
-
messagestring
500: Erreur lors de l'envoi du lien
-
messagestring
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"
}'
const url = 'https://apieclm.appliway.com/api/v1/forgot-password';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"email": "john.doe@example.com"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/forgot-password', array (
'email' => 'john.doe@example.com',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
-
tokenstring -
emailstring -
passwordstring -
password_confirmationstring
Réponses
200: Mot de passe réinitialisé avec succès
-
messagestring
500: Erreur lors de la réinitialisation du mot de passe
-
messagestring
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"
}'
const url = 'https://apieclm.appliway.com/api/v1/reset-password';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"token": "some_reset_token",
"email": "user@example.com",
"password": "new_password",
"password_confirmation": "new_password"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/reset-password', array (
'token' => 'some_reset_token',
'email' => 'user@example.com',
'password' => 'new_password',
'password_confirmation' => 'new_password',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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
curl -X GET \n 'https://apieclm.appliway.com/api/v1/formations' \n -H 'Authorization: Bearer YOUR_API_TOKEN' \n -H 'Content-Type: application/json'
const url = 'https://apieclm.appliway.com/api/v1/formations';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/formations');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
slug |
path | string | Oui | Slug de la formation |
Réponses
200: Opération réussie
-
idintegerID de la formation
-
titlestringTitre de la formation
-
subtitlestringSous-titre de la formation
-
short_descriptionstringDescription courte destinée aux cartes et listes
-
slugstringSlug unique de la formation
-
full_descriptionstringDescription complète de la formation
-
target_audiencestringPublic cible de la formation
-
durationstringDurée estimée de la formation
-
pricenumberPrix de la formation
-
difficultestringNiveau de difficulté de la formation
-
image_urlstringURL de l'image de couverture
-
video_presentation_urlstringURL de la vidéo de présentation
-
is_publishedbooleanIndique si la formation est publiée
-
average_ratingnumberNote moyenne de la formation
-
reviews_countintegerNombre total d'avis
-
instructorstring -
categorystring -
objectivesarrayListe des objectifs de la formation
Items (FormationObjectiveResource)-
idintegerID de l'objectif
-
formation_idintegerID de la formation associée
-
textstringDescription de l'objectif
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
featuresarrayListe des avantages de la formation
Items (FormationFeatureResource)-
idintegerID de la caractéristique
-
formation_idintegerID de la formation associée
-
textstringDescription de la caractéristique
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
prerequisitesarrayListe des prérequis de la formation
Items (FormationPrerequisiteResource)-
idintegerID du prérequis
-
formation_idintegerID de la formation associée
-
textstringDescription du prérequis
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
modulesarrayListe des modules de la formation
Items (ModuleResource)-
idintegerID du module
-
titlestringTitre du module
-
orderintegerOrdre du module dans la formation
-
formation_idintegerID de la formation associée
-
lessonsarrayListe des leçons du module
Items (LessonResource)-
idintegerID de la leçon
-
titlestringTitre de la leçon
-
introductionstringIntroduction de la leçon
-
objectivesstringObjectifs de la leçon
-
module_idintegerID du module parent
-
content_blocksarrayListe des blocs de contenu de la leçon
Items (ContentBlockResource)-
idintegerID du bloc de contenu
-
lesson_idintegerID de la leçon associée
-
orderintegerOrdre du bloc dans la leçon
-
contentable_typestringType du contenu polymorphique (e.g., App\\Models\\HeadingBlock)
-
contentableobjectContenu polymorphique du bloc
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
resourcesarrayListe des ressources téléchargeables de la leçon
Items (ResourceResource)-
idintegerID de la ressource
-
namestringNom lisible de la ressource
-
file_namestringNom d'origine du fichier
-
file_extensionstringExtension du fichier (ex: pdf)
-
mime_typestringType MIME détecté
-
file_sizeintegerTaille du fichier en octets
-
diskstringDisque de stockage utilisé
-
file_pathstringURL directe ou temporisée (alias de download_url)
-
download_urlstringURL directe ou temporisée vers la ressource
-
expires_atstringDate d'expiration du lien si privé
-
lesson_idintegerID de la leçon associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
quizzesarrayListe des quiz du module
Items (QuizResource)-
idintegerID du quiz
-
namestringNom du quiz
-
is_passedbooleanIndique si le quiz a été réussi
-
module_idintegerID du module associé
-
questionsarrayListe des questions du quiz
Items (QuestionResource)-
idintegerID de la question
-
textstringTexte de la question
-
quiz_idintegerID du quiz associé
-
answersarrayListe des réponses possibles pour la question
Items (AnswerResource)-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
404: Formation non trouvée
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'
const url = 'https://apieclm.appliway.com/api/v1/formations/{slug}';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/formations/{slug}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
curl -X GET \n 'https://apieclm.appliway.com/api/v1/categories' \n -H 'Authorization: Bearer YOUR_API_TOKEN' \n -H 'Content-Type: application/json'
const url = 'https://apieclm.appliway.com/api/v1/categories';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/categories');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Récupère une catégorie spécifique par son ID.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de la catégorie |
Réponses
200: Catégorie trouvée
-
idintegerID de la catégorie
-
namestringNom de la catégorie
-
slugstringSlug de la catégorie
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
404: Catégorie non trouvée
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'
const url = 'https://apieclm.appliway.com/api/v1/categories/{id}';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/categories/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de l'instructeur |
Réponses
200: Opération réussie
-
idintegerID de l'instructeur
-
user_idintegerID de l'utilisateur associé à l'instructeur
-
biostringBiographie de l'instructeur
-
photo_urlstringURL de la photo de l'instructeur
-
userstring -
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
404: Instructeur non trouvé
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'
const url = 'https://apieclm.appliway.com/api/v1/instructors/{id}';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/instructors/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
formation_id |
path | integer | Oui | ID de la formation |
Réponses
200: Opération réussie
404: Formation non trouvée
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'
const url = 'https://apieclm.appliway.com/api/v1/formations/{formation_id}/reviews';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/formations/{formation_id}/reviews');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
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
-
namestring -
emailstring -
subjectstring -
messagestring
Réponses
200: Message envoyé avec succès
-
messagestring
422: Erreurs de validation
-
messagestring -
errorsobject
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."
}'
const url = 'https://apieclm.appliway.com/api/v1/contact';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"name": "John Doe",
"email": "john.doe@example.com",
"subject": "Demande d'information",
"message": "Bonjour, je souhaite en savoir plus sur vos formations."
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/contact', array (
'name' => 'John Doe',
'email' => 'john.doe@example.com',
'subject' => 'Demande d\'information',
'message' => 'Bonjour, je souhaite en savoir plus sur vos formations.',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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é
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'
const url = 'https://apieclm.appliway.com/api/v1/student/my-formations';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/student/my-formations');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
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é
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'
const url = 'https://apieclm.appliway.com/api/v1/student/recommended-formations';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/student/recommended-formations');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Inscrire l'utilisateur à une formation
Crée une inscription pour l'utilisateur connecté à la formation donnée.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
formation |
path | integer | Oui | ID de la formation |
Réponses
200: Inscription réussie
-
idintegerID de la formation
-
titlestringTitre de la formation
-
subtitlestringSous-titre de la formation
-
short_descriptionstringDescription courte destinée aux cartes et listes
-
slugstringSlug unique de la formation
-
full_descriptionstringDescription complète de la formation
-
target_audiencestringPublic cible de la formation
-
durationstringDurée estimée de la formation
-
pricenumberPrix de la formation
-
difficultestringNiveau de difficulté de la formation
-
image_urlstringURL de l'image de couverture
-
video_presentation_urlstringURL de la vidéo de présentation
-
is_publishedbooleanIndique si la formation est publiée
-
average_ratingnumberNote moyenne de la formation
-
reviews_countintegerNombre total d'avis
-
instructorstring -
categorystring -
objectivesarrayListe des objectifs de la formation
Items (FormationObjectiveResource)-
idintegerID de l'objectif
-
formation_idintegerID de la formation associée
-
textstringDescription de l'objectif
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
featuresarrayListe des avantages de la formation
Items (FormationFeatureResource)-
idintegerID de la caractéristique
-
formation_idintegerID de la formation associée
-
textstringDescription de la caractéristique
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
prerequisitesarrayListe des prérequis de la formation
Items (FormationPrerequisiteResource)-
idintegerID du prérequis
-
formation_idintegerID de la formation associée
-
textstringDescription du prérequis
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
modulesarrayListe des modules de la formation
Items (ModuleResource)-
idintegerID du module
-
titlestringTitre du module
-
orderintegerOrdre du module dans la formation
-
formation_idintegerID de la formation associée
-
lessonsarrayListe des leçons du module
Items (LessonResource)-
idintegerID de la leçon
-
titlestringTitre de la leçon
-
introductionstringIntroduction de la leçon
-
objectivesstringObjectifs de la leçon
-
module_idintegerID du module parent
-
content_blocksarrayListe des blocs de contenu de la leçon
Items (ContentBlockResource)-
idintegerID du bloc de contenu
-
lesson_idintegerID de la leçon associée
-
orderintegerOrdre du bloc dans la leçon
-
contentable_typestringType du contenu polymorphique (e.g., App\\Models\\HeadingBlock)
-
contentableobjectContenu polymorphique du bloc
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
resourcesarrayListe des ressources téléchargeables de la leçon
Items (ResourceResource)-
idintegerID de la ressource
-
namestringNom lisible de la ressource
-
file_namestringNom d'origine du fichier
-
file_extensionstringExtension du fichier (ex: pdf)
-
mime_typestringType MIME détecté
-
file_sizeintegerTaille du fichier en octets
-
diskstringDisque de stockage utilisé
-
file_pathstringURL directe ou temporisée (alias de download_url)
-
download_urlstringURL directe ou temporisée vers la ressource
-
expires_atstringDate d'expiration du lien si privé
-
lesson_idintegerID de la leçon associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
quizzesarrayListe des quiz du module
Items (QuizResource)-
idintegerID du quiz
-
namestringNom du quiz
-
is_passedbooleanIndique si le quiz a été réussi
-
module_idintegerID du module associé
-
questionsarrayListe des questions du quiz
Items (QuestionResource)-
idintegerID de la question
-
textstringTexte de la question
-
quiz_idintegerID du quiz associé
-
answersarrayListe des réponses possibles pour la question
Items (AnswerResource)-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
400: Déjà inscrit ou formation introuvable
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'
const url = 'https://apieclm.appliway.com/api/v1/student/formations/{formation}/enroll';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/student/formations/{formation}/enroll');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
-
successboolean -
dataobject
401: Non authentifié
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'
const url = 'https://apieclm.appliway.com/api/v1/student/profile';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/student/profile');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
-
firstNamestring -
lastNamestring -
birthDatestring -
genderstring -
hasCivilLiabilityInsuranceboolean
Réponses
200: Identité mise à jour avec succès
422: Erreur de validation
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
}'
const url = 'https://apieclm.appliway.com/api/v1/student/profile/identity';
const options = {
method: 'PATCH',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"firstName": "Nouveau Pr\u00e9nom",
"lastName": "Nouveau Nom",
"birthDate": "1990-01-15",
"gender": "",
"hasCivilLiabilityInsurance": true
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
patch('https://apieclm.appliway.com/api/v1/student/profile/identity', array (
'firstName' => 'Nouveau Prénom',
'lastName' => 'Nouveau Nom',
'birthDate' => '1990-01-15',
'gender' => '',
'hasCivilLiabilityInsurance' => true,
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Met à jour les informations de contact de l'étudiant
Corps de la requête
-
phonestring -
addressobject
Réponses
200: Contact mis à jour avec succès
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"
}
}'
const url = 'https://apieclm.appliway.com/api/v1/student/profile/contact';
const options = {
method: 'PATCH',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"phone": "+33687654321",
"address": {
"street": "456 Avenue des Champs",
"additionalInfo": "Appartement 2A",
"city": "Lyon",
"zipCode": "69000",
"country": "France"
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
patch('https://apieclm.appliway.com/api/v1/student/profile/contact', array (
'phone' => '+33687654321',
'address' =>
array (
'street' => '456 Avenue des Champs',
'additionalInfo' => 'Appartement 2A',
'city' => 'Lyon',
'zipCode' => '69000',
'country' => 'France',
),
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Met à jour la photo de profil
Réponses
200: Photo de profil mise à jour avec succès
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'
const url = 'https://apieclm.appliway.com/api/v1/student/profile/picture';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/student/profile/picture');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Met à jour les informations professionnelles
Corps de la requête
-
situationstring -
objectivesarrayItems (Inline Object) -
skillsarrayItems (Inline Object)
Réponses
200: Informations professionnelles mises à jour
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"
]
}'
const url = 'https://apieclm.appliway.com/api/v1/student/profile/professional';
const options = {
method: 'PATCH',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"situation": "\u00c9tudiant",
"objectives": [
"D\u00e9veloppement web",
"IA"
],
"skills": [
"JavaScript",
"Python"
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
patch('https://apieclm.appliway.com/api/v1/student/profile/professional', array (
'situation' => 'Étudiant',
'objectives' =>
array (
0 => 'Développement web',
1 => 'IA',
),
'skills' =>
array (
0 => 'JavaScript',
1 => 'Python',
),
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Met à jour le statut et les allocations
Corps de la requête
-
statusesarrayItems (Inline Object) -
allowancesarrayItems (Inline Object)
Réponses
200: Statut mis à jour avec succès
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"
]
}'
const url = 'https://apieclm.appliway.com/api/v1/student/profile/status';
const options = {
method: 'PATCH',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"statuses": [
"\u00c9tudiant"
],
"allowances": [
"Bourse d'\u00e9tudes"
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
patch('https://apieclm.appliway.com/api/v1/student/profile/status', array (
'statuses' =>
array (
0 => 'Étudiant',
),
'allowances' =>
array (
0 => 'Bourse d\'études',
),
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Espace Apprenant - Lecteur de Cours
Indique qu'une leçon n'est plus terminée (supprime LessonCompletion)
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de la leçon à dé-marquer |
Réponses
200: Leçon indiquée comme non terminée.
-
messagestring
401: Non authentifié
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'
const url = 'https://apieclm.appliway.com/api/v1/student/lessons/{id}/incomplete';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/student/lessons/{id}/incomplete');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
slug |
path | string | Oui | Slug de la formation |
Réponses
200: Opération réussie
-
idintegerID de la formation
-
titlestringTitre de la formation
-
subtitlestringSous-titre de la formation
-
short_descriptionstringDescription courte destinée aux cartes et listes
-
slugstringSlug unique de la formation
-
full_descriptionstringDescription complète de la formation
-
target_audiencestringPublic cible de la formation
-
durationstringDurée estimée de la formation
-
pricenumberPrix de la formation
-
difficultestringNiveau de difficulté de la formation
-
image_urlstringURL de l'image de couverture
-
video_presentation_urlstringURL de la vidéo de présentation
-
is_publishedbooleanIndique si la formation est publiée
-
average_ratingnumberNote moyenne de la formation
-
reviews_countintegerNombre total d'avis
-
instructorstring -
categorystring -
objectivesarrayListe des objectifs de la formation
Items (FormationObjectiveResource)-
idintegerID de l'objectif
-
formation_idintegerID de la formation associée
-
textstringDescription de l'objectif
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
featuresarrayListe des avantages de la formation
Items (FormationFeatureResource)-
idintegerID de la caractéristique
-
formation_idintegerID de la formation associée
-
textstringDescription de la caractéristique
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
prerequisitesarrayListe des prérequis de la formation
Items (FormationPrerequisiteResource)-
idintegerID du prérequis
-
formation_idintegerID de la formation associée
-
textstringDescription du prérequis
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
modulesarrayListe des modules de la formation
Items (ModuleResource)-
idintegerID du module
-
titlestringTitre du module
-
orderintegerOrdre du module dans la formation
-
formation_idintegerID de la formation associée
-
lessonsarrayListe des leçons du module
Items (LessonResource)-
idintegerID de la leçon
-
titlestringTitre de la leçon
-
introductionstringIntroduction de la leçon
-
objectivesstringObjectifs de la leçon
-
module_idintegerID du module parent
-
content_blocksarrayListe des blocs de contenu de la leçon
Items (ContentBlockResource)-
idintegerID du bloc de contenu
-
lesson_idintegerID de la leçon associée
-
orderintegerOrdre du bloc dans la leçon
-
contentable_typestringType du contenu polymorphique (e.g., App\\Models\\HeadingBlock)
-
contentableobjectContenu polymorphique du bloc
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
resourcesarrayListe des ressources téléchargeables de la leçon
Items (ResourceResource)-
idintegerID de la ressource
-
namestringNom lisible de la ressource
-
file_namestringNom d'origine du fichier
-
file_extensionstringExtension du fichier (ex: pdf)
-
mime_typestringType MIME détecté
-
file_sizeintegerTaille du fichier en octets
-
diskstringDisque de stockage utilisé
-
file_pathstringURL directe ou temporisée (alias de download_url)
-
download_urlstringURL directe ou temporisée vers la ressource
-
expires_atstringDate d'expiration du lien si privé
-
lesson_idintegerID de la leçon associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
quizzesarrayListe des quiz du module
Items (QuizResource)-
idintegerID du quiz
-
namestringNom du quiz
-
is_passedbooleanIndique si le quiz a été réussi
-
module_idintegerID du module associé
-
questionsarrayListe des questions du quiz
Items (QuestionResource)-
idintegerID de la question
-
textstringTexte de la question
-
quiz_idintegerID du quiz associé
-
answersarrayListe des réponses possibles pour la question
Items (AnswerResource)-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate 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
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'
const url = 'https://apieclm.appliway.com/api/v1/student/formations/{slug}/player';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/student/formations/{slug}/player');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
-
idintegerID de la leçon
-
titlestringTitre de la leçon
-
introductionstringIntroduction de la leçon
-
objectivesstringObjectifs de la leçon
-
module_idintegerID du module parent
-
content_blocksarrayListe des blocs de contenu de la leçon
Items (ContentBlockResource)-
idintegerID du bloc de contenu
-
lesson_idintegerID de la leçon associée
-
orderintegerOrdre du bloc dans la leçon
-
contentable_typestringType du contenu polymorphique (e.g., App\\Models\\HeadingBlock)
-
contentableobjectContenu polymorphique du bloc
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
resourcesarrayListe des ressources téléchargeables de la leçon
Items (ResourceResource)-
idintegerID de la ressource
-
namestringNom lisible de la ressource
-
file_namestringNom d'origine du fichier
-
file_extensionstringExtension du fichier (ex: pdf)
-
mime_typestringType MIME détecté
-
file_sizeintegerTaille du fichier en octets
-
diskstringDisque de stockage utilisé
-
file_pathstringURL directe ou temporisée (alias de download_url)
-
download_urlstringURL directe ou temporisée vers la ressource
-
expires_atstringDate d'expiration du lien si privé
-
lesson_idintegerID de la leçon associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate 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
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'
const url = 'https://apieclm.appliway.com/api/v1/student/lessons/{id}/content';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/student/lessons/{id}/content');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de la leçon à marquer comme terminée |
Réponses
200: Leçon marquée comme terminée.
-
messagestring -
next_lesson_idinteger
401: Non authentifié
403: Accès refusé - L'utilisateur n'est pas autorisé à compléter cette leçon
404: Leçon non trouvée
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'
const url = 'https://apieclm.appliway.com/api/v1/student/lessons/{id}/complete';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/student/lessons/{id}/complete');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID du quiz |
Réponses
200: Opération réussie
-
idintegerID du quiz
-
namestringNom du quiz
-
is_passedbooleanIndique si le quiz a été réussi
-
module_idintegerID du module associé
-
questionsarrayListe des questions du quiz
Items (QuestionResource)-
idintegerID de la question
-
textstringTexte de la question
-
quiz_idintegerID du quiz associé
-
answersarrayListe des réponses possibles pour la question
Items (AnswerResource)-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate 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é
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'
const url = 'https://apieclm.appliway.com/api/v1/student/quizzes/{id}';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/student/quizzes/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID du quiz |
Corps de la requête
-
answersarrayItems (Inline Object)-
question_idinteger -
answer_idinteger
-
Réponses
200: Quiz soumis avec succès.
-
messagestring -
scoreinteger -
total_questionsinteger -
resultsarrayItems (Inline Object)-
question_idinteger -
submitted_answer_idinteger -
is_correctboolean -
correct_answer_idinteger
-
401: Non authentifié
403: Accès refusé - L'utilisateur n'est pas inscrit à la formation parente
404: Quiz non trouvé
422: Erreurs de validation
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
}
]
}'
const url = 'https://apieclm.appliway.com/api/v1/student/quizzes/{id}/submit';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"answers": [
{
"question_id": 1,
"answer_id": 1
}
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/student/quizzes/{id}/submit', array (
'answers' =>
array (
0 =>
array (
'question_id' => 1,
'answer_id' => 1,
),
),
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
formation_id |
path | integer | Oui | ID de la formation pour laquelle l'avis est soumis |
Corps de la requête
-
ratinginteger -
commentstring
Réponses
201: Avis soumis avec succès
-
idintegerID de l'avis
-
ratingintegerNote donnée (1-5)
-
commentstringCommentaire de l'avis
-
user_idintegerID de l'utilisateur qui a laissé l'avis
-
countrystringPays de l'auteur de l'avis
-
formation_idintegerID de la formation concernée par l'avis
-
created_by_adminbooleanIndique si l'avis a été créé par un administrateur
-
created_by_admin_idintegerID de l'administrateur qui a créé l'avis
-
userstring -
created_by_admin_userstring -
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé
404: Formation non trouvée
422: Erreurs de validation
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."
}'
const url = 'https://apieclm.appliway.com/api/v1/student/formations/{formation_id}/reviews';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"rating": 5,
"comment": "Ce cours est excellent et tr\u00e8s instructif."
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/student/formations/{formation_id}/reviews', array (
'rating' => 5,
'comment' => 'Ce cours est excellent et très instructif.',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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é
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'
const url = 'https://apieclm.appliway.com/api/v1/student/my-certificates';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/student/my-certificates');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Télécharge le certificat au format PNG.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
unique_code |
path | string | Oui | Code unique du certificat |
Réponses
200: Flux binaire PNG du certificat.
404: Certificat non trouvé
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'
const url = 'https://apieclm.appliway.com/api/v1/certificates/{unique_code}/download';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/certificates/{unique_code}/download');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
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
-
revenueobject -
salesobject -
usersobject -
formationsobject -
recent_enrollmentsarrayItems (Inline Object) -
recent_ordersarrayItems (Inline Object) -
popular_formationsarrayItems (Inline Object)
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/dashboard/stats';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/admin/dashboard/stats');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/users';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/admin/users');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Crée un nouvel utilisateur (Admin).
Corps de la requête
-
first_namestring -
last_namestring -
emailstring -
passwordstring -
password_confirmationstring -
rolestring
Réponses
201: Utilisateur créé avec succès
-
idintegerID de l'utilisateur
-
first_namestringPrénom de l'utilisateur
-
last_namestringNom de l'utilisateur
-
emailstringAdresse email de l'utilisateur
-
rolestringRôle de l'utilisateur
-
created_atstringDate de création
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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"
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/users';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"password": "password",
"password_confirmation": "password",
"role": "APPRENANT"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/users', array (
'first_name' => 'John',
'last_name' => 'Doe',
'email' => 'john.doe@example.com',
'password' => 'password',
'password_confirmation' => 'password',
'role' => 'APPRENANT',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de l'utilisateur |
Réponses
200: Opération réussie
-
idintegerID de l'utilisateur
-
first_namestringPrénom de l'utilisateur
-
last_namestringNom de l'utilisateur
-
emailstringAdresse email de l'utilisateur
-
rolestringRôle de l'utilisateur
-
created_atstringDate de création
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
404: Utilisateur non trouvé
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/users/{id}';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/admin/users/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"id": 1,
"first_name": "",
"last_name": "",
"email": "",
"role": "",
"created_at": ""
}
Met à jour un utilisateur (Admin).
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de l'utilisateur à mettre à jour |
Corps de la requête
-
first_namestring -
last_namestring -
emailstring -
passwordstring -
password_confirmationstring -
rolestring
Réponses
200: Utilisateur mis à jour avec succès
-
idintegerID de l'utilisateur
-
first_namestringPrénom de l'utilisateur
-
last_namestringNom de l'utilisateur
-
emailstringAdresse email de l'utilisateur
-
rolestringRôle de l'utilisateur
-
created_atstringDate de création
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
404: Utilisateur non trouvé
422: Erreurs de validation
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"
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/users/{id}';
const options = {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"password": "new_password",
"password_confirmation": "new_password",
"role": "INSTRUCTOR"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
put('https://apieclm.appliway.com/api/v1/admin/users/{id}', array (
'first_name' => 'Jane',
'last_name' => 'Doe',
'email' => 'jane.doe@example.com',
'password' => 'new_password',
'password_confirmation' => 'new_password',
'role' => 'INSTRUCTOR',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"id": 1,
"first_name": "",
"last_name": "",
"email": "",
"role": "",
"created_at": ""
}
Supprime un utilisateur.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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é
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/users/{id}';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
delete('https://apieclm.appliway.com/api/v1/admin/users/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Inscrit manuellement un utilisateur à une formation.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
user_id |
path | integer | Oui | ID de l'utilisateur à inscrire |
Corps de la requête
-
formation_idinteger
Réponses
201: Utilisateur inscrit avec succès
-
messagestring -
enrollmentobject
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
409: Conflit - Utilisateur déjà inscrit à cette formation
-
messagestring
422: Erreurs de validation
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
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/users/{user_id}/enrollments';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"formation_id": 1
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/users/{user_id}/enrollments', array (
'formation_id' => 1,
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"message": "User enrolled successfully.",
"enrollment": []
}
Désinscrit un utilisateur d'une formation.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/enrollments/{id}';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
delete('https://apieclm.appliway.com/api/v1/admin/enrollments/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/formations';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/admin/formations');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Crée une nouvelle formation.
Corps de la requête
-
titlestring -
subtitlestring -
short_descriptionstring -
slugstring -
full_descriptionstring -
target_audiencestring -
durationstring -
pricenumber -
image_urlstring -
video_presentation_urlstring -
is_publishedboolean -
testimonial_imagesarrayJusqu'à 6 captures ou visuels de témoignages
Items (Inline Object) -
instructor_idsarrayItems (Inline Object) -
category_idinteger -
currencystring
Réponses
201: Formation créée avec succès
-
idintegerID de la formation
-
titlestringTitre de la formation
-
subtitlestringSous-titre de la formation
-
short_descriptionstringDescription courte destinée aux cartes et listes
-
slugstringSlug unique de la formation
-
full_descriptionstringDescription complète de la formation
-
target_audiencestringPublic cible de la formation
-
durationstringDurée estimée de la formation
-
pricenumberPrix de la formation
-
difficultestringNiveau de difficulté de la formation
-
image_urlstringURL de l'image de couverture
-
video_presentation_urlstringURL de la vidéo de présentation
-
is_publishedbooleanIndique si la formation est publiée
-
average_ratingnumberNote moyenne de la formation
-
reviews_countintegerNombre total d'avis
-
instructorstring -
categorystring -
objectivesarrayListe des objectifs de la formation
Items (FormationObjectiveResource)-
idintegerID de l'objectif
-
formation_idintegerID de la formation associée
-
textstringDescription de l'objectif
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
featuresarrayListe des avantages de la formation
Items (FormationFeatureResource)-
idintegerID de la caractéristique
-
formation_idintegerID de la formation associée
-
textstringDescription de la caractéristique
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
prerequisitesarrayListe des prérequis de la formation
Items (FormationPrerequisiteResource)-
idintegerID du prérequis
-
formation_idintegerID de la formation associée
-
textstringDescription du prérequis
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
modulesarrayListe des modules de la formation
Items (ModuleResource)-
idintegerID du module
-
titlestringTitre du module
-
orderintegerOrdre du module dans la formation
-
formation_idintegerID de la formation associée
-
lessonsarrayListe des leçons du module
Items (LessonResource)-
idintegerID de la leçon
-
titlestringTitre de la leçon
-
introductionstringIntroduction de la leçon
-
objectivesstringObjectifs de la leçon
-
module_idintegerID du module parent
-
content_blocksarrayListe des blocs de contenu de la leçon
Items (ContentBlockResource)-
idintegerID du bloc de contenu
-
lesson_idintegerID de la leçon associée
-
orderintegerOrdre du bloc dans la leçon
-
contentable_typestringType du contenu polymorphique (e.g., App\\Models\\HeadingBlock)
-
contentableobjectContenu polymorphique du bloc
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
resourcesarrayListe des ressources téléchargeables de la leçon
Items (ResourceResource)-
idintegerID de la ressource
-
namestringNom lisible de la ressource
-
file_namestringNom d'origine du fichier
-
file_extensionstringExtension du fichier (ex: pdf)
-
mime_typestringType MIME détecté
-
file_sizeintegerTaille du fichier en octets
-
diskstringDisque de stockage utilisé
-
file_pathstringURL directe ou temporisée (alias de download_url)
-
download_urlstringURL directe ou temporisée vers la ressource
-
expires_atstringDate d'expiration du lien si privé
-
lesson_idintegerID de la leçon associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
quizzesarrayListe des quiz du module
Items (QuizResource)-
idintegerID du quiz
-
namestringNom du quiz
-
is_passedbooleanIndique si le quiz a été réussi
-
module_idintegerID du module associé
-
questionsarrayListe des questions du quiz
Items (QuestionResource)-
idintegerID de la question
-
textstringTexte de la question
-
quiz_idintegerID du quiz associé
-
answersarrayListe des réponses possibles pour la question
Items (AnswerResource)-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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"
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/formations';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"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"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/formations', array (
'title' => 'Ma Nouvelle Formation',
'subtitle' => 'Sous-titre de la formation',
'short_description' => 'Résumé court pour les cartes.',
'slug' => 'ma-nouvelle-formation',
'full_description' => 'Description complète de ma nouvelle formation.',
'target_audience' => 'Débutants en développement 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' =>
array (
0 =>
array (
),
),
'instructor_ids' =>
array (
0 => 1,
1 => 2,
),
'category_id' => 1,
'currency' => 'XOF',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de la formation |
Réponses
200: Opération réussie
-
idintegerID de la formation
-
titlestringTitre de la formation
-
subtitlestringSous-titre de la formation
-
short_descriptionstringDescription courte destinée aux cartes et listes
-
slugstringSlug unique de la formation
-
full_descriptionstringDescription complète de la formation
-
target_audiencestringPublic cible de la formation
-
durationstringDurée estimée de la formation
-
pricenumberPrix de la formation
-
difficultestringNiveau de difficulté de la formation
-
image_urlstringURL de l'image de couverture
-
video_presentation_urlstringURL de la vidéo de présentation
-
is_publishedbooleanIndique si la formation est publiée
-
average_ratingnumberNote moyenne de la formation
-
reviews_countintegerNombre total d'avis
-
instructorstring -
categorystring -
objectivesarrayListe des objectifs de la formation
Items (FormationObjectiveResource)-
idintegerID de l'objectif
-
formation_idintegerID de la formation associée
-
textstringDescription de l'objectif
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
featuresarrayListe des avantages de la formation
Items (FormationFeatureResource)-
idintegerID de la caractéristique
-
formation_idintegerID de la formation associée
-
textstringDescription de la caractéristique
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
prerequisitesarrayListe des prérequis de la formation
Items (FormationPrerequisiteResource)-
idintegerID du prérequis
-
formation_idintegerID de la formation associée
-
textstringDescription du prérequis
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
modulesarrayListe des modules de la formation
Items (ModuleResource)-
idintegerID du module
-
titlestringTitre du module
-
orderintegerOrdre du module dans la formation
-
formation_idintegerID de la formation associée
-
lessonsarrayListe des leçons du module
Items (LessonResource)-
idintegerID de la leçon
-
titlestringTitre de la leçon
-
introductionstringIntroduction de la leçon
-
objectivesstringObjectifs de la leçon
-
module_idintegerID du module parent
-
content_blocksarrayListe des blocs de contenu de la leçon
Items (ContentBlockResource)-
idintegerID du bloc de contenu
-
lesson_idintegerID de la leçon associée
-
orderintegerOrdre du bloc dans la leçon
-
contentable_typestringType du contenu polymorphique (e.g., App\\Models\\HeadingBlock)
-
contentableobjectContenu polymorphique du bloc
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
resourcesarrayListe des ressources téléchargeables de la leçon
Items (ResourceResource)-
idintegerID de la ressource
-
namestringNom lisible de la ressource
-
file_namestringNom d'origine du fichier
-
file_extensionstringExtension du fichier (ex: pdf)
-
mime_typestringType MIME détecté
-
file_sizeintegerTaille du fichier en octets
-
diskstringDisque de stockage utilisé
-
file_pathstringURL directe ou temporisée (alias de download_url)
-
download_urlstringURL directe ou temporisée vers la ressource
-
expires_atstringDate d'expiration du lien si privé
-
lesson_idintegerID de la leçon associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
quizzesarrayListe des quiz du module
Items (QuizResource)-
idintegerID du quiz
-
namestringNom du quiz
-
is_passedbooleanIndique si le quiz a été réussi
-
module_idintegerID du module associé
-
questionsarrayListe des questions du quiz
Items (QuestionResource)-
idintegerID de la question
-
textstringTexte de la question
-
quiz_idintegerID du quiz associé
-
answersarrayListe des réponses possibles pour la question
Items (AnswerResource)-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
404: Formation non trouvée
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/formations/{id}';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/admin/formations/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de la formation à mettre à jour |
Corps de la requête
-
titlestring -
subtitlestring -
short_descriptionstring -
slugstring -
full_descriptionstring -
target_audiencestring -
durationstring -
pricenumber -
image_urlstring -
video_presentation_urlstring -
is_publishedboolean -
testimonial_imagesarrayJusqu'à 6 captures ou visuels de témoignages
Items (Inline Object) -
instructor_idsarrayItems (Inline Object) -
category_idinteger -
currencystring
Réponses
200: Formation mise à jour avec succès
-
idintegerID de la formation
-
titlestringTitre de la formation
-
subtitlestringSous-titre de la formation
-
short_descriptionstringDescription courte destinée aux cartes et listes
-
slugstringSlug unique de la formation
-
full_descriptionstringDescription complète de la formation
-
target_audiencestringPublic cible de la formation
-
durationstringDurée estimée de la formation
-
pricenumberPrix de la formation
-
difficultestringNiveau de difficulté de la formation
-
image_urlstringURL de l'image de couverture
-
video_presentation_urlstringURL de la vidéo de présentation
-
is_publishedbooleanIndique si la formation est publiée
-
average_ratingnumberNote moyenne de la formation
-
reviews_countintegerNombre total d'avis
-
instructorstring -
categorystring -
objectivesarrayListe des objectifs de la formation
Items (FormationObjectiveResource)-
idintegerID de l'objectif
-
formation_idintegerID de la formation associée
-
textstringDescription de l'objectif
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
featuresarrayListe des avantages de la formation
Items (FormationFeatureResource)-
idintegerID de la caractéristique
-
formation_idintegerID de la formation associée
-
textstringDescription de la caractéristique
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
prerequisitesarrayListe des prérequis de la formation
Items (FormationPrerequisiteResource)-
idintegerID du prérequis
-
formation_idintegerID de la formation associée
-
textstringDescription du prérequis
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
modulesarrayListe des modules de la formation
Items (ModuleResource)-
idintegerID du module
-
titlestringTitre du module
-
orderintegerOrdre du module dans la formation
-
formation_idintegerID de la formation associée
-
lessonsarrayListe des leçons du module
Items (LessonResource)-
idintegerID de la leçon
-
titlestringTitre de la leçon
-
introductionstringIntroduction de la leçon
-
objectivesstringObjectifs de la leçon
-
module_idintegerID du module parent
-
content_blocksarrayListe des blocs de contenu de la leçon
Items (ContentBlockResource)-
idintegerID du bloc de contenu
-
lesson_idintegerID de la leçon associée
-
orderintegerOrdre du bloc dans la leçon
-
contentable_typestringType du contenu polymorphique (e.g., App\\Models\\HeadingBlock)
-
contentableobjectContenu polymorphique du bloc
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
resourcesarrayListe des ressources téléchargeables de la leçon
Items (ResourceResource)-
idintegerID de la ressource
-
namestringNom lisible de la ressource
-
file_namestringNom d'origine du fichier
-
file_extensionstringExtension du fichier (ex: pdf)
-
mime_typestringType MIME détecté
-
file_sizeintegerTaille du fichier en octets
-
diskstringDisque de stockage utilisé
-
file_pathstringURL directe ou temporisée (alias de download_url)
-
download_urlstringURL directe ou temporisée vers la ressource
-
expires_atstringDate d'expiration du lien si privé
-
lesson_idintegerID de la leçon associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
quizzesarrayListe des quiz du module
Items (QuizResource)-
idintegerID du quiz
-
namestringNom du quiz
-
is_passedbooleanIndique si le quiz a été réussi
-
module_idintegerID du module associé
-
questionsarrayListe des questions du quiz
Items (QuestionResource)-
idintegerID de la question
-
textstringTexte de la question
-
quiz_idintegerID du quiz associé
-
answersarrayListe des réponses possibles pour la question
Items (AnswerResource)-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate 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
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"
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/formations/{id}';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"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"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/formations/{id}', array (
'title' => 'Ma Formation Mise à Jour',
'subtitle' => 'Sous-titre mis à jour',
'short_description' => 'Résumé court pour les cartes.',
'slug' => 'ma-formation-mise-a-jour',
'full_description' => 'Description complète mise à jour.',
'target_audience' => 'Public avancé.',
'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' =>
array (
0 =>
array (
),
),
'instructor_ids' =>
array (
0 => 1,
1 => 3,
),
'category_id' => 2,
'currency' => 'XOF',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/formations/{id}';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
delete('https://apieclm.appliway.com/api/v1/admin/formations/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Administration - Leçons
Crée une nouvelle leçon dans un module.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
module_id |
path | integer | Oui | ID du module parent |
Corps de la requête
-
titlestring -
introductionstring -
objectivesstring -
orderinteger
Réponses
201: Leçon créée avec succès
-
idintegerID de la leçon
-
titlestringTitre de la leçon
-
introductionstringIntroduction de la leçon
-
objectivesstringObjectifs de la leçon
-
module_idintegerID du module parent
-
content_blocksarrayListe des blocs de contenu de la leçon
Items (ContentBlockResource)-
idintegerID du bloc de contenu
-
lesson_idintegerID de la leçon associée
-
orderintegerOrdre du bloc dans la leçon
-
contentable_typestringType du contenu polymorphique (e.g., App\\Models\\HeadingBlock)
-
contentableobjectContenu polymorphique du bloc
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
resourcesarrayListe des ressources téléchargeables de la leçon
Items (ResourceResource)-
idintegerID de la ressource
-
namestringNom lisible de la ressource
-
file_namestringNom d'origine du fichier
-
file_extensionstringExtension du fichier (ex: pdf)
-
mime_typestringType MIME détecté
-
file_sizeintegerTaille du fichier en octets
-
diskstringDisque de stockage utilisé
-
file_pathstringURL directe ou temporisée (alias de download_url)
-
download_urlstringURL directe ou temporisée vers la ressource
-
expires_atstringDate d'expiration du lien si privé
-
lesson_idintegerID de la leçon associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/modules/{module_id}/lessons';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"title": "Introduction au Marketing Digital",
"introduction": "Cette le\u00e7on couvre les bases du marketing digital.",
"objectives": "Comprendre les canaux, identifier les cibles.",
"order": 0
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/modules/{module_id}/lessons', array (
'title' => 'Introduction au Marketing Digital',
'introduction' => 'Cette leçon couvre les bases du marketing digital.',
'objectives' => 'Comprendre les canaux, identifier les cibles.',
'order' => 0,
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de la leçon à mettre à jour |
Corps de la requête
-
titlestring -
introductionstring -
objectivesstring -
orderinteger
Réponses
200: Leçon mise à jour avec succès
-
idintegerID de la leçon
-
titlestringTitre de la leçon
-
introductionstringIntroduction de la leçon
-
objectivesstringObjectifs de la leçon
-
module_idintegerID du module parent
-
content_blocksarrayListe des blocs de contenu de la leçon
Items (ContentBlockResource)-
idintegerID du bloc de contenu
-
lesson_idintegerID de la leçon associée
-
orderintegerOrdre du bloc dans la leçon
-
contentable_typestringType du contenu polymorphique (e.g., App\\Models\\HeadingBlock)
-
contentableobjectContenu polymorphique du bloc
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
resourcesarrayListe des ressources téléchargeables de la leçon
Items (ResourceResource)-
idintegerID de la ressource
-
namestringNom lisible de la ressource
-
file_namestringNom d'origine du fichier
-
file_extensionstringExtension du fichier (ex: pdf)
-
mime_typestringType MIME détecté
-
file_sizeintegerTaille du fichier en octets
-
diskstringDisque de stockage utilisé
-
file_pathstringURL directe ou temporisée (alias de download_url)
-
download_urlstringURL directe ou temporisée vers la ressource
-
expires_atstringDate d'expiration du lien si privé
-
lesson_idintegerID de la leçon associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate 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
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
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/lessons/{id}';
const options = {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"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
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
put('https://apieclm.appliway.com/api/v1/admin/lessons/{id}', array (
'title' => 'Introduction au Marketing Digital Avancé',
'introduction' => 'Cette leçon approfondit les bases du marketing digital.',
'objectives' => 'Maîtriser les stratégies, analyser les performances.',
'order' => 2,
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/lessons/{id}';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
delete('https://apieclm.appliway.com/api/v1/admin/lessons/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Met à jour l'ordre des leçons dans un module.
Corps de la requête
-
lesson_idsarrayListe ordonnée des IDs des leçons
Items (Inline Object)
Réponses
200: Leçons réordonnées avec succès
-
messagestring
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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": [
[]
]
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/lessons/reorder';
const options = {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"lesson_ids": [
[]
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
put('https://apieclm.appliway.com/api/v1/admin/lessons/reorder', array (
'lesson_ids' =>
array (
0 =>
array (
),
),
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
lesson_id |
path | integer | Oui | ID de la leçon parente |
Corps de la requête
-
lesson_idinteger -
orderinteger -
content_typestring -
contentobjectContenu spécifique au type de bloc
-
levelobjectNiveau du titre (pour HeadingBlock)
-
image_urlobjectURL de l'image (pour ImageBlock)
-
captionobjectLégende de l'image (pour ImageBlock)
-
alt_textobjectTexte alternatif de l'image (pour ImageBlock)
-
video_urlobjectURL de la vidéo (pour VideoBlock)
-
providerobjectFournisseur de la vidéo (pour VideoBlock)
-
codeobjectContenu du code (pour CodeBlock)
-
languageobjectLangage du code (pour CodeBlock)
Réponses
201: Bloc de contenu créé avec succès
-
idintegerID du bloc de contenu
-
lesson_idintegerID de la leçon associée
-
orderintegerOrdre du bloc dans la leçon
-
contentable_typestringType du contenu polymorphique (e.g., App\\Models\\HeadingBlock)
-
contentableobjectContenu polymorphique du bloc
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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"
}
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/lessons/{lesson_id}/content-blocks';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"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"
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/lessons/{lesson_id}/content-blocks', array (
'lesson_id' => 1,
'order' => 1,
'content_type' => 'TextBlock',
'content' =>
array (
),
'level' =>
array (
'heading' => 1,
),
'image_url' =>
array (
'image' => 'http://example.com/image.jpg',
),
'caption' =>
array (
'image' => 'Légende de l\'image',
),
'alt_text' =>
array (
'image' => 'Texte alternatif',
),
'video_url' =>
array (
'video' => 'http://example.com/video.mp4',
),
'provider' =>
array (
'video' => 'youtube',
),
'code' =>
array (
'code' => 'console.log(\'Hello\');',
),
'language' =>
array (
'code' => 'javascript',
),
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID du bloc de contenu à mettre à jour |
Corps de la requête
-
lesson_idinteger -
orderinteger -
content_typestring -
contentobjectContenu spécifique au type de bloc
-
levelobjectNiveau du titre (pour HeadingBlock)
-
image_urlobjectURL de l'image (pour ImageBlock)
-
captionobjectLégende de l'image (pour ImageBlock)
-
alt_textobjectTexte alternatif de l'image (pour ImageBlock)
-
video_urlobjectURL de la vidéo (pour VideoBlock)
-
providerobjectFournisseur de la vidéo (pour VideoBlock)
-
codeobjectContenu du code (pour CodeBlock)
-
languageobjectLangage du code (pour CodeBlock)
Réponses
200: Bloc de contenu mis à jour avec succès
-
idintegerID du bloc de contenu
-
lesson_idintegerID de la leçon associée
-
orderintegerOrdre du bloc dans la leçon
-
contentable_typestringType du contenu polymorphique (e.g., App\\Models\\HeadingBlock)
-
contentableobjectContenu polymorphique du bloc
-
created_atstringDate de création
-
updated_atstringDate 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
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"
}
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/content-blocks/{id}';
const options = {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"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"
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
put('https://apieclm.appliway.com/api/v1/admin/content-blocks/{id}', array (
'lesson_id' => 1,
'order' => 1,
'content_type' => 'TextBlock',
'content' =>
array (
),
'level' =>
array (
'heading' => 1,
),
'image_url' =>
array (
'image' => 'http://example.com/image.jpg',
),
'caption' =>
array (
'image' => 'Légende de l\'image',
),
'alt_text' =>
array (
'image' => 'Texte alternatif',
),
'video_url' =>
array (
'video' => 'http://example.com/video.mp4',
),
'provider' =>
array (
'video' => 'youtube',
),
'code' =>
array (
'code' => 'console.log(\'Hello\');',
),
'language' =>
array (
'code' => 'javascript',
),
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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é
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/content-blocks/{id}';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
delete('https://apieclm.appliway.com/api/v1/admin/content-blocks/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Met à jour l'ordre des blocs de contenu dans une leçon.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
lesson_id |
path | integer | Oui | ID de la leçon |
Corps de la requête
-
messagestring
Réponses
200: Blocs de contenu réordonnés avec succès
-
messagestring
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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."
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/lessons/{lesson_id}/content-blocks/reorder';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"message": "Content blocks reordered successfully."
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/lessons/{lesson_id}/content-blocks/reorder', array (
'message' => 'Content blocks reordered successfully.',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"message": "Content blocks reordered successfully."
}
Administration - Quiz
Crée un nouveau quiz dans un module.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
module_id |
path | integer | Oui | ID du module parent |
Corps de la requête
-
namestring -
module_idinteger
Réponses
201: Quiz créé avec succès
-
idintegerID du quiz
-
namestringNom du quiz
-
is_passedbooleanIndique si le quiz a été réussi
-
module_idintegerID du module associé
-
questionsarrayListe des questions du quiz
Items (QuestionResource)-
idintegerID de la question
-
textstringTexte de la question
-
quiz_idintegerID du quiz associé
-
answersarrayListe des réponses possibles pour la question
Items (AnswerResource)-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/modules/{module_id}/quizzes';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"name": "Quiz sur le Module 1",
"module_id": 1
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/modules/{module_id}/quizzes', array (
'name' => 'Quiz sur le Module 1',
'module_id' => 1,
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID du quiz à mettre à jour |
Corps de la requête
-
namestring -
is_passedboolean -
module_idinteger
Réponses
200: Quiz mis à jour avec succès
-
idintegerID du quiz
-
namestringNom du quiz
-
is_passedbooleanIndique si le quiz a été réussi
-
module_idintegerID du module associé
-
questionsarrayListe des questions du quiz
Items (QuestionResource)-
idintegerID de la question
-
textstringTexte de la question
-
quiz_idintegerID du quiz associé
-
answersarrayListe des réponses possibles pour la question
Items (AnswerResource)-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
404: Quiz non trouvé
422: Erreurs de validation
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
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/quizzes/{id}';
const options = {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"name": "Quiz sur le Module 1 - R\u00e9vis\u00e9",
"is_passed": true,
"module_id": 1
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
put('https://apieclm.appliway.com/api/v1/admin/quizzes/{id}', array (
'name' => 'Quiz sur le Module 1 - Révisé',
'is_passed' => true,
'module_id' => 1,
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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é
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/quizzes/{id}';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
delete('https://apieclm.appliway.com/api/v1/admin/quizzes/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Administration - Questions de Quiz
Ajoute une nouvelle question à un quiz.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
quiz_id |
path | integer | Oui | ID du quiz parent |
Corps de la requête
-
textstring -
quiz_idinteger
Réponses
201: Question créée avec succès
-
idintegerID de la question
-
textstringTexte de la question
-
quiz_idintegerID du quiz associé
-
answersarrayListe des réponses possibles pour la question
Items (AnswerResource)-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/quizzes/{quiz_id}/questions';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"text": "Quelle est la capitale de la France ?",
"quiz_id": 1
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/quizzes/{quiz_id}/questions', array (
'text' => 'Quelle est la capitale de la France ?',
'quiz_id' => 1,
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de la question à mettre à jour |
Corps de la requête
-
textstring -
quiz_idinteger
Réponses
200: Question mise à jour avec succès
-
idintegerID de la question
-
textstringTexte de la question
-
quiz_idintegerID du quiz associé
-
answersarrayListe des réponses possibles pour la question
Items (AnswerResource)-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
-
-
created_atstringDate de création
-
updated_atstringDate 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
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
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/questions/{id}';
const options = {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"text": "Quelle est la capitale de l'Allemagne ?",
"quiz_id": 1
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
put('https://apieclm.appliway.com/api/v1/admin/questions/{id}', array (
'text' => 'Quelle est la capitale de l\'Allemagne ?',
'quiz_id' => 1,
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/questions/{id}';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
delete('https://apieclm.appliway.com/api/v1/admin/questions/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
question_id |
path | integer | Oui | ID de la question parente |
Corps de la requête
-
textstring -
is_correctboolean -
question_idinteger
Réponses
201: Réponse créée avec succès
-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/questions/{question_id}/answers';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"text": "Paris",
"is_correct": true,
"question_id": 1
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/questions/{question_id}/answers', array (
'text' => 'Paris',
'is_correct' => true,
'question_id' => 1,
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"id": 1,
"text": "",
"is_correct": false,
"question_id": 1,
"created_at": "",
"updated_at": ""
}
Met à jour une option de réponse.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de la réponse à mettre à jour |
Corps de la requête
-
textstring -
is_correctboolean -
question_idinteger
Réponses
200: Réponse mise à jour avec succès
-
idintegerID de la réponse
-
textstringTexte de la réponse
-
is_correctbooleanIndique si la réponse est correcte
-
question_idintegerID de la question associée
-
created_atstringDate de création
-
updated_atstringDate 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
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
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/answers/{id}';
const options = {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"text": "Berlin",
"is_correct": false,
"question_id": 1
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
put('https://apieclm.appliway.com/api/v1/admin/answers/{id}', array (
'text' => 'Berlin',
'is_correct' => false,
'question_id' => 1,
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"id": 1,
"text": "",
"is_correct": false,
"question_id": 1,
"created_at": "",
"updated_at": ""
}
Supprime une option de réponse.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/answers/{id}';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
delete('https://apieclm.appliway.com/api/v1/admin/answers/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/categories';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/admin/categories');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Crée une nouvelle catégorie.
Corps de la requête
-
namestring -
slugstring
Réponses
201: Catégorie créée avec succès
-
idintegerID de la catégorie
-
namestringNom de la catégorie
-
slugstringSlug de la catégorie
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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"
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/categories';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"name": "Gestion de Projet",
"slug": "gestion-de-projet"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/categories', array (
'name' => 'Gestion de Projet',
'slug' => 'gestion-de-projet',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"id": 1,
"name": "",
"slug": "",
"created_at": "",
"updated_at": ""
}
Récupère une catégorie par son ID.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de la catégorie |
Réponses
200: Opération réussie
-
idintegerID de la catégorie
-
namestringNom de la catégorie
-
slugstringSlug de la catégorie
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
404: Catégorie non trouvée
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/categories/{id}';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/admin/categories/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"id": 1,
"name": "",
"slug": "",
"created_at": "",
"updated_at": ""
}
Met à jour une catégorie.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de la catégorie à mettre à jour |
Corps de la requête
-
namestring -
slugstring
Réponses
200: Catégorie mise à jour avec succès
-
idintegerID de la catégorie
-
namestringNom de la catégorie
-
slugstringSlug de la catégorie
-
created_atstringDate de création
-
updated_atstringDate 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
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"
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/categories/{id}';
const options = {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"name": "Leadership Avanc\u00e9",
"slug": "leadership-avance"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
put('https://apieclm.appliway.com/api/v1/admin/categories/{id}', array (
'name' => 'Leadership Avancé',
'slug' => 'leadership-avance',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"id": 1,
"name": "",
"slug": "",
"created_at": "",
"updated_at": ""
}
Supprime une catégorie.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/categories/{id}';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
delete('https://apieclm.appliway.com/api/v1/admin/categories/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/orders';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/admin/orders');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/reviews';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/admin/reviews');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Crée un nouvel avis au nom d'un apprenant inscrit.
Corps de la requête
-
user_idinteger -
formation_idinteger -
ratinginteger -
countrystring -
commentstring
Réponses
201: Avis créé avec succès
-
idintegerID de l'avis
-
ratingintegerNote donnée (1-5)
-
commentstringCommentaire de l'avis
-
user_idintegerID de l'utilisateur qui a laissé l'avis
-
countrystringPays de l'auteur de l'avis
-
formation_idintegerID de la formation concernée par l'avis
-
created_by_adminbooleanIndique si l'avis a été créé par un administrateur
-
created_by_admin_idintegerID de l'administrateur qui a créé l'avis
-
userstring -
created_by_admin_userstring -
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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."
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/reviews';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"user_id": 12,
"formation_id": 5,
"rating": 5,
"country": "S\u00e9n\u00e9gal",
"comment": "Avis saisi par l'administrateur."
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/reviews', array (
'user_id' => 12,
'formation_id' => 5,
'rating' => 5,
'country' => 'Sénégal',
'comment' => 'Avis saisi par l\'administrateur.',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de l'avis |
Réponses
200: Opération réussie
-
idintegerID de l'avis
-
ratingintegerNote donnée (1-5)
-
commentstringCommentaire de l'avis
-
user_idintegerID de l'utilisateur qui a laissé l'avis
-
countrystringPays de l'auteur de l'avis
-
formation_idintegerID de la formation concernée par l'avis
-
created_by_adminbooleanIndique si l'avis a été créé par un administrateur
-
created_by_admin_idintegerID de l'administrateur qui a créé l'avis
-
userstring -
created_by_admin_userstring -
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
404: Avis non trouvé
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/reviews/{id}';
const options = {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
get('https://apieclm.appliway.com/api/v1/admin/reviews/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
id |
path | integer | Oui | ID de l'avis à mettre à jour |
Corps de la requête
-
ratinginteger -
commentstring -
countrystring
Réponses
200: Avis mis à jour avec succès
-
idintegerID de l'avis
-
ratingintegerNote donnée (1-5)
-
commentstringCommentaire de l'avis
-
user_idintegerID de l'utilisateur qui a laissé l'avis
-
countrystringPays de l'auteur de l'avis
-
formation_idintegerID de la formation concernée par l'avis
-
created_by_adminbooleanIndique si l'avis a été créé par un administrateur
-
created_by_admin_idintegerID de l'administrateur qui a créé l'avis
-
userstring -
created_by_admin_userstring -
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
404: Avis non trouvé
422: Erreurs de validation
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"
}'
const url = 'https://apieclm.appliway.com/api/v1/admin/reviews/{id}';
const options = {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({
"rating": 5,
"comment": "Excellent cours !",
"country": "B\u00e9nin"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
put('https://apieclm.appliway.com/api/v1/admin/reviews/{id}', array (
'rating' => 5,
'comment' => 'Excellent cours !',
'country' => 'Bénin',
));
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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é
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/reviews/{id}';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
delete('https://apieclm.appliway.com/api/v1/admin/reviews/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}
Administration - Ressources
Uploade et associe une nouvelle ressource à une leçon.
Paramètres
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
lesson_id |
path | integer | Oui | ID de la leçon parente |
Réponses
201: Ressource créée avec succès
-
idintegerID de la ressource
-
namestringNom lisible de la ressource
-
file_namestringNom d'origine du fichier
-
file_extensionstringExtension du fichier (ex: pdf)
-
mime_typestringType MIME détecté
-
file_sizeintegerTaille du fichier en octets
-
diskstringDisque de stockage utilisé
-
file_pathstringURL directe ou temporisée (alias de download_url)
-
download_urlstringURL directe ou temporisée vers la ressource
-
expires_atstringDate d'expiration du lien si privé
-
lesson_idintegerID de la leçon associée
-
created_atstringDate de création
-
updated_atstringDate de dernière mise à jour
401: Non authentifié
403: Accès refusé - Rôle ADMIN requis
422: Erreurs de validation
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/lessons/{lesson_id}/resources';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
post('https://apieclm.appliway.com/api/v1/admin/lessons/{lesson_id}/resources');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{
"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
| Nom | Dans | Type | Requis | Description |
|---|---|---|---|---|
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
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'
const url = 'https://apieclm.appliway.com/api/v1/admin/resources/{id}';
const options = {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken('YOUR_API_TOKEN')->
withHeaders(['Accept' => 'application/json'])->
delete('https://apieclm.appliway.com/api/v1/admin/resources/{id}');
if ($response->successful()) {
// Request was successful
dd($response->json());
} else {
// Handle error
dd($response->status(), $response->body());
}
{}