Consulter le catalogue#
Trois vues du catalogue : le référentiel des formations, les sessions ouvertes, et, pour un client donné, les offres à ses prix.
Le référentiel des formations#
GET /formations/recommendations liste les familles de formation (recommandations CNAM R48x pour le CACES®, plus AIPR, SST…). C'est la nomenclature des filtres : le code renvoyé sert de valeur au paramètre recommendation des sessions.
curl "https://developer.elrm.app/sandbox/v1/formations/recommendations?caces_only=true" \
-H "Authorization: Bearer pk_test_…"
{
"items": [
{ "code": "R482", "label": "Engins de chantier", "is_caces": true, "duree": "3 à 5 jours", "certification": "CACES® R482", "description": "…" },
{ "code": "R489", "label": "Chariots de manutention", "is_caces": true, "duree": "…", "certification": "CACES® R489", "description": "…" }
],
"total": 9, "limit": 100, "offset": 0
}
Portée : formations:recommendations:read.
Les sessions ouvertes#
GET /formations/sessions renvoie les sessions inter-entreprises à venir, avec leurs places restantes. Les sessions privées (intra) n'y figurent jamais.
| Paramètre | Rôle |
|---|---|
recommendation |
Filtrer sur une famille (R482, insensible à la casse) |
available_only |
Ne garder que les sessions avec au moins une place |
limit, offset |
Pagination (100 par défaut, 200 maximum) |
curl "https://developer.elrm.app/sandbox/v1/formations/sessions?recommendation=R482&available_only=true" \
-H "Authorization: Bearer pk_test_…"
def all_sessions(api, **params):
"""Itère sur toutes les pages."""
offset = 0
while True:
page = api.get("/formations/sessions", params={**params, "limit": 200, "offset": offset}).json()
yield from page["items"]
offset += page["limit"]
if offset >= page["total"]:
return
for s in all_sessions(api, recommendation="R482", available_only=True):
print(s["numero"], s["date_debut"], "→", s["date_fin"], s["available_slots"], "places")
GET /formations/sessions/{numero} renvoie une session par son numéro métier.
Portée : formations:sessions:read.
Les offres à vos prix#
Pour préparer un dossier, il vous faut les offres (une offre = une formation précise avec sa durée, ses unités et son prix) à votre tarif : votre remise est appliquée par l'organisme. C'est GET /formations :
curl "https://developer.elrm.app/sandbox/v1/formations" \
-H "Authorization: Bearer pk_test_…"
{
"remise_pct": 10.0,
"items": [
{
"recommendation_id": "…", "code": "R482", "label": "Engins de chantier", "is_caces": true, "certification": "CACES® R482",
"categories": [ { "code": "A", "label": "Engins compacts" }, { "code": "C1", "label": "Engins de chargement" } ],
"offres": [
{ "id": "a1b2…", "code": "R482_3_Avancé", "titre": "R482, 3 catégories, expérimenté", "duree": "3 jours", "nombre_ut": 3, "prix_ht": 780.0, "remise_pct": 10.0, "prix_remise_ht": 702.0 }
]
}
]
}
Les offres[].id sont les identifiants à passer dans une analyse du besoin (offre_ids) puis dans les lignes d'un dossier (lignes[].offre_id). Les prix sont informatifs : vous ne les renvoyez jamais, ils sont recalculés à la création du dossier.
categories donne les catégories d'engins de chaque formation : ce sont les valeurs acceptées dans categories_session à la création d'un dossier.
Portée : clients:dossiers:read.
Les centres#
GET /centres liste les centres de formation ELRM (nom, adresse, ville, département). Leur id est la valeur acceptée par centre_id à la création d'un dossier, pour indiquer un centre souhaité ; centre_label des sessions reprend leur nom.
Portée : formations:sessions:read.
Le catalogue Mon Compte Formation#
GET /formations/mcf-references liste les formations référencées sur Mon Compte Formation (liens profonds, prix TTC, département). Utile pour orienter un particulier vers un financement CPF.
Portée : formations:mcf:read.
Synchroniser un catalogue local#
Le catalogue change rarement : une synchronisation horaire suffit largement. Rapatriez recommandations, offres et sessions ouvertes, puis travaillez localement ; ne relisez GET /formations qu'au moment de préparer un dossier, pour avoir les prix du jour.