{"info":{"name":"es-epgdoctor Partner API","description":"API REST pour un accès partenaire externe en lecture (chaînes, EPG, qualité, charge publicitaire) et en action limitée (rafraîchissement de chaîne). Un serveur MCP sera posé par-dessus cette même API dans un second temps, avec son propre système de jetons — access_modes est déjà prêt pour cette dissociation (voir models/api-keys.js).","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{apiKey}}","type":"string"}]},"variable":[{"key":"baseUrl","value":"https://es-epgdoctor.cedric-monnier.workers.dev/v1/api","type":"string"},{"key":"apiKey","value":"","type":"string"},{"key":"channel_id","value":"","type":"string"},{"key":"channel_uuid","value":"","type":"string"},{"key":"range","value":"","type":"string"},{"key":"since","value":"","type":"string"},{"key":"until","value":"","type":"string"},{"key":"week_start","value":"","type":"string"}],"item":[{"name":"Channels","item":[{"name":"Liste des chaînes mémorisées","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/channels","host":["{{baseUrl}}"],"path":["channels"],"query":[]}},"response":[]},{"name":"Grille EPG d’une chaîne sur une plage donnée","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/channels/programs?channel_id={{channel_id}}&channel_uuid={{channel_uuid}}&since={{since}}&until={{until}}","host":["{{baseUrl}}"],"path":["channels","programs"],"query":[{"key":"channel_id","value":"{{channel_id}}"},{"key":"channel_uuid","value":"{{channel_uuid}}"},{"key":"since","value":"{{since}}"},{"key":"until","value":"{{until}}"}]}},"response":[]},{"name":"Relance un contrôle sur une chaîne déjà mémorisée","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/channels/refresh","host":["{{baseUrl}}"],"path":["channels","refresh"],"query":[]},"body":{"mode":"raw","raw":"{\n  \"channel_id\": \"raw_provider_id_123\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Analyse ADN d’une chaîne (structure de grille, diversité de titres, catégories)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/channels/quality?channel_id={{channel_id}}&channel_uuid={{channel_uuid}}&range={{range}}&week_start={{week_start}}","host":["{{baseUrl}}"],"path":["channels","quality"],"query":[{"key":"channel_id","value":"{{channel_id}}"},{"key":"channel_uuid","value":"{{channel_uuid}}"},{"key":"range","value":"{{range}}"},{"key":"week_start","value":"{{week_start}}"}]}},"response":[]},{"name":"Grille hebdomadaire densité/fraîcheur/qualité, jour par jour et heure par heure","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/channels/heatmap?channel_id={{channel_id}}&channel_uuid={{channel_uuid}}&week_start={{week_start}}","host":["{{baseUrl}}"],"path":["channels","heatmap"],"query":[{"key":"channel_id","value":"{{channel_id}}"},{"key":"channel_uuid","value":"{{channel_uuid}}"},{"key":"week_start","value":"{{week_start}}"}]}},"response":[]},{"name":"Statistiques de charge publicitaire (quotidien/horaire)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/channels/ad-load?channel_id={{channel_id}}&channel_uuid={{channel_uuid}}","host":["{{baseUrl}}"],"path":["channels","ad-load"],"query":[{"key":"channel_id","value":"{{channel_id}}"},{"key":"channel_uuid","value":"{{channel_uuid}}"}]}},"response":[]},{"name":"Taux de remplissage Ad Server (coupures programmées vs décisions réelles)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/channels/ad-fill-rate?channel_id={{channel_id}}&channel_uuid={{channel_uuid}}&week_start={{week_start}}","host":["{{baseUrl}}"],"path":["channels","ad-fill-rate"],"query":[{"key":"channel_id","value":"{{channel_id}}"},{"key":"channel_uuid","value":"{{channel_uuid}}"},{"key":"week_start","value":"{{week_start}}"}]}},"response":[]},{"name":"Snapshot complet programmes + coupures + tags IAB, pour préchargement par un décision process externe","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/channels/context?channel_id={{channel_id}}&channel_uuid={{channel_uuid}}&since={{since}}&until={{until}}","host":["{{baseUrl}}"],"path":["channels","context"],"query":[{"key":"channel_id","value":"{{channel_id}}"},{"key":"channel_uuid","value":"{{channel_uuid}}"},{"key":"since","value":"{{since}}"},{"key":"until","value":"{{until}}"}]}},"response":[]}]}],"event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test('Response status is below 500', function () {","  pm.expect(pm.response.code).to.be.below(500);","});"]}}]}