Documentation
L'API des agents.
Version 1, 57 routes, huit rôles. Elle permet à un programme de construire et modifier un site JEIKO — pages, catalogue, menus, questionnaires, e-mails, identité visuelle.
Documentation
Version 1, 57 routes, huit rôles. Elle permet à un programme de construire et modifier un site JEIKO — pages, catalogue, menus, questionnaires, e-mails, identité visuelle.
Le mode d'emploi vit à la racine de l'API. Il est généré depuis le code — les routes sont lues dans le routeur, les permissions sur les classes de vue, les options des blocs dans les constantes que le rendu applique. Il ne peut donc pas décrire une route qui n'existe pas, ni taire une permission.
GET https://votresite.fr/api/agent/v1/
Authorization: Bearer jk_ag__
{
"version": { "numero": "1" },
"points_d_entree": [ … 57 routes, chacune avec sa permission … ],
"catalogue_des_blocs": { … 23 types de contenu … },
"champs_de_page": { … },
"interdits": [ … ]
}
Un jeton porteur, et lui seul. Sept gardes s'empilent avant qu'un appel n'atteigne une vue.
Authorization uniquement : jamais dans l'URL, où il finirait dans les journaux du serveur et l'historique du navigateurLes refus ne s'expliquent pas : même message, même code, quelle que soit la cause. Le motif précis va au journal, qui est pour l'exploitant — le distinguer apprendrait à un appelant hostile où il en est.
Chacune annonce la permission qu'elle exige : un agent sait avant d'appeler s'il en a le droit, plutôt que de le découvrir sur un refus.
| Méthode | Chemin | Rôle | Permission |
|---|---|---|---|
GET | / | Ce mode d'emploi. À lire en premier. | aucune — un jeton valide suffit |
GET | /qui-suis-je/ | Qui je suis et ce que j'ai le droit de faire. | aucune — un jeton valide suffit |
GET | /pages/ | La liste des pages du site. | administration_pages.view_page |
POST | /pages/creer/ | Créer une page. Elle naît en brouillon. | administration_pages.add_page |
GET, PATCH | /pages// | L'arbre complet d'une page ; PATCH modifie ses champs. | administration_pages.view_page |
POST | /pages//sections/ | Ajouter une section à une page. | administration_pages.change_page |
GET | /pages//mesures/ | Scores PageSpeed, Core Web Vitals et audits ratés. Lecture seule. | administration_pages.view_page |
GET, PATCH, DELETE | /sections// | Une section et ses paramètres. | administration_pages.change_page |
POST | /sections//lignes/ | Ajouter une ligne à une section. | administration_pages.change_page |
GET, PATCH, DELETE | /lignes// | Une ligne et ses paramètres. | administration_pages.change_page |
POST | /lignes//blocs/ | Ajouter un bloc dans une colonne de la ligne. | administration_pages.change_page |
GET, PATCH, DELETE | /blocs// | Un bloc et ses paramètres. | administration_pages.change_page |
PUT | /blocs//contenu/ | Poser ou remplacer le contenu d'un bloc. | administration_pages.change_page |
PATCH | /categories//menus/ | Affecter les menus d'une catégorie — c'est ce qui fait les sous-sites. | administration_menu.change_menu |
GET | /categories/ | Les catégories et sous-catégories, avec leurs slugs. | administration_pages.view_page |
POST | /categories/creer/ | Créer une catégorie. « afficher_dans_l_url » la met dans l'adresse des pages. | administration_pages.add_page |
GET, PATCH | /categories// | Corriger une catégorie. Le slug ne change pas : il est dans les adresses. | administration_pages.change_page |
GET | /menus/ | Les menus, leur arborescence et les catégories qu'ils servent. | administration_menu.view_menu |
POST | /menus/creer/ | Créer un menu — « copie_de » duplique un existant, arborescence comprise. | administration_menu.add_menu |
GET, PATCH | /menus// | Un menu ; envoyer « elements » REMPLACE son arborescence. | administration_menu.view_menu |
GET | /images/ | La médiathèque, en lecture. Donne les identifiants à réutiliser. | administration_pages.view_page |
GET, PATCH | /identite/ | Les couleurs du thème et les polices du site. Modification partielle. | administration.view_website |
GET | /modeles/ | Les types de fiches et leurs champs. À lire avant d'en créer une. | custom_objects.view_customobject |
POST | /modeles/creer/ | Créer un type de fiche avec ses champs, et marquer sa page gabarit. | custom_objects.add_customobjectmodel |
GET, PATCH | /modeles// | Un type de fiche ; PATCH AJOUTE des champs, n'en renomme aucun. | custom_objects.view_customobject |
GET | /objets/ | Les fiches existantes. `?modele=` pour filtrer. | custom_objects.view_customobject |
POST | /objets/creer/ | Créer une fiche. Elle naît non publiée. | custom_objects.add_customobject |
GET, PATCH | /objets// | Une fiche et ses valeurs ; PATCH en modifie une partie. | custom_objects.view_customobject |
GET | /types-de-produit/ | Les types de produit — la couche commerciale. | shop.view_producttype |
POST | /types-de-produit/creer/ | Créer un type de produit. « expedition » décide s'il consomme du stock. | shop.add_producttype |
GET, PATCH | /types-de-produit// | Corriger un type de produit. Le code ne change pas : il est dans les URL. | shop.view_producttype |
GET | /produits/ | Les produits. | shop.view_product |
POST | /produits/creer/ | Créer un produit sur une fiche existante. | shop.add_product |
GET, PATCH | /produits// | Un produit : référence, prix, TVA, stock. | shop.view_product |
GET | /questionnaires/ | Les questionnaires experts. | questionnaires_expert.view_experttest |
POST | /questionnaires/creer/ | Créer un questionnaire. Il naît INACTIF. | questionnaires_expert.add_experttest |
GET, PATCH | /questionnaires// | L'arbre complet : profils, questions, réponses, poids, combinaisons. | questionnaires_expert.view_experttest |
POST | /questionnaires//profils/ | Ajouter un profil — un résultat possible, avec sa page. | questionnaires_expert.change_experttest |
POST | /questionnaires//questions/ | Ajouter une question, ses réponses et leurs poids. | questionnaires_expert.change_experttest |
POST | /questionnaires//combinaisons/ | Ajouter une combinaison — l'arbitrage entre deux profils proches. | questionnaires_expert.change_experttest |
PATCH | /profils// | Un profil. Son slug ne se modifie pas : il est dans l'URL du résultat. | questionnaires_expert.change_experttest |
PATCH | /questions// | Une question ; envoyer « reponses » REMPLACE la liste, poids compris. | questionnaires_expert.change_experttest |
PATCH | /combinaisons// | Une combinaison et ses critères. | questionnaires_expert.change_experttest |
GET | /emails/evenements/ | Les 67 événements d'e-mail et LEURS CLÉS. À lire avant d'écrire un e-mail. | emailing.view_emailtemplate |
GET | /emails/ | Les e-mails configurés. | emailing.view_emailtemplate |
POST | /emails/creer/ | Habiller un événement : sujet, page de corps. Naît INACTIF. | emailing.add_emailtemplate |
GET, PATCH | /emails// | Un e-mail : sujet, corps, expéditeur, activation. | emailing.view_emailtemplate |
GET | /rdv/types/ | Les types de rendez-vous. Leur durée découpe les disponibilités. | calendars.view_appointmenttype |
POST | /rdv/types/creer/ | Créer un type de rendez-vous. | calendars.add_appointmenttype |
GET, PATCH | /rdv/types// | Un type : durée, capacité, prix, liste d'attente. | calendars.view_appointmenttype |
GET | /rdv/disponibilites/ | Les plages déclarées disponibles. | calendars.view_availability |
POST | /rdv/disponibilites/creer/ | Déclarer une plage — elle GÉNÈRE ses créneaux. | calendars.add_availability |
GET, PATCH, DELETE | /rdv/disponibilites// | Une plage. La suppression est refusée si des rendez-vous y sont pris. | calendars.view_availability |
GET | /rdv/creneaux/ | Les créneaux générés — LECTURE SEULE. Filtres : type, depuis, jusqu_a, ouverts. | calendars.view_availability |
GET | /rdv/ | Les rendez-vous pris. Lecture seule, permission à part : données personnelles. | calendars.view_appointment |
POST | /deplacer/// | Monter ou descendre une section, une ligne ou un bloc. | administration_pages.change_page |
GET | /guide/ | Le même mode d'emploi, à une adresse qui se retient. | aucune — un jeton valide suffit |
Un mandat par domaine, accordé et retiré séparément. On ne donne pas à un agent qui rédige des pages le droit de lire les rendez-vous pris.
Les refus ne sont pas des précautions décoratives : chacun ferme un cas où la base aurait accepté quelque chose d'inexploitable.