Liste vs export

Deux niveaux de détail pour les programmes : catalogue léger pour inventaire / sync, export (ou détail) pour le flux complet.

Endpoint Rôle per_page
GET /v1/programs Liste légère — tokens + métadonnées + updated_at défaut 25, max 100
GET /v1/programs/export Flux complet paginé (lots, prix, docs, images…) page + per_page obligatoires (max 25)
GET /v1/programs/{token} Même richesse que l’export, un seul programme —

Champs par niveau

« Liste » = GET /v1/programs. « Export » = export ou détail programme.

Groupe Champ / bloc Liste Export Note
Programme id Oui Oui Interne — ne pas utiliser dans les URLs.
Programme token Oui Oui —
Programme name Oui Oui —
Programme slug Oui Oui —
Programme is_active Oui Oui —
Programme updated_at Oui — Uniquement sur `GET /v1/programs` (sync).
Programme contrat_type — Oui —
Programme addresses — Oui —
Programme fiscalites / prestations / … — Oui Tous les blocs enrichis.
Programme documents / images — Oui URLs S3 signées.
Programme lots[] — Oui Lots complets + annexes.
Programme sale_parameter — Oui —
Lot (via liste programmes) — — Pas dans la liste programmes.
Lot token, number, type, state… — Oui Dans export / détail / `…/lots/{lot}`.
Lot prices / surfaces / documents — Oui —
Application id, name, slug — Oui Enveloppe de l’export uniquement.
Pagination meta.* Oui Oui Liste et export.
Pagination : chaque réponse liste / export expose meta.total (nombre total de programmes) et meta.last_page — continuer tant que current_page < last_page. Sync incrémentale : query updated_since (ISO 8601) et en-tête If-None-Match (réponse 304 si rien n’a changé).