Skip to content

Documentation

Introduction

Ceci est une documentation concernant toutes les APIs REST publiques disponibles sur Teachizy.

URL racine de l'API REST

https://api.teachizy.fr/api/v1

Authentification sur l'API REST

L'authentification passe par une clé d'API générée sur votre compte app.teachizy.fr

Le header HTTP de chaque requête doit contenir la clé suivante :

Authorization: Bearer <token>

INFO

Toutes les dates sont renvoyées au format UTC.

Endpoints

Voici la liste des enpoints disponibles

Lister les formations

Requête

GET /externals/automations/trainings

Exemple de réponse

json
{
  "data": [
    {
      "uuid": "xxxx-xxxx-xxxx-xxxx",
      "name": "nom d'une formation",
      "created_at": "2021-01-01 20:00:00"
    }
  ]
}

Lister les leçons

INFO

Les leçons de type chapitre ont des sous leçons dans une clé children.
Il n'y a qu'un niveau de children.

Requête

GET /externals/automations/trainings/{uuid}/items

Paramètres

  • uuid : C'est l'UUID de la formation

Champs

  • type : une des valeurs GENERIC, SECTION, QUIZ ou TASKS

Exemple de réponse

json
{
  "data": [
    {
      "id": "xx",
      "order": 1,
      "name": "nom d'une leçon",
      "type": "GENERIC"
    },
    {
      "id": "xx",
      "order": 2,
      "name": "nom d'un chapitre",
      "type": "SECTION",
      "children": [
        {
          "id": "xx",
          "order": 1,
          "name": "nom d'une sous leçon",
          "type": "GENERIC"
        }
      ]
    }
  ]
}

Infos du Store

Requête

GET /externals/automations/store

Champs

  • logo : URL du logo, ou null
  • favicon : URL du favicon, ou null

Exemple de réponse

json
{
    "data": {
        "uuid": "xx-xx-xx-xx-xx",
        "name": "Nom de l'espace de formation",
        "description": "desc",
        "logo": "http://api.teachizy.fr/storage/xxx/xxx/xxx.png",
        "favicon": "http://api.teachizy.fr/storage/xxx/xxx/xxx.png",
        "created_at": "2021-01-01 20:00:00"
    }
}

Inviter un apprenant

Requête

POST /externals/automations/customers
json
{
  "firstname": "un prénom",
  "lastname": "un nom",
  "email": "un email",
  "training_uuids": ["uuid", "uuid", ... ]
}

Réponses

Tout s'est bien passé
HTTP 200
Erreur de validation
HTTP 422

Bloquer un apprenant

Requête

POST /externals/blocked-customers
json
{
  "email": "email de l'apprenant",
  "training_uuids": ["uuid", "uuid", ... ]
}

Réponses

Tout s'est bien passé
HTTP 200
Erreur de validation
HTTP 422

Débloquer un apprenant

Requête

POST /externals/unblocked-customers
json
{
  "email": "email de l'apprenant",
  "training_uuids": ["uuid", "uuid", ... ]
}

Réponses

Tout s'est bien passé
HTTP 200
Erreur de validation
HTTP 422

Récupérer un apprenant par email

Renvoie le profil complet d'un apprenant et la liste de ses formations (avec inscription, progression, expiration).

Requête

GET /externals/customers?email={email}

Paramètres (query)

  • email (requis) : email de l'apprenant

Champs

  • custom_fields (apprenant et formation) : objet clé/valeur s'il contient des champs, sinon un tableau vide []
  • started_at : null si non commencée
  • completed_at : null si non terminée
  • last_activity_at : null si aucune activité
  • expiration : null si pas de durée d'accès
  • blocked_at : null si non bloqué
  • total_duration_in_sec : temps passé total, en secondes
  • training_items_count : nombre de leçons
  • training_items_completed_count : nombre de leçons terminées
  • progression_percent : progression en %
  • quiz_total_percent : score quiz en %, -1 si pas de quiz

