Tu veux piloter APES autrement que depuis Together ?
Donne le lien de cette page — https://apes.lirlya.fr/info — à ton agent :
tout ce qu'il lui faut est ici, et il devrait se débrouiller seul.
Une API publique et versionnée, en deux moitiés : lire tout ce
que montre le calendrier, sans rien demander ; écrire ses propres dispos, avec
un token. Les statuts sont déjà calculés côté lecture : rien à recoder. Dans la v1,
il n'y aura que des ajouts, jamais de rupture. Les membres sont désignés par un identifiant
opaque et leur nom d'affichage, jamais par leur compte Discord.
GET /api/v1/members · GET /api/v1/availability?from=&to= ·
GET /api/v1/status/now · GET /api/v1/voice
Le token donne accès à tes propres dispos, rien d'autre : ni ton seuil, ni ton
nom, ni /ping, ni les dispos d'un autre membre. C'est fait pour un script, un
raccourci ou une automatisation — pas pour une page web.
Authorization: Bearer sj_… sur chaque requête, en HTTPS uniquement.Base : https://apes.lirlya.fr
GET /api/me/v1/{"id": "…", "display_name": "…"} (le même identifiant opaque que
la lecture).GET /api/me/v1/availabilityPUT /api/me/v1/day/{date}date (AAAA-MM-JJ), d'aujourd'hui à +366 jours.POST /api/me/v1/repeatweekdays (0 = lundi … 6 = dimanche),
from_date (absent = la soirée en cours) et until, obligatoire.
Un an au plus par appel. Il n'y a pas d'« habitude » stockée : cet appel écrit de vraies
soirées, une par date.Corps d'une écriture, Content-Type: application/json :
{"ranges": [{"start": "20:00", "end": "02:00", "status": 66}]}
{"weekdays": [1, 3], "until": "2027-02-07", "mode": "skip",
"ranges": [{"start": "20:00", "end": "22:00", "status": 66}]}
"mode" change ça : "merge" masque seulement les
heures données et laisse le reste, "skip" laisse intactes les soirées qui
portent déjà quelque chose.skipped."ranges": [] efface : la soirée redevient « inconnu ». Ce
n'est pas « non dispo » — pour ça, déclare une plage au statut 0.HH:MM en heure de Paris, aligné sur la demi-heure (:00 ou
:30). 24:00 = minuit.24:00 = minuit, 25:00 = 1h du matin, jusqu'à 27:00 =
3h. Cette forme est acceptée en entrée : tu peux renvoyer telle quelle une liste
ranges reçue.end <= start = passage de minuit : "20:00" → "02:00"
est une seule plage, sur la soirée du jour de départ. Une soirée va jusqu'à 03:00.status de 0 à 100 : 0 non dispo · 33 possible · 66 probable · 100 confirmé,
ou toute valeur. null = « inconnu » déclaré : tu dis que tu ne sais
pas encore, ce qui n'est pas 0.
La soirée réellement écrite et ses plages. La date renvoyée peut
différer de celle demandée (règle de la veille). Pour une répétition, dates liste
les soirées écrites et skipped celles qui ont été laissées intactes.
{"date": "2026-11-10", "ranges": [{"start": "21:00", "end": "25:00", "status": 100}]}
detail est une phrase et code une
étiquette stable quand c'est une règle métier (chevauchement, demi-heure, date passée…) ;
detail est une liste quand le corps est mal formé.Remplace <TON_TOKEN> par ton token. Les deux commandes se suffisent.
curl https://apes.lirlya.fr/api/me/v1/availability \
-H "Authorization: Bearer <TON_TOKEN>"
curl -X PUT https://apes.lirlya.fr/api/me/v1/day/2026-11-10 \
-H "Authorization: Bearer <TON_TOKEN>" -H "Content-Type: application/json" \
-d '{"ranges":[{"start":"21:00","end":"01:00","status":100}]}'