Pagination & filtres
Pagination & filtres
Tous les endpoints de liste partagent la même enveloppe, la même pagination par curseur, les mêmes paramètres de filtre et le même mécanisme d'expansion.
Enveloppe de réponse
{
"data": [ … ],
"pagination": {
"next_cursor": "eyJzb3J0X2tleSI6IjIwMjYtMDktMTIiLCJpZCI6NDUyMX0",
"has_more": true,
"limit": 25
}
}
Les endpoints de ressource unique (/v1/me, /v1/crew, /v1/artists/{id}, /v1/promoters/{id}, /v1/events/{id}, /v1/venues/{id}, et POST /v1/booking-requests) renvoient l'objet directement — sans enveloppe data ni pagination. GET /v1/events/{id}/ticket-tiers est le seul cas hybride : une petite liste fixe enveloppée dans { "data": [ … ] } mais sans pagination ni curseur.
Pagination par curseur
La pagination est basée sur des curseurs. Les curseurs sont des chaînes opaques — ne les analysez pas et ne les construisez pas vous-même.
- Faites la première requête sans
cursor. - Si
has_morevauttrue, demandez la page suivante avec?cursor={next_cursor}. - Répétez jusqu'à ce que
has_morevaillefalse.
curl "https://www.sway.events/api/v1/events?limit=50" \
-H "Authorization: Bearer sway_sk_VOTRE_CLE"
curl "https://www.sway.events/api/v1/events?limit=50&cursor=eyJzb3J0X2tleSI6…" \
-H "Authorization: Bearer sway_sk_VOTRE_CLE"
| Paramètre | Défaut | Plage |
|---|---|---|
limit | 25 | 1 – 100 |
cursor | — | valeur de next_cursor de la page précédente |
Un curseur malformé ou périmé renvoie 400 invalid_cursor — repartez de la première page.
Filtres
Les flux d'événements acceptent un filtre status ; les deux flux datés acceptent aussi from / to :
| Paramètre | Valeurs | Signification |
|---|---|---|
status | upcoming | past | all | Défaut upcoming — les événements passés sont exclus sauf si vous passez past ou all. upcoming = date de début dans le futur, past = déjà commencé/terminé |
from | Date / date-heure ISO 8601 | Événements commençant à partir de cet instant |
to | Date / date-heure ISO 8601 | Événements commençant au plus tard à cet instant |
from / to s'appliquent à GET /v1/events et GET /v1/promoters/{id}/events. GET /v1/artists/{id}/events n'accepte que status. L'ordre est fixe (upcoming → date de début croissante ; past / all → décroissante) — il n'y a pas de paramètre sort.
curl "https://www.sway.events/api/v1/promoters/697/events?status=upcoming" \
-H "Authorization: Bearer sway_sk_VOTRE_CLE"
Les valeurs de filtre invalides renvoient 400 validation_error.
Expansion
Deux endpoints d'événements acceptent ?expand= pour intégrer directement les ressources liées (profondeur 1) :
GET /v1/events/{id}—venueetlineupsont toujours intégrés ; ajoutez?expand=ticket_tierspour inclure aussi les catégories.GET /v1/promoters/{id}/events— les événements portent par défaut une référencevenuelégère ({ id, name }) et pas de lineup/catégories.?expand=venuefait passer la salle au niveau public complet ;?expand=lineupet?expand=ticket_tiersajoutent ces tableaux.
GET /v1/events (le flux combiné) ne supporte pas expand — le passer renvoie 400 validation_error. GET /v1/artists/{id}/events n'accepte pas non plus expand.
curl "https://www.sway.events/api/v1/promoters/697/events?expand=venue,lineup,ticket_tiers" \
-H "Authorization: Bearer sway_sk_VOTRE_CLE"
| Valeur | Intègre |
|---|---|
venue | La salle de l'événement au niveau public complet |
lineup | Les entrées du lineup avec infos artiste, scène et horaires de set |
ticket_tiers | Les mêmes données que GET /v1/events/{id}/ticket-tiers |
Les objets intégrés sont toujours sérialisés au niveau public, sauf si la ressource est aussi gérée par votre crew.
?expand=venue,lineup,ticket_tiers remplace jusqu'à trois requêtes supplémentaires par événement — utilisez-la pour rester bien en dessous de vos limites de débit.Visibilité : pourquoi certaines ressources renvoient 404
L'API distingue les ressources gérées (les pages et événements de votre crew) des ressources étrangères accessibles à travers vos événements (invités du lineup, salles) — voir l'aperçu.
- Les ressources étrangères sont intégrées uniquement. Elles apparaissent dans les réponses d'événements avec
"managed": falseet un jeu de champs public réduit. - Récupérer directement un artiste ou promoteur étranger (
GET /v1/artists/{id}) renvoie 404 — ils ne sont pas adressables directement. - Les ressources entièrement en dehors du graphe de votre crew renvoient aussi 404, jamais 403. L'API ne confirme pas l'existence de données auxquelles vous n'avez pas accès.
- Les artistes de votre roster sont renvoyés même s'ils ne sont pas publiés (ce sont vos propres données). Pour toute autre ressource — promoteurs, événements, salles et toute ressource intégrée/étrangère — les brouillons (non publiés) renvoient 404 ou sont omis des lineups.
En pratique : traitez chaque 404 de la même façon — la ressource n'existe pas pour votre clé.