Exemple de réponse

json
{
  "data": {
    "uuid": "xxxx-xxxx-xxxx-xxxx",
    "email": "apprenant@example.com",
    "firstname": "Prénom",
    "lastname": "Nom",
    "created_at": "2024-12-22 11:21:42",
    "last_login_at": "2026-04-17 12:00:00",
    "custom_fields": {
      "matricule": "ABC123",
      "autoriser_le_partage_d_info": "true"
    },
    "trainings": [
      {
        "training": {
          "uuid": "xxxx-xxxx-xxxx-xxxx",
          "name": "nom de la formation",
          "created_at": "2021-01-01 20:00:00"
        },
        "enrolled_at": "2025-01-01 20:00:00",
        "started_at": "2025-01-02 10:00:00",
        "completed_at": null,
        "last_activity_at": "2026-04-17 12:00:13",
        "expiration": null,
        "blocked_at": null,
        "custom_fields": {
          "champ_formation": "valeur"
        },
        "total_duration_in_sec": 12,
        "training_items_count": 9,
        "training_items_completed_count": 3,
        "progression_percent": 33.33,
        "quiz_total_percent": 100
      }
    ]
  }
}

Réponses

Apprenant trouvé
HTTP 200
Email manquant ou mal formé
HTTP 422
Apprenant introuvable dans ce store
HTTP 404

Exporter les apprenants (liste filtrée et paginée)

Renvoie la liste paginée des apprenants du store. Le payload de chaque apprenant est identique à l'endpoint ci-dessus (profil + formations).

Requête

GET /externals/customers/export

Paramètres (query, tous optionnels)

ParamètreTypeEffet
training_uuiduuidLimite aux apprenants inscrits à cette formation
statusACTIVE ou DISABLEDStatut du compte apprenant
begindate YYYY-MM-DDDate min de création de l'apprenant (incluse)
enddate YYYY-MM-DDDate max de création de l'apprenant (incluse)
pageint ≥ 1Numéro de page (défaut 1)
per_pageint ≥ 1Taille de page (défaut 500, max 1000)

INFO

Pour recevoir une erreur de validation au format JSON (HTTP 422) plutôt qu'une redirection, le header Accept: application/json doit être présent.

Exemple de réponse

json
{
  "data": [
    {
      "uuid": "xxxx-xxxx-xxxx-xxxx",
      "email": "apprenant@example.com",
      "firstname": "Prénom",
      "lastname": "Nom",
      "created_at": "2024-12-22 11:21:42",
      "last_login_at": "2026-04-17 12:00:00",
      "custom_fields": {
        "matricule": "ABC123"
      },
      "trainings": [
        {
          "training": {
            "uuid": "xxxx-xxxx-xxxx-xxxx",
            "name": "nom de la formation",
            "created_at": "2021-01-01 20:00:00"
          },
          "enrolled_at": "2025-01-01 20:00:00",
          "started_at": null,
          "completed_at": null,
          "last_activity_at": null,
          "expiration": null,
          "blocked_at": null,
          "custom_fields": [],
          "total_duration_in_sec": 0,
          "training_items_count": 9,
          "training_items_completed_count": 0,
          "progression_percent": 0,
          "quiz_total_percent": -1
        }
      ]
    }
  ],
  "links": {
    "first": "https://api.teachizy.fr/api/v1/externals/customers/export?page=1",
    "last": "https://api.teachizy.fr/api/v1/externals/customers/export?page=12",
    "prev": null,
    "next": "https://api.teachizy.fr/api/v1/externals/customers/export?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "to": 500,
    "last_page": 12,
    "per_page": 500,
    "total": 5723,
    "path": "https://api.teachizy.fr/api/v1/externals/customers/export"
  }
}

Réponses

Liste retournée (peut être vide)
HTTP 200
Filtre invalide (uuid mal formé, status hors valeurs, date hors format)
HTTP 422