{ "events": [ { "id": 1, "title": "Brocante de Printemps 2026", "description": "Grande brocante annuelle en plein air avec plus de 200 exposants.", "startAt": "2025-06-15T08:00:00", "endAt": "2025-06-15T18:00:00", "address": "Place de la Republique", "zipcode": "75003", "city": "Paris", "isOnline": false, "isSecret": false, "imageUrl": null, "status": "past" }, { "id": 2, "title": "Convention Cosplay Ete", "description": "Convention cosplay avec concours, stands et animations. Evenement en cours !", "startAt": "2026-03-22T10:00:00", "endAt": "2026-03-24T19:00:00", "address": "Parc des Expositions", "zipcode": "02800", "city": "Beautor", "isOnline": true, "isSecret": false, "imageUrl": "https://ticket.e-cosplay.fr/demo/convention.jpg", "status": "ongoing" }, { "id": 3, "title": "Marche de Noel 2026", "description": "Marche de Noel avec chalets, vin chaud et animations pour enfants.", "startAt": "2026-12-15T10:00:00", "endAt": "2026-12-24T20:00:00", "address": "Place du Marche", "zipcode": "59000", "city": "Lille", "isOnline": true, "isSecret": false, "imageUrl": null, "status": "upcoming" } ], "categories": { "1": [ { "id": 1, "name": "Entrees", "position": 0, "startAt": "2026-05-01T00:00:00", "endAt": "2026-06-15T18:00:00", "isHidden": false, "isActive": true }, { "id": 2, "name": "Reservations Brocante", "position": 1, "startAt": "2026-04-01T00:00:00", "endAt": "2026-06-10T23:59:00", "isHidden": false, "isActive": true } ], "2": [ { "id": 3, "name": "General", "position": 0, "startAt": "2026-07-01T00:00:00", "endAt": "2026-08-21T19:00:00", "isHidden": false, "isActive": true }, { "id": 4, "name": "VIP", "position": 1, "startAt": "2026-07-01T00:00:00", "endAt": "2026-08-15T23:59:00", "isHidden": false, "isActive": true } ], "3": [ { "id": 5, "name": "Chalets & Stands", "position": 0, "startAt": "2026-10-01T00:00:00", "endAt": "2026-12-14T23:59:00", "isHidden": false, "isActive": true }, { "id": 6, "name": "Entrees Visiteurs", "position": 1, "startAt": "2026-11-01T00:00:00", "endAt": "2026-12-24T20:00:00", "isHidden": false, "isActive": true } ] }, "billets": { "1": [ { "id": 1, "name": "Entree Adulte", "priceHT": 500, "quantity": 500, "sold": 312, "type": "billet", "isGeneratedBillet": true, "notBuyable": false, "position": 0 }, { "id": 2, "name": "Entree Enfant (-12 ans)", "priceHT": 0, "quantity": null, "sold": 145, "type": "billet", "isGeneratedBillet": true, "notBuyable": false, "position": 1 } ], "2": [ { "id": 3, "name": "Emplacement 3m", "priceHT": 1500, "quantity": 80, "sold": 72, "type": "reservation_brocante", "isGeneratedBillet": false, "notBuyable": false, "position": 0 } ], "3": [ { "id": 4, "name": "Pass 2 jours", "priceHT": 2000, "quantity": 300, "sold": 189, "type": "billet", "isGeneratedBillet": true, "notBuyable": false, "position": 0 }, { "id": 5, "name": "Pass 1 jour Samedi", "priceHT": 1200, "quantity": 200, "sold": 156, "type": "billet", "isGeneratedBillet": true, "notBuyable": false, "position": 1 } ], "4": [ { "id": 6, "name": "Pass VIP 2 jours", "priceHT": 5000, "quantity": 30, "sold": 28, "type": "billet", "isGeneratedBillet": true, "notBuyable": false, "position": 0 } ], "5": [ { "id": 7, "name": "Chalet Standard (3m)", "priceHT": 8000, "quantity": 40, "sold": 12, "type": "reservation_brocante", "isGeneratedBillet": false, "notBuyable": false, "position": 0 } ], "6": [ { "id": 8, "name": "Entree Gratuite", "priceHT": 0, "quantity": null, "sold": 0, "type": "billet", "isGeneratedBillet": true, "notBuyable": false, "position": 0 } ] }, "billetDetails": { "1": { "id": 1, "name": "Entree Adulte", "description": "Entree standard pour les adultes. Billet electronique avec QR code.", "priceHT": 500, "quantity": 500, "sold": 312, "type": "billet", "isGeneratedBillet": true, "hasDefinedExit": false, "notBuyable": false, "position": 0, "imageUrl": null, "category": {"id": 1, "name": "Entrees"}, "event": {"id": 1, "title": "Brocante de Printemps 2026"} }, "2": { "id": 2, "name": "Entree Enfant (-12 ans)", "description": "Gratuit pour les enfants de moins de 12 ans.", "priceHT": 0, "quantity": null, "sold": 145, "type": "billet", "isGeneratedBillet": true, "hasDefinedExit": false, "notBuyable": false, "position": 1, "imageUrl": null, "category": {"id": 1, "name": "Entrees"}, "event": {"id": 1, "title": "Brocante de Printemps 2026"} }, "3": { "id": 3, "name": "Emplacement 3m", "description": "Emplacement de 3 metres lineaires pour exposant.", "priceHT": 1500, "quantity": 80, "sold": 72, "type": "reservation_brocante", "isGeneratedBillet": false, "hasDefinedExit": false, "notBuyable": false, "position": 0, "imageUrl": null, "category": {"id": 2, "name": "Reservations Brocante"}, "event": {"id": 1, "title": "Brocante de Printemps 2026"} }, "4": { "id": 4, "name": "Pass 2 jours", "description": "Acces aux 2 jours de la convention.", "priceHT": 2000, "quantity": 300, "sold": 189, "type": "billet", "isGeneratedBillet": true, "hasDefinedExit": true, "notBuyable": false, "position": 0, "imageUrl": "https://ticket.e-cosplay.fr/demo/pass-2j.jpg", "category": {"id": 3, "name": "General"}, "event": {"id": 2, "title": "Convention Cosplay Ete"} }, "5": { "id": 5, "name": "Pass 1 jour Samedi", "description": "Acces le samedi uniquement.", "priceHT": 1200, "quantity": 200, "sold": 156, "type": "billet", "isGeneratedBillet": true, "hasDefinedExit": true, "notBuyable": false, "position": 1, "imageUrl": null, "category": {"id": 3, "name": "General"}, "event": {"id": 2, "title": "Convention Cosplay Ete"} }, "6": { "id": 6, "name": "Pass VIP 2 jours", "description": "Acces VIP avec espace dedie, boissons et rencontre artistes.", "priceHT": 5000, "quantity": 30, "sold": 28, "type": "billet", "isGeneratedBillet": true, "hasDefinedExit": true, "notBuyable": false, "position": 0, "imageUrl": "https://ticket.e-cosplay.fr/demo/vip.jpg", "category": {"id": 4, "name": "VIP"}, "event": {"id": 2, "title": "Convention Cosplay Ete"} }, "7": { "id": 7, "name": "Chalet Standard (3m)", "description": "Chalet en bois de 3 metres avec eclairage et prise electrique.", "priceHT": 8000, "quantity": 40, "sold": 12, "type": "reservation_brocante", "isGeneratedBillet": false, "hasDefinedExit": false, "notBuyable": false, "position": 0, "imageUrl": null, "category": {"id": 5, "name": "Chalets & Stands"}, "event": {"id": 3, "title": "Marche de Noel 2026"} }, "8": { "id": 8, "name": "Entree Gratuite", "description": "Entree gratuite pour tous les visiteurs du marche de Noel.", "priceHT": 0, "quantity": null, "sold": 0, "type": "billet", "isGeneratedBillet": true, "hasDefinedExit": false, "notBuyable": false, "position": 0, "imageUrl": null, "category": {"id": 6, "name": "Entrees Visiteurs"}, "event": {"id": 3, "title": "Marche de Noel 2026"} } }, "scan": { "ETICKET-DEMO-0001-AAAA": { "state": "accepted", "reason": null, "reference": "ETICKET-DEMO-0001-AAAA", "billetName": "Pass 2 jours", "buyerFirstName": "Jean", "buyerLastName": "Dupont", "isInvitation": false, "firstScannedAt": null, "hasDefinedExit": true, "details": {}, "_comment": "Billet valide - jamais scanne" }, "ETICKET-DEMO-0002-BBBB": { "state": "refused", "reason": "exit_definitive", "reference": "ETICKET-DEMO-0002-BBBB", "billetName": "Pass 2 jours", "buyerFirstName": "Marie", "buyerLastName": "Martin", "isInvitation": false, "firstScannedAt": "2026-03-22T11:00:00", "hasDefinedExit": true, "details": null, "_comment": "Billet valide - deja scanne avec sortie definitive" }, "ETICKET-DEMO-0003-CCCC": { "state": "accepted", "reason": null, "reference": "ETICKET-DEMO-0003-CCCC", "billetName": "Pass 1 jour Samedi", "buyerFirstName": "Pierre", "buyerLastName": "Durand", "isInvitation": false, "firstScannedAt": "2026-03-22T10:30:00", "hasDefinedExit": false, "details": {}, "_comment": "Billet valide - entree/sortie illimitee (deja scanne une fois)" }, "ETICKET-DEMO-0004-DDDD": { "state": "accepted", "reason": null, "reference": "ETICKET-DEMO-0004-DDDD", "billetName": "Pass VIP 2 jours", "buyerFirstName": "Sophie", "buyerLastName": "Bernard", "isInvitation": true, "firstScannedAt": null, "hasDefinedExit": true, "details": {}, "_comment": "Invitation - jamais scannee" }, "ETICKET-DEMO-0005-EEEE": { "state": "refused", "reason": "invalid", "reference": "ETICKET-DEMO-0005-EEEE", "billetName": "Vote Meilleur Cosplay", "buyerFirstName": "Lucas", "buyerLastName": "Petit", "isInvitation": false, "firstScannedAt": null, "hasDefinedExit": false, "details": null, "_comment": "Vote - pas de billet genere, refuse car type vote" } } }