{"info":{"_postman_id":"5ee494d3-a4b9-4f76-b5ef-b8eb04b00646","name":"WebhookFlow","description":"<html><head></head><body><h2 id=\"webhookflow-api\">WebhookFlow API</h2>\n<p>Base URL: <code>{{baseURLWF}}</code></p>\n<p>This collection groups endpoints for managing <strong>pipelines</strong>, receiving <strong>webhooks</strong>, and tracking <strong>jobs</strong> and <strong>delivery attempts</strong> in the WebhookFlow service.</p>\n<h3 id=\"conventions\">Conventions</h3>\n<ul>\n<li>All URLs in requests are relative to <code>{{baseURLWF}}</code>.</li>\n<li>Path parameters use Postman’s <code>:paramName</code> syntax (for example <code>:pipelineId</code>).</li>\n<li>List endpoints are <strong>paginated</strong> using query parameters like <code>limit</code> and <code>offset</code> (documented per request).</li>\n</ul>\n<h3 id=\"resources\">Resources</h3>\n<ul>\n<li><strong>Pipelines</strong>: Configure how inbound webhook events are routed and delivered to subscribers.</li>\n<li><strong>Webhooks</strong>: Ingress endpoint used by external producers to send events.</li>\n<li><strong>Jobs</strong>: Track processing/delivery work created from inbound events.</li>\n<li><strong>Delivery Attempts</strong>: Inspect each attempt to deliver a job to a subscriber destination.</li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"37800136","collectionId":"5ee494d3-a4b9-4f76-b5ef-b8eb04b00646","publishedId":"2sBXijKXG3","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-03-23T16:03:55.000Z"},"item":[{"name":"Auth","item":[{"name":"Register","id":"e868bce0-b459-4376-8837-4a5c6791c69e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\":\"user@gmai.com\",\r\n    \"password\":\"12345678\",\r\n    \"role\":\"user\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/auth/register","urlObject":{"path":["api","auth","register"],"host":["{{baseURLWF}}"],"query":[],"variable":[]}},"response":[{"id":"eb780d67-d5e4-4662-807d-0cad83b62aed","name":"Register - Successfully","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\":\"test@gmai.com\",\r\n    \"password\":\"12345678\",\r\n    \"role\":\"admin\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/auth/register"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"362"},{"key":"ETag","value":"W/\"16a-vUdvi0+HfIltmw5Baz6gCqYHoTE\""},{"key":"Date","value":"Mon, 23 Mar 2026 19:49:59 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Registration successful\",\n    \"data\": {\n        \"id\": \"0190d321-0c6b-4a4d-8bfe-4ea7a122baed\",\n        \"email\": \"test@gmai.com\",\n        \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIwMTkwZDMyMS0wYzZiLTRhNGQtOGJmZS00ZWE3YTEyMmJhZWQiLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE3NzQyOTUzOTksImV4cCI6MTc3NDkwMDE5OX0.Tef1YxBeVD6kXEZq_RN9cXYeCZai8hL1h0QhvAJ-qvM\"\n    },\n    \"errors\": null\n}"},{"id":"25321701-4af8-4588-85ea-e52f19d6a346","name":"Register - Failed Email is already registered","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\":\"test@gmai.com\",\r\n    \"password\":\"12345678\",\r\n    \"role\":\"admin\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/auth/register"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"84"},{"key":"ETag","value":"W/\"54-UeEl8NujQOPEkrDSU8wkaSMqty8\""},{"key":"Date","value":"Mon, 23 Mar 2026 19:53:19 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Email is already registered.\",\n    \"data\": null,\n    \"errors\": null\n}"}],"_postman_id":"e868bce0-b459-4376-8837-4a5c6791c69e"},{"name":"Login","id":"7ec61ad6-f304-43d2-984d-111d2e05a62c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\":\"test@gmai.com\",\r\n    \"password\":\"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/auth/login","urlObject":{"path":["api","auth","login"],"host":["{{baseURLWF}}"],"query":[],"variable":[]}},"response":[{"id":"e672dafc-9df7-4bfe-91ee-40736f0e4b05","name":"Login - Failed Invalid email or password","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\":\"test@gmai.com\",\r\n    \"password\":\"1234567\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/auth/login"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"82"},{"key":"ETag","value":"W/\"52-mz9sKTk5IVc9hP3D5vn6PkYB6kE\""},{"key":"Date","value":"Mon, 23 Mar 2026 19:54:10 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Invalid email or password.\",\n    \"data\": null,\n    \"errors\": null\n}"},{"id":"42e7a5a6-8ebb-45f8-9ab6-1dc9c98f5599","name":"Login - Login Successfully","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\":\"test@gmai.com\",\r\n    \"password\":\"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/auth/login"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"355"},{"key":"ETag","value":"W/\"163-MKo48I3pODexYzRLlVLN/6r/6u4\""},{"key":"Date","value":"Mon, 23 Mar 2026 19:54:36 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Login successful\",\n    \"data\": {\n        \"id\": \"0190d321-0c6b-4a4d-8bfe-4ea7a122baed\",\n        \"email\": \"test@gmai.com\",\n        \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIwMTkwZDMyMS0wYzZiLTRhNGQtOGJmZS00ZWE3YTEyMmJhZWQiLCJyb2xlIjoiYWRtaW4iLCJpYXQiOjE3NzQyOTU2NzYsImV4cCI6MTc3NDkwMDQ3Nn0.T1kmzbjwRnlOpspT5rl1mVJg6Eo99K0rQe3SaNZaHvg\"\n    },\n    \"errors\": null\n}"}],"_postman_id":"7ec61ad6-f304-43d2-984d-111d2e05a62c"}],"id":"f5cad342-1959-4e03-9d09-03e797a6288e","_postman_id":"f5cad342-1959-4e03-9d09-03e797a6288e","description":""},{"name":"Pipelines","item":[{"name":"Get All Pipelines","id":"bc9ffbe6-7247-4be3-8456-e436576cbde5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"{{baseURLWF}}/api/pipelines?limit=10&offset=0","description":"<p>Retrieves a paginated list of all pipelines registered in the s</p>\n","urlObject":{"path":["api","pipelines"],"host":["{{baseURLWF}}"],"query":[{"key":"limit","value":"10"},{"key":"offset","value":"0"}],"variable":[]}},"response":[{"id":"201428ca-0562-4296-a186-2e0333664c59","name":"Get All Pipelines - Successfully","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"{{baseURLWF}}/api/pipelines?limit=10&offset=0","host":["{{baseURLWF}}"],"path":["api","pipelines"],"query":[{"key":"limit","value":"10"},{"key":"offset","value":"0"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"2394"},{"key":"ETag","value":"W/\"95a-fH7tkGfepOefk0tpyD4vUSLQkQk\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:18:33 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Pipelines retrieved\",\n    \"data\": [\n        {\n            \"id\": \"c9afae2f-fcaa-4cba-b996-4c09f9c2c7c2\",\n            \"name\": \"string\",\n            \"description\": \"412123324\",\n            \"webhookPath\": \"summarize-youtube-video2\",\n            \"actionType\": \"summarize-youtube-video\",\n            \"createdAt\": \"2026-03-23T13:52:20.235Z\",\n            \"updatedAt\": \"2026-03-23T13:52:20.235Z\"\n        },\n        {\n            \"id\": \"7d354c51-2428-443b-8808-511c19080c4c\",\n            \"name\": \"string\",\n            \"description\": \"412123324\",\n            \"webhookPath\": \"summarize-youtube-video1\",\n            \"actionType\": \"summarize-youtube-video\",\n            \"createdAt\": \"2026-03-21T20:53:05.522Z\",\n            \"updatedAt\": \"2026-03-21T20:53:05.522Z\"\n        },\n        {\n            \"id\": \"48721f35-f909-4132-a005-88a7225520d1\",\n            \"name\": \"string\",\n            \"description\": \"412123324\",\n            \"webhookPath\": \"summarize-youtube-video\",\n            \"actionType\": \"summarize-youtube-video\",\n            \"createdAt\": \"2026-03-21T16:37:04.390Z\",\n            \"updatedAt\": \"2026-03-21T16:37:04.390Z\"\n        },\n        {\n            \"id\": \"09206dcc-7168-40e8-951e-4c73e7ff037c\",\n            \"name\": \"string\",\n            \"description\": \"412123324\",\n            \"webhookPath\": \"transform-json\",\n            \"actionType\": \"transform-json\",\n            \"createdAt\": \"2026-03-21T12:39:59.621Z\",\n            \"updatedAt\": \"2026-03-21T12:39:59.621Z\"\n        },\n        {\n            \"id\": \"99e2138d-b144-44eb-8bf3-81985ddf1c74\",\n            \"name\": \"string\",\n            \"description\": \"412123324\",\n            \"webhookPath\": \"extract-payload-keys\",\n            \"actionType\": \"extract-payload-keys\",\n            \"createdAt\": \"2026-03-21T12:30:16.040Z\",\n            \"updatedAt\": \"2026-03-21T12:30:16.040Z\"\n        },\n        {\n            \"id\": \"fdd71482-0931-40a7-abb5-6295ec9027f2\",\n            \"name\": \"string\",\n            \"description\": \"412123324\",\n            \"webhookPath\": \"test12\",\n            \"actionType\": \"summarize-youtube-video\",\n            \"createdAt\": \"2026-03-21T08:15:05.140Z\",\n            \"updatedAt\": \"2026-03-21T08:15:05.140Z\"\n        },\n        {\n            \"id\": \"200f2b4f-7a82-4ef3-b74d-e8429027c0fd\",\n            \"name\": \"string\",\n            \"description\": \"4123324\",\n            \"webhookPath\": \"test1\",\n            \"actionType\": \"transform-json\",\n            \"createdAt\": \"2026-03-19T18:40:01.784Z\",\n            \"updatedAt\": \"2026-03-19T18:40:01.784Z\"\n        },\n        {\n            \"id\": \"2906a8e5-0ab6-463b-88d1-7a6945011cfd\",\n            \"name\": \"string\",\n            \"description\": \"st1rin1g\",\n            \"webhookPath\": \"test\",\n            \"actionType\": \"summarize-youtube-video\",\n            \"createdAt\": \"2026-03-16T19:57:46.435Z\",\n            \"updatedAt\": \"2026-03-16T19:57:46.435Z\"\n        },\n        {\n            \"id\": \"055caa7b-db90-44f5-9e38-7e98b1ee1e6a\",\n            \"name\": \"string\",\n            \"description\": \"st1rin1g\",\n            \"webhookPath\": \"stri1n\",\n            \"actionType\": \"summarize-youtube-video\",\n            \"createdAt\": \"2026-03-14T10:46:00.655Z\",\n            \"updatedAt\": \"2026-03-14T10:46:00.655Z\"\n        },\n        {\n            \"id\": \"fce5fdce-ec6a-4c02-9d3f-e116789048f3\",\n            \"name\": \"string\",\n            \"description\": \"string\",\n            \"webhookPath\": \"strin\",\n            \"actionType\": \"summarize-youtube-video\",\n            \"createdAt\": \"2026-03-14T10:25:40.891Z\",\n            \"updatedAt\": \"2026-03-14T10:25:40.891Z\"\n        }\n    ],\n    \"errors\": null\n}"}],"_postman_id":"bc9ffbe6-7247-4be3-8456-e436576cbde5"},{"name":"Create Pipeline","id":"d6d7333a-9bc9-47cf-a69d-76bbd29d3547","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"string\",\r\n    \"description\": \"412123324\",\r\n    \"webhookPath\": \"summarize-youtube-video21\",\r\n    \"actionType\": \"summarize-youtube-video\",\r\n    \"subscribers\": [\r\n        \"https://webhook.site/9b997c29-9bb7-4791-b233-44a9cf524c5a\"\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/pipelines","description":"<p>Creates a new webhook pipeline with a defined action type and a list of subscriber URLs that will receive the processed payload.</p>\n","urlObject":{"path":["api","pipelines"],"host":["{{baseURLWF}}"],"query":[],"variable":[]}},"response":[{"id":"42600d78-35c1-4e58-bb70-a6cfff0b68b0","name":"Create Pipeline - Created Successfully","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"string\",\r\n    \"description\": \"412123324\",\r\n    \"webhookPath\": \"summarize-youtube-video21\",\r\n    \"actionType\": \"summarize-youtube-video\",\r\n    \"subscribers\": [\r\n        \"https://webhook.site/9b997c29-9bb7-4791-b233-44a9cf524c5a\"\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/pipelines"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"209"},{"key":"ETag","value":"W/\"d1-qKsRl3JX7t1WLnGNsYCyLn/nI78\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:19:55 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Pipeline created\",\n    \"data\": {\n        \"id\": \"938c1344-4e3b-4f28-af30-6bf000a8ef56\",\n        \"createdAt\": \"2026-03-23T14:19:55.127Z\",\n        \"name\": \"string\",\n        \"webhookPath\": \"summarize-youtube-video21\"\n    },\n    \"errors\": null\n}"},{"id":"91408e47-e823-4293-843b-06f6d8d5cca2","name":"Create Pipeline - Unauthorized","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"string\",\r\n    \"description\": \"412123324\",\r\n    \"webhookPath\": \"summarize-youtube-video21\",\r\n    \"actionType\": \"summarize-youtube-video\",\r\n    \"subscribers\": [\r\n        \"https://webhook.site/9b997c29-9bb7-4791-b233-44a9cf524c5a\"\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/pipelines"},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"98"},{"key":"ETag","value":"W/\"62-3tHYWjjVE/CVgv8iQNb2QiXbu6Q\""},{"key":"Date","value":"Mon, 23 Mar 2026 19:51:24 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Missing or malformed Authorization header.\",\n    \"data\": null,\n    \"errors\": null\n}"},{"id":"8ffd0189-0a62-414f-a31a-81daafeb9fe3","name":"Create Pipeline - Failed Webhook path already exists","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"string\",\r\n    \"description\": \"412123324\",\r\n    \"webhookPath\": \"summarize-youtube-video21\",\r\n    \"actionType\": \"summarize-youtube-video\",\r\n    \"subscribers\": [\r\n        \"https://webhook.site/9b997c29-9bb7-4791-b233-44a9cf524c5a\"\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/pipelines"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"83"},{"key":"ETag","value":"W/\"53-WQykcfotAMAOO1z2sm1GZ/fkV/c\""},{"key":"Date","value":"Mon, 23 Mar 2026 19:51:57 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Webhook path already exists\",\n    \"data\": null,\n    \"errors\": null\n}"}],"_postman_id":"d6d7333a-9bc9-47cf-a69d-76bbd29d3547"},{"name":"Update Pipeline","id":"9ac43fbc-8f76-477b-b9ab-afcd5ce16b27","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"string\",\r\n  \"description\": \"string\",\r\n  \"webhookPath\": \"string1111111\",\r\n  \"actionType\": \"summarize-youtube-video\"\r\n\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/pipelines/:pipelineId","description":"<p>Updates one or more fields of an existing pipeline. At least one field must be provided.</p>\n","urlObject":{"path":["api","pipelines",":pipelineId"],"host":["{{baseURLWF}}"],"query":[],"variable":[{"type":"any","value":"bb193162-97bc-4187-8ad0-44e9db0afa65","key":"pipelineId"}]}},"response":[{"id":"5dfbe78e-0cfa-4f7b-a66c-4f3a1d1738b1","name":"Update Pipeline - Updated Successfully","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"string\",\r\n  \"description\": \"string\",\r\n  \"webhookPath\": \"string1111111\",\r\n  \"actionType\": \"summarize-youtube-video\"\r\n\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseURLWF}}/api/pipelines/:pipelineId","host":["{{baseURLWF}}"],"path":["api","pipelines",":pipelineId"],"variable":[{"key":"pipelineId","value":"bb193162-97bc-4187-8ad0-44e9db0afa66"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"197"},{"key":"ETag","value":"W/\"c5-W7fE2iwffr1j37voDyAxVVYtJJE\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:20:31 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Pipeline updated\",\n    \"data\": {\n        \"id\": \"bb193162-97bc-4187-8ad0-44e9db0afa66\",\n        \"name\": \"string\",\n        \"webhookPath\": \"string1111111\",\n        \"createdAt\": \"2026-03-12T22:36:09.203Z\"\n    },\n    \"errors\": null\n}"},{"id":"d3684ce4-92c3-45b7-95bd-0bb0d18e72b1","name":"Update Pipeline - Failed Pipeline Was Not Found","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"string\",\r\n  \"description\": \"string\",\r\n  \"webhookPath\": \"string1111111\",\r\n  \"actionType\": \"summarize-youtube-video\"\r\n\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseURLWF}}/api/pipelines/:pipelineId","host":["{{baseURLWF}}"],"path":["api","pipelines",":pipelineId"],"variable":[{"key":"pipelineId","value":"bb193162-97bc-4187-8ad0-44e9db0afa65"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"74"},{"key":"ETag","value":"W/\"4a-jx2W/Zvfxb1uW5Gw/PkAqfGFvzw\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:21:01 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Pipeline not found\",\n    \"data\": null,\n    \"errors\": null\n}"}],"_postman_id":"9ac43fbc-8f76-477b-b9ab-afcd5ce16b27"},{"name":"Get By Id","id":"7c6035c5-1a9a-4ad9-9f95-285ad7daa80e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"{{baseURLWF}}/api/pipelines/:pipelineId","description":"<p>Retrieves full details of a specific pipeline using its UUID.</p>\n","urlObject":{"path":["api","pipelines",":pipelineId"],"host":["{{baseURLWF}}"],"query":[],"variable":[{"type":"any","value":"bb193162-97bc-4187-8ad0-44e9db0afa66","key":"pipelineId"}]}},"response":[{"id":"f6c51961-3d42-4308-8d1c-2b121f53cdd6","name":"Get By Id - Retrieved Successfully","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"{{baseURLWF}}/api/pipelines/:pipelineId","host":["{{baseURLWF}}"],"path":["api","pipelines",":pipelineId"],"variable":[{"key":"pipelineId","value":"bb193162-97bc-4187-8ad0-44e9db0afa66"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"466"},{"key":"ETag","value":"W/\"1d2-NI0RvnmhaWIFOfu292CJy81lWCM\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:21:35 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Pipeline retrieved\",\n    \"data\": {\n        \"id\": \"bb193162-97bc-4187-8ad0-44e9db0afa66\",\n        \"name\": \"string\",\n        \"description\": \"string\",\n        \"webhookPath\": \"string1111111\",\n        \"actionType\": \"summarize-youtube-video\",\n        \"createdAt\": \"2026-03-12T22:36:09.203Z\",\n        \"updatedAt\": \"2026-03-23T14:20:55.441Z\",\n        \"subscribers\": [\n            {\n                \"targetUrl\": \"http://test\"\n            },\n            {\n                \"targetUrl\": \"http://test1\"\n            },\n            {\n                \"targetUrl\": \"http://test11\"\n            },\n            {\n                \"targetUrl\": \"http://test115\"\n            },\n            {\n                \"targetUrl\": \"http://test1151\"\n            }\n        ]\n    },\n    \"errors\": null\n}"},{"id":"e00c4068-fb95-4601-b391-f88ad273fdd1","name":"Get By Id - Failed Pipeline Was Not Found","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"{{baseURLWF}}/api/pipelines/:pipelineId","host":["{{baseURLWF}}"],"path":["api","pipelines",":pipelineId"],"variable":[{"key":"pipelineId","value":"bb193162-97bc-4187-8ad0-44e9db0afa65"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"78"},{"key":"ETag","value":"W/\"4e-Zr2Fbx22PCwk1BsD5voHyR0Ls4c\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:22:43 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Pipeline was not found\",\n    \"data\": null,\n    \"errors\": null\n}"}],"_postman_id":"7c6035c5-1a9a-4ad9-9f95-285ad7daa80e"},{"name":"Get By WebhookPath","id":"6c347bb1-ef3f-4bab-bfba-299b427a73c4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"{{baseURLWF}}/api/pipelines/webhook/:webhookPath","description":"<p>Looks up a pipeline using its webhook path string instead of its ID. Useful for resolving which pipeline handles a given webhook URL.</p>\n","urlObject":{"path":["api","pipelines","webhook",":webhookPath"],"host":["{{baseURLWF}}"],"query":[],"variable":[{"type":"any","value":"summarize-youtube-video2","key":"webhookPath"}]}},"response":[{"id":"98616231-0dd1-4c03-b03e-81f55b8ee04f","name":"Get By WebhookPath - Retrieved Successfully","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"{{baseURLWF}}/api/pipelines/webhook/:webhookPath","host":["{{baseURLWF}}"],"path":["api","pipelines","webhook",":webhookPath"],"variable":[{"key":"webhookPath","value":"summarize-youtube-video"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"357"},{"key":"ETag","value":"W/\"165-SJZo0wT3ZRhHdvE6cGAXJ8kfhrU\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:23:35 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Pipeline retrieved\",\n    \"data\": {\n        \"id\": \"48721f35-f909-4132-a005-88a7225520d1\",\n        \"name\": \"string\",\n        \"description\": \"412123324\",\n        \"webhookPath\": \"summarize-youtube-video\",\n        \"actionType\": \"summarize-youtube-video\",\n        \"createdAt\": \"2026-03-21T16:37:04.390Z\",\n        \"updatedAt\": \"2026-03-21T16:37:04.390Z\",\n        \"subscribers\": [\n            {\n                \"targetUrl\": \"http://test\"\n            }\n        ]\n    },\n    \"errors\": null\n}"},{"id":"7753fe45-f20e-48f4-aa8c-cc80fa9d36bb","name":"Get By WebhookPath - Failed Pipeline Was Not Found","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"{{baseURLWF}}/api/pipelines/webhook/:webhookPath","host":["{{baseURLWF}}"],"path":["api","pipelines","webhook",":webhookPath"],"variable":[{"key":"webhookPath","value":"summarize-youtube-vide"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"79"},{"key":"ETag","value":"W/\"4f-pxhD9SiQ0ELLhdfII1/M//nNlwk\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:24:22 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Pipeline was not found.\",\n    \"data\": null,\n    \"errors\": null\n}"}],"_postman_id":"6c347bb1-ef3f-4bab-bfba-299b427a73c4"},{"name":"Add Pipeline Subscriber","id":"0a79dde4-d157-400f-94ec-7aceffab13b5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"targetUrl\": \"http://test11511\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/pipelines/:pipelineId/subscribers/","description":"<p>Adds a new subscriber URL to an existing pipeline. The subscriber will start receiving processed payloads on future webhook triggers.</p>\n","urlObject":{"path":["api","pipelines",":pipelineId","subscribers",""],"host":["{{baseURLWF}}"],"query":[],"variable":[{"type":"any","value":"bb193162-97bc-4187-8ad0-44e9db0afa66","key":"pipelineId"}]}},"response":[{"id":"dcd054e4-fb69-4da8-8ef2-47a4016ceb8c","name":"Add Pipeline Subscriber - Failed Subscriber Already Exists For This Pipeline","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"targetUrl\": \"http://test1151\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseURLWF}}/api/pipelines/:pipelineId/subscribers/","host":["{{baseURLWF}}"],"path":["api","pipelines",":pipelineId","subscribers",""],"variable":[{"key":"pipelineId","value":"bb193162-97bc-4187-8ad0-44e9db0afa66"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"99"},{"key":"ETag","value":"W/\"63-hEHEZH6O90Q3C9mHiWrl4seySTM\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:25:19 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Subscriber already exists for this pipeline\",\n    \"data\": null,\n    \"errors\": null\n}"},{"id":"e2b48d3c-c455-4300-8853-4d88ab672296","name":"Add Pipeline Subscriber - Subscriber Added Successfully","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"targetUrl\": \"http://test11511\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseURLWF}}/api/pipelines/:pipelineId/subscribers/","host":["{{baseURLWF}}"],"path":["api","pipelines",":pipelineId","subscribers",""],"variable":[{"key":"pipelineId","value":"bb193162-97bc-4187-8ad0-44e9db0afa66"}]}},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"99"},{"key":"ETag","value":"W/\"63-76ltVX+Csy9fdkiRcTzj6u3rroQ\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:25:58 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Subscriber added\",\n    \"data\": {\n        \"targetUrl\": \"http://test11511\"\n    },\n    \"errors\": null\n}"}],"_postman_id":"0a79dde4-d157-400f-94ec-7aceffab13b5"},{"name":"Remove Pipeline Subscriber","id":"55d9aa77-270c-4a71-8ddf-fc720f16cbdb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"{{baseURLWF}}/api/pipelines/:pipelineId/subscribers/:subscriberId","description":"<p>Removes a subscriber from a pipeline. The subscriber will no longer receive any future deliveries from this pipeline.</p>\n","urlObject":{"path":["api","pipelines",":pipelineId","subscribers",":subscriberId"],"host":["{{baseURLWF}}"],"query":[],"variable":[{"type":"any","value":"92d5f4f5-4006-478b-9e20-a2040b354d78","key":"pipelineId"},{"type":"any","value":"ea263840-1bbc-4faf-8cb9-8f55c5ccea6a","key":"subscriberId"}]}},"response":[{"id":"bdd74abb-942e-4f7b-8489-34f569c1e01e","name":"Remove Pipeline Subscriber - Failed Subscriber Was Not Found","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"{{baseURLWF}}/api/pipelines/:pipelineId/subscribers/:subscriberId","host":["{{baseURLWF}}"],"path":["api","pipelines",":pipelineId","subscribers",":subscriberId"],"variable":[{"key":"pipelineId","value":"04546ff5-552c-423f-8902-e71c616cbc73"},{"key":"subscriberId","value":"fec41604-89fc-4aa7-8566-b7e2640b8f9d"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"76"},{"key":"ETag","value":"W/\"4c-Ra0xf/6p8tH4sDkD+LNsWvEzrKw\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:26:32 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Subscriber not found\",\n    \"data\": null,\n    \"errors\": null\n}"},{"id":"e080dfe2-a4d7-4d45-af32-76ba49f48419","name":"Remove Pipeline Subscriber - Failed Pipeline Was Not Found","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"{{baseURLWF}}/api/pipelines/:pipelineId/subscribers/:subscriberId","host":["{{baseURLWF}}"],"path":["api","pipelines",":pipelineId","subscribers",":subscriberId"],"variable":[{"key":"pipelineId","value":"04546ff5-552c-423f-8902-e71c616cbc74"},{"key":"subscriberId","value":"fec41604-89fc-4aa7-8566-b7e2640b8f9d"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"74"},{"key":"ETag","value":"W/\"4a-jx2W/Zvfxb1uW5Gw/PkAqfGFvzw\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:27:07 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Pipeline not found\",\n    \"data\": null,\n    \"errors\": null\n}"},{"id":"99d430a1-ac16-4d5a-921f-5c162cc0835c","name":"Remove Pipeline Subscriber - Subscriber Removed Successfully","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"{{baseURLWF}}/api/pipelines/:pipelineId/subscribers/:subscriberId","host":["{{baseURLWF}}"],"path":["api","pipelines",":pipelineId","subscribers",":subscriberId"],"variable":[{"key":"pipelineId","value":"92d5f4f5-4006-478b-9e20-a2040b354d78"},{"key":"subscriberId","value":"ea263840-1bbc-4faf-8cb9-8f55c5ccea6a"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"85"},{"key":"ETag","value":"W/\"55-UWHuq3EGp1jZM4lrYYP5JNknRKw\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:28:08 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Subscriber removed\",\n    \"data\": {\n        \"removed\": true\n    },\n    \"errors\": null\n}"}],"_postman_id":"55d9aa77-270c-4a71-8ddf-fc720f16cbdb"}],"id":"2f8b3496-858d-49fe-a529-7a5b95666113","description":"<p>Endpoints for creating and managing <strong>pipelines</strong>.</p>\n<p>A <em>pipeline</em> represents the configuration that connects an inbound <strong>webhook path</strong> to one or more <strong>subscribers</strong> (delivery destinations).</p>\n<p>Typical workflows:</p>\n<ul>\n<li>List pipelines (paginated)</li>\n<li>Create a new pipeline</li>\n<li>Fetch/update pipeline by <code>pipelineId</code></li>\n<li>Resolve a pipeline by <code>webhookPath</code></li>\n<li>Add/remove subscribers for a pipeline</li>\n</ul>\n<h3 id=\"pagination\">Pagination</h3>\n<p>List endpoints in this folder use query params such as <code>limit</code> and <code>offset</code>.</p>\n","_postman_id":"2f8b3496-858d-49fe-a529-7a5b95666113"},{"name":"Webhooks","item":[{"name":"Ingress Webhook","id":"3a7352e6-de0b-42b1-96f0-9ad4ab3fa889","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"videoUrl\":\"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{baseURLWF}}/api/webhooks/:webhookPath","description":"<p>The main entry point of the system. Sends an incoming payload to the pipeline associated with the given webhook path. The pipeline processes the payload according to its <code>actionType</code> and queues delivery jobs for all subscribers. Returns <code>202 Accepted</code> immediately, processing happens asynchronously.</p>\n","urlObject":{"path":["api","webhooks",":webhookPath"],"host":["{{baseURLWF}}"],"query":[],"variable":[{"type":"any","value":"summarize-youtube-video","key":"webhookPath"}]}},"response":[{"id":"4ed48f56-0f2f-48e9-9868-b1c014ef2d9d","name":"Ingress Webhook - Webhook accepted Successfully","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"videoUrl\":\"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseURLWF}}/api/webhooks/:webhookPath","host":["{{baseURLWF}}"],"path":["api","webhooks",":webhookPath"],"variable":[{"key":"webhookPath","value":"summarize-youtube-video2"}]}},"status":"Accepted","code":202,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"226"},{"key":"ETag","value":"W/\"e2-aLtdmU1OGMUH92+hwJ2i2a+9Ct0\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:43:21 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Webhook accepted\",\n    \"data\": {\n        \"jobId\": \"ba9c904e-e129-4920-b213-e38e954a95ea\",\n        \"pipelineId\": \"859bd939-3c0a-43d5-9e48-8e07fa98f45a\",\n        \"acceptedAt\": \"2026-03-23T14:43:21.378Z\",\n        \"status\": \"pending\"\n    },\n    \"errors\": null\n}"},{"id":"35d9f9c9-9df5-45e4-8aec-6b862f5c2d85","name":"Ingress Webhook - Failed Workflow Was Not Found","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"videoUrl\":\"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{baseURLWF}}/api/webhooks/:webhookPath","host":["{{baseURLWF}}"],"path":["api","webhooks",":webhookPath"],"variable":[{"key":"webhookPath","value":"summarize-youtube-vide"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"79"},{"key":"ETag","value":"W/\"4f-MM7HmiNIWr0OgCFRjKr3cV9k/rM\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:44:05 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Workflow was not found.\",\n    \"data\": null,\n    \"errors\": null\n}"}],"_postman_id":"3a7352e6-de0b-42b1-96f0-9ad4ab3fa889"}],"id":"5aeb2203-1319-41a0-a1f1-b614d4d1e53d","description":"<p>Webhook ingress endpoints.</p>\n<p>Use these endpoints to receive inbound webhook events from external systems.</p>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><code>:webhookPath</code> identifies which webhook configuration/pipeline should process the inbound event.</li>\n<li>Request body format is <em>event-specific</em> and should match what the producer sends.</li>\n</ul>\n","_postman_id":"5aeb2203-1319-41a0-a1f1-b614d4d1e53d"},{"name":"Jobs","item":[{"name":"Get All Jobs","id":"26ecf81b-8c49-4cf6-8a70-bf39615a9b7d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"{{baseURLWF}}/api/jobs?limit=10&offset=0","description":"<p>Returns a paginated list of all delivery jobs in the system regardless of their status.</p>\n","urlObject":{"path":["api","jobs"],"host":["{{baseURLWF}}"],"query":[{"key":"limit","value":"10"},{"key":"offset","value":"0"}],"variable":[]}},"response":[{"id":"d117bdf3-b788-4df7-8b97-88f8d97bd62f","name":"Get All Jobs - Failed Forbidden for \"user\" role","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"{{baseURLWF}}/api/jobs?limit=10&offset=0","host":["{{baseURLWF}}"],"path":["api","jobs"],"query":[{"key":"limit","value":"10"},{"key":"offset","value":"0"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"107"},{"key":"ETag","value":"W/\"6b-9sw+6nOTuZ8ywPyiQWb2CcjAB1w\""},{"key":"Date","value":"Mon, 23 Mar 2026 20:30:53 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Role 'user' is not allowed to access this resource.\",\n    \"data\": null,\n    \"errors\": null\n}"},{"id":"f3784686-d0f1-4382-b14a-5cc82ea696fe","name":"Get All Jobs - Successful for \"admin\" role","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"{{baseURLWF}}/api/jobs?limit=10&offset=0","host":["{{baseURLWF}}"],"path":["api","jobs"],"query":[{"key":"limit","value":"10"},{"key":"offset","value":"0"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"3172"},{"key":"ETag","value":"W/\"c64-4MPAkt4slkNBuJ86Ki5ZZF2YdW0\""},{"key":"Date","value":"Mon, 23 Mar 2026 20:34:34 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Jobs retrieved\",\n    \"data\": [\n        {\n            \"id\": \"c5303b87-5693-442e-ad68-c57a247a5b3e\",\n            \"createdAt\": \"2026-03-23T20:24:42.769Z\",\n            \"updatedAt\": \"2026-03-23T20:24:42.769Z\",\n            \"isDeleted\": false,\n            \"attempts\": 0,\n            \"pipelineId\": \"48721f35-f909-4132-a005-88a7225520d1\",\n            \"payload\": {\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n            },\n            \"status\": \"pending\",\n            \"triggeredBy\": \"89a2d034-3602-441c-9834-a274f5685388\"\n        },\n        {\n            \"id\": \"29e3171d-e2f9-4373-b054-2cee30399c9f\",\n            \"createdAt\": \"2026-03-23T20:24:03.340Z\",\n            \"updatedAt\": \"2026-03-23T20:24:03.340Z\",\n            \"isDeleted\": false,\n            \"attempts\": 0,\n            \"pipelineId\": \"48721f35-f909-4132-a005-88a7225520d1\",\n            \"payload\": {\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n            },\n            \"status\": \"pending\",\n            \"triggeredBy\": \"0190d321-0c6b-4a4d-8bfe-4ea7a122baed\"\n        },\n        {\n            \"id\": \"953fbf0f-397f-474e-892c-6f7eda8042f3\",\n            \"createdAt\": \"2026-03-23T20:22:03.973Z\",\n            \"updatedAt\": \"2026-03-23T20:22:03.973Z\",\n            \"isDeleted\": false,\n            \"attempts\": 0,\n            \"pipelineId\": \"48721f35-f909-4132-a005-88a7225520d1\",\n            \"payload\": {\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n            },\n            \"status\": \"pending\"\n        },\n        {\n            \"id\": \"5e361427-f0cf-4725-83cd-dd72f2701be4\",\n            \"createdAt\": \"2026-03-23T20:21:20.167Z\",\n            \"updatedAt\": \"2026-03-23T20:21:20.167Z\",\n            \"isDeleted\": false,\n            \"attempts\": 0,\n            \"pipelineId\": \"48721f35-f909-4132-a005-88a7225520d1\",\n            \"payload\": {\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n            },\n            \"status\": \"pending\"\n        },\n        {\n            \"id\": \"9feecb2f-2d4d-44b8-bdef-62ef134980c4\",\n            \"createdAt\": \"2026-03-23T14:04:54.507Z\",\n            \"updatedAt\": \"2026-03-23T14:04:54.507Z\",\n            \"isDeleted\": false,\n            \"attempts\": 0,\n            \"pipelineId\": \"09206dcc-7168-40e8-951e-4c73e7ff037c\",\n            \"payload\": {\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n            },\n            \"status\": \"pending\"\n        },\n        {\n            \"id\": \"ebfe45a1-f302-43d1-8cc4-d9d263166fbc\",\n            \"createdAt\": \"2026-03-23T14:04:47.531Z\",\n            \"updatedAt\": \"2026-03-23T14:04:47.531Z\",\n            \"isDeleted\": false,\n            \"attempts\": 0,\n            \"pipelineId\": \"09206dcc-7168-40e8-951e-4c73e7ff037c\",\n            \"payload\": {\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n            },\n            \"status\": \"pending\"\n        },\n        {\n            \"id\": \"8470a9f2-33a9-4ba9-8a33-ae1f0c251d6d\",\n            \"createdAt\": \"2026-03-23T14:03:24.272Z\",\n            \"updatedAt\": \"2026-03-23T14:03:24.272Z\",\n            \"isDeleted\": false,\n            \"attempts\": 0,\n            \"pipelineId\": \"09206dcc-7168-40e8-951e-4c73e7ff037c\",\n            \"payload\": {\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n            },\n            \"status\": \"pending\"\n        },\n        {\n            \"id\": \"48b0267e-54d6-462d-91e5-8b14572fe4ea\",\n            \"createdAt\": \"2026-03-23T14:03:10.422Z\",\n            \"updatedAt\": \"2026-03-23T14:03:10.422Z\",\n            \"isDeleted\": false,\n            \"attempts\": 0,\n            \"pipelineId\": \"09206dcc-7168-40e8-951e-4c73e7ff037c\",\n            \"payload\": {\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n            },\n            \"status\": \"pending\"\n        },\n        {\n            \"id\": \"b0901d9c-e4c4-4e1c-abe0-885e772dee47\",\n            \"createdAt\": \"2026-03-23T14:01:34.842Z\",\n            \"updatedAt\": \"2026-03-23T14:01:34.842Z\",\n            \"isDeleted\": false,\n            \"attempts\": 0,\n            \"pipelineId\": \"09206dcc-7168-40e8-951e-4c73e7ff037c\",\n            \"payload\": {\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n            },\n            \"status\": \"pending\"\n        },\n        {\n            \"id\": \"bf1dd590-fe15-4331-84d8-7c41c5382129\",\n            \"createdAt\": \"2026-03-23T14:01:32.450Z\",\n            \"updatedAt\": \"2026-03-23T14:01:32.450Z\",\n            \"isDeleted\": false,\n            \"attempts\": 0,\n            \"pipelineId\": \"09206dcc-7168-40e8-951e-4c73e7ff037c\",\n            \"payload\": {\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n            },\n            \"status\": \"pending\"\n        }\n    ],\n    \"errors\": null\n}"}],"_postman_id":"26ecf81b-8c49-4cf6-8a70-bf39615a9b7d"},{"name":"Get Job By Id","id":"b7a01b57-ebe5-4897-ae3a-585629d0fa6a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"{{baseURLWF}}/api/jobs/:jobId","description":"<p>Retrieves full details of a specific delivery job using its UUID.</p>\n","urlObject":{"path":["api","jobs",":jobId"],"host":["{{baseURLWF}}"],"query":[],"variable":[{"type":"any","value":"ccdda67d-0754-45c7-83bd-5ef18b40c47f","key":"jobId"}]}},"response":[{"id":"dfd11238-231e-4838-bc2b-d6748ed407df","name":"Get Job By Id - Job Retrieved - Job completed","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseURLWF}}/api/jobs/:jobId","host":["{{baseURLWF}}"],"path":["api","jobs",":jobId"],"variable":[{"key":"jobId","value":"ba9c904e-e129-4920-b213-e38e954a95ea"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"5004"},{"key":"ETag","value":"W/\"138c-+gTVaF19rWFbYOpAmvBlT+HiUdY\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:46:45 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Job retrieved\",\n    \"data\": {\n        \"id\": \"ba9c904e-e129-4920-b213-e38e954a95ea\",\n        \"createdAt\": \"2026-03-23T14:43:21.378Z\",\n        \"updatedAt\": \"2026-03-23T14:43:41.417Z\",\n        \"isDeleted\": false,\n        \"processedAt\": \"2026-03-23T14:43:41.417Z\",\n        \"attempts\": 1,\n        \"result\": {\n            \"action\": \"summarize-youtube-video\",\n            \"summary\": [\n                {\n                    \"end\": 38.96,\n                    \"start\": 0.08,\n                    \"title\": \"🐰 RabbitMQ Basics: What & Why\",\n                    \"summary\": \"RabbitMQ is an open-source message broker, like a cloud-based post office, developed in 2007 using Erlang. It helps microservices communicate asynchronously, solving scaling issues in monolithic apps. Think of it as a middleman that routes messages between services, ensuring smooth data flow.\"\n                },\n                {\n                    \"end\": 69.52,\n                    \"start\": 38.96,\n                    \"title\": \"📨 How RabbitMQ Works: Exchanges & Queues\",\n                    \"summary\": \"Messages are published to exchanges, which route them to queues based on bindings and routing keys. Queues hold messages until consumers process them. Exchanges can route to specific queues, multiple queues with topics, or all queues with fanout, enabling flexible message distribution.\"\n                },\n                {\n                    \"end\": 129.28,\n                    \"start\": 69.52,\n                    \"title\": \"🛠️ Setting Up RabbitMQ: Install & Code\",\n                    \"summary\": \"Install RabbitMQ or run it in Docker on port 5672. Use a library like AMQP 0-9-1 to connect, declare queues (durable or transient), and send/receive messages. Publishers produce messages, and consumers process them, even across different servers worldwide.\"\n                },\n                {\n                    \"end\": 152.16,\n                    \"start\": 129.28,\n                    \"title\": \"🚀 Advanced RabbitMQ: Exchanges & Scaling\",\n                    \"summary\": \"Exchanges like fanout or topic enable multiple servers to subscribe to messages. This allows for scalable, asynchronous communication where services consume messages at their own pace. Perfect for microservices needing independent scaling!\"\n                }\n            ],\n            \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\",\n            \"transcript\": [\n                {\n                    \"end\": 31.92,\n                    \"text\": \"RabbitMQ is an open-source distributed message broker that works like a post office in the cloud. It was developed in 2007 and written in the Erlang programming language, which itself is famous for powering the open telecom platform. In the beginning, apps were built as monoliths with all concerns coupled together on a single runtime. The problem is that not everything scales in parallel—differing computational needs gave rise to the microservice architecture, where every concern has its own runtime that scales independently. RabbitMQ is a tool that allows these microservices to communicate asynchronously with a variety of different protocols.\",\n                    \"start\": 0.08\n                },\n                {\n                    \"end\": 69.52,\n                    \"text\": \"For example, you may have an app that applies deep learning photo filters when the user clicks a button. That request goes to a REST API, but instead of processing the image there, it produces a message with the required data and publishes it to an exchange. The exchange is then responsible for routing it to one or more queues, which are linked to the exchange with a binding and routing key. Now the message sits in the queue until it's handled by the consumer, which in this case would be the image processing server. The exchange can route directly to a specific queue, to multiple queues with a shared pattern using topics, or to every queue it knows about with fanout.\",\n                    \"start\": 33.76\n                },\n                {\n                    \"end\": 108.08,\n                    \"text\": \"The end result is an architecture that allows servers to both publish and subscribe to data thanks to the RabbitMQ middleman. To get started, install it or run it in a Docker container on port 5672. It also contains a CLI tool to manage and inspect your broker. Now, create a file in your favorite server-side language and bring in a library that implements a messaging protocol like Advanced Message Queuing Protocol 0-9-1. This file will send a message and first needs to connect to RabbitMQ. On that connection, we can use the create channel method to declare a queue, which can be named whatever you want. Queues can be durable, where the metadata is stored on disk, or transient, where it's only stored in memory.\",\n                    \"start\": 69.52\n                },\n                {\n                    \"end\": 152.16,\n                    \"text\": \"Now produce a message by sending a buffer to that queue. Go ahead and run the file to create the queue and send the message. Then create another file to receive the message—in real life, this could be a different server on the other side of the world. Connect to RabbitMQ just like we did for the publisher, then reference the same queue name on that connection. Now use the consume method to receive a message and run a callback function with its data. Run that file in a separate terminal to receive the message. That's how a basic queue works, but we could expand on this code by creating an exchange to manage multiple queues at the same time. A fanout or topic exchange would allow multiple servers to subscribe to the same messages but consume them at different times.\",\n                    \"start\": 109.68\n                }\n            ],\n            \"summarizedAt\": \"2026-03-23T14:43:41.416Z\"\n        },\n        \"pipelineId\": \"859bd939-3c0a-43d5-9e48-8e07fa98f45a\",\n        \"payload\": {\n            \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n        },\n        \"status\": \"completed\"\n    },\n    \"errors\": null\n}"},{"id":"406ef753-0634-41bf-a564-3aa50a47db86","name":"Get Job By Id - Failed Unauthorized","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseURLWF}}/api/jobs/:jobId","host":["{{baseURLWF}}"],"path":["api","jobs",":jobId"],"variable":[{"key":"jobId","value":"ba9c904e-e129-4920-b213-e38e954a95ea"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"98"},{"key":"ETag","value":"W/\"62-3tHYWjjVE/CVgv8iQNb2QiXbu6Q\""},{"key":"Date","value":"Mon, 23 Mar 2026 20:40:28 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Missing or malformed Authorization header.\",\n    \"data\": null,\n    \"errors\": null\n}"},{"id":"bd97db0f-c8e9-411d-8bc3-9f0a66e4828e","name":"Get Job By Id - Job Retrieved Successfully","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseURLWF}}/api/jobs/:jobId","host":["{{baseURLWF}}"],"path":["api","jobs",":jobId"],"variable":[{"key":"jobId","value":"ccdda67d-0754-45c7-83bd-5ef18b40c47f"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"416"},{"key":"ETag","value":"W/\"1a0-/ZzmGrfijZF4upIo9sfxxmJHkjo\""},{"key":"Date","value":"Mon, 23 Mar 2026 20:42:40 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Job retrieved\",\n    \"data\": {\n        \"id\": \"ccdda67d-0754-45c7-83bd-5ef18b40c47f\",\n        \"createdAt\": \"2026-03-23T20:42:06.530Z\",\n        \"updatedAt\": \"2026-03-23T20:42:06.530Z\",\n        \"isDeleted\": false,\n        \"attempts\": 0,\n        \"pipelineId\": \"48721f35-f909-4132-a005-88a7225520d1\",\n        \"payload\": {\n            \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n        },\n        \"status\": \"pending\",\n        \"triggeredBy\": \"0190d321-0c6b-4a4d-8bfe-4ea7a122baed\"\n    },\n    \"errors\": null\n}"},{"id":"5b504286-7dc6-46d9-9608-7c099d118454","name":"Get Job By Id - Failed Job was not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseURLWF}}/api/jobs/:jobId","host":["{{baseURLWF}}"],"path":["api","jobs",":jobId"],"variable":[{"key":"jobId","value":"ccdda67d-0754-45c7-83bd-5ef18b40c47f"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"74"},{"key":"ETag","value":"W/\"4a-T9TstZc7jQbMJ+JKbQpm+nYLunM\""},{"key":"Date","value":"Mon, 23 Mar 2026 21:07:28 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Job was not found.\",\n    \"data\": null,\n    \"errors\": null\n}"}],"_postman_id":"b7a01b57-ebe5-4897-ae3a-585629d0fa6a"},{"name":"Get Jobs By Status","id":"06466ccc-3aca-4a07-8aef-937362ec6874","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"url":"{{baseURLWF}}/api/jobs/status/:jobStatus?limit=1&offset=0","description":"<p>Retrieves a paginated list of jobs filtered by their current status.</p>\n","urlObject":{"path":["api","jobs","status",":jobStatus"],"host":["{{baseURLWF}}"],"query":[{"key":"limit","value":"1"},{"key":"offset","value":"0"}],"variable":[{"type":"any","value":"failed","key":"jobStatus"}]}},"response":[{"id":"8a061d75-7f2a-4361-aff2-399bcdf128ba","name":"Get Jobs By Status - Failed Unauthorized","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseURLWF}}/api/jobs/status/:jobStatus?limit=1&offset=0","host":["{{baseURLWF}}"],"path":["api","jobs","status",":jobStatus"],"query":[{"key":"limit","value":"1"},{"key":"offset","value":"0"}],"variable":[{"key":"jobStatus","value":"failed"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"98"},{"key":"ETag","value":"W/\"62-3tHYWjjVE/CVgv8iQNb2QiXbu6Q\""},{"key":"Date","value":"Mon, 23 Mar 2026 21:08:32 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Missing or malformed Authorization header.\",\n    \"data\": null,\n    \"errors\": null\n}"},{"id":"324a2ee3-48d3-4dd7-83f4-72a4619c58d0","name":"Get Jobs By Status - Successfully jobs retrieved","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseURLWF}}/api/jobs/status/:jobStatus?limit=1&offset=0","host":["{{baseURLWF}}"],"path":["api","jobs","status",":jobStatus"],"query":[{"key":"limit","value":"1"},{"key":"offset","value":"0"}],"variable":[{"key":"jobStatus","value":"failed"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"5194"},{"key":"ETag","value":"W/\"144a-BS4LnHrRG98jI1qKVgIHJ/d9t9s\""},{"key":"Date","value":"Mon, 23 Mar 2026 21:09:18 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Jobs retrieved\",\n    \"data\": [\n        {\n            \"id\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"createdAt\": \"2026-03-21T16:37:25.474Z\",\n            \"updatedAt\": \"2026-03-21T16:40:22.384Z\",\n            \"isDeleted\": false,\n            \"processedAt\": \"2026-03-21T16:40:22.384Z\",\n            \"attempts\": 4,\n            \"result\": {\n                \"action\": \"summarize-youtube-video\",\n                \"summary\": [\n                    {\n                        \"end\": 38.96,\n                        \"start\": 0.08,\n                        \"title\": \"🐰 RabbitMQ Basics: What & Why\",\n                        \"summary\": \"RabbitMQ is an open-source message broker, like a cloud-based post office, developed in 2007 using Erlang. It helps microservices communicate asynchronously, solving scaling issues in monolithic apps. Think of it as a middleman that routes messages between services, ensuring smooth data flow.\"\n                    },\n                    {\n                        \"end\": 69.52,\n                        \"start\": 38.96,\n                        \"title\": \"📨 How RabbitMQ Works: Exchanges & Queues\",\n                        \"summary\": \"Messages are published to exchanges, which route them to queues based on bindings and routing keys. Queues hold messages until consumers (like an image processing server) handle them. Exchanges can route to specific queues, multiple queues with topics, or all queues with fanout.\"\n                    },\n                    {\n                        \"end\": 109.68,\n                        \"start\": 69.52,\n                        \"title\": \"🛠️ Setting Up RabbitMQ: Quick Start\",\n                        \"summary\": \"Install RabbitMQ or run it in Docker on port 5672. Use its CLI to manage your broker. Write code in your favorite language to connect, declare queues, and send/receive messages. Durable queues store metadata on disk, while transient queues keep it in memory.\"\n                    },\n                    {\n                        \"end\": 145.04,\n                        \"start\": 109.68,\n                        \"title\": \"🚀 Advanced RabbitMQ: Exchanges & Scaling\",\n                        \"summary\": \"Expand your setup with exchanges to manage multiple queues. Fanout or topic exchanges let multiple servers subscribe to the same messages but consume them independently. Perfect for scaling microservices and handling varying workloads.\"\n                    }\n                ],\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\",\n                \"transcript\": [\n                    {\n                        \"end\": 31.92,\n                        \"text\": \"RabbitMQ is an open-source distributed message broker that works like a post office in the cloud. It was developed in 2007 and written in the Erlang programming language, famous for powering the open telecom platform. In the beginning, apps were built as monoliths with all concerns coupled together on a single runtime. The problem is that not everything scales in parallel—differing computational needs gave rise to the microservice architecture, where every concern has its own runtime that scales independently. RabbitMQ is a tool that allows these microservices to communicate asynchronously with a variety of different protocols.\",\n                        \"start\": 0.08\n                    },\n                    {\n                        \"end\": 71.44,\n                        \"text\": \"For example, you may have an app that applies deep learning photo filters when the user clicks a button. That request goes to a REST API, but instead of processing the image there, it produces a message with the required data and publishes it to an exchange. The exchange is then responsible for routing it to one or more queues, which are linked to the exchange with a binding and routing key. Now the message sits in the queue until it's handled by the consumer, which in this case would be the image processing server. The exchange can route directly to a specific queue, to multiple queues with a shared pattern using topics, or to every queue it knows about with fanout. The end result is an architecture that allows servers to both publish and subscribe to data thanks to the RabbitMQ middleman.\",\n                        \"start\": 33.76\n                    },\n                    {\n                        \"end\": 109.68,\n                        \"text\": \"To get started, install RabbitMQ or run it in a Docker container on port 5672. It also contains a CLI tool to manage and inspect your broker. Now create a file in your favorite server-side language and bring in a library that implements a messaging protocol like Advanced Messaging Queue Protocol 091. This file will send a message and first needs to connect to RabbitMQ. On that connection, we can use the create channel method to declare a queue, which can be named whatever you want. Queues can be durable, where the metadata is stored on disk, or transient, where it's only stored in memory. Now produce a message by sending a buffer to that queue. Go ahead and run the file to create the queue and send the message.\",\n                        \"start\": 73.84\n                    },\n                    {\n                        \"end\": 152.16,\n                        \"text\": \"Then create another file to receive the message—in real life, this could be a different server on the other side of the world. Connect to RabbitMQ just like we did for the publisher, then reference the same queue name on that connection. Now use the consume method to receive a message and run a callback function with its data. Run that file in a separate terminal to receive the message. That's how a basic queue works, but we could expand on this code by creating an exchange to manage multiple queues at the same time. A fanout or topic exchange would allow multiple servers to subscribe to the same messages but consume them at different times. This has been RabbitMQ in 100 seconds. Hit the like button if you want to see more short videos like this. Thanks for watching, and I'll see you in the next one.\",\n                        \"start\": 111.12\n                    }\n                ],\n                \"summarizedAt\": \"2026-03-21T16:40:19.293Z\"\n            },\n            \"pipelineId\": \"48721f35-f909-4132-a005-88a7225520d1\",\n            \"payload\": {\n                \"videoUrl\": \"https://youtu.be/NQ3fZtyXji0?si=5vHPsl3Ze1wxNz-M\"\n            },\n            \"errorMessage\": \"Delivery failed for 1/1 subscribers\",\n            \"status\": \"failed\"\n        }\n    ],\n    \"errors\": null\n}"}],"_postman_id":"06466ccc-3aca-4a07-8aef-937362ec6874"},{"name":"Get Delivery attempts By Job Id","id":"c9c308f2-209a-443a-abf4-2b88d4c69a4a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"{{baseURLWF}}/api/jobs/:jobId/delivery-attempts","description":"<p>Retrieves all delivery attempts associated with a specific job, useful for tracking retries and failures per job.</p>\n","urlObject":{"path":["api","jobs",":jobId","delivery-attempts"],"host":["{{baseURLWF}}"],"query":[],"variable":[{"type":"any","value":"ccdda67d-0754-45c7-83bd-5ef18b40c47f","key":"jobId"}]}},"response":[{"id":"6294eaa1-9148-449c-8022-478c5347aa0d","name":"Get Delivery attempts By Job Id - Failed Unauthorized","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"{{baseURLWF}}/api/jobs/:jobId/delivery-attempts","host":["{{baseURLWF}}"],"path":["api","jobs",":jobId","delivery-attempts"],"variable":[{"key":"jobId","value":"ad100329-ad0c-414a-9445-59ef0dd6d361"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"98"},{"key":"ETag","value":"W/\"62-3tHYWjjVE/CVgv8iQNb2QiXbu6Q\""},{"key":"Date","value":"Mon, 23 Mar 2026 21:10:05 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Missing or malformed Authorization header.\",\n    \"data\": null,\n    \"errors\": null\n}"},{"id":"28a1c7e8-9657-4743-b2dd-24a2a9a76bf9","name":"Get Delivery attempts By Job Id - Failed Job was not found","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"{{baseURLWF}}/api/jobs/:jobId/delivery-attempts","host":["{{baseURLWF}}"],"path":["api","jobs",":jobId","delivery-attempts"],"variable":[{"key":"jobId","value":"ad100329-ad0c-414a-9445-59ef0dd6d361"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"74"},{"key":"ETag","value":"W/\"4a-T9TstZc7jQbMJ+JKbQpm+nYLunM\""},{"key":"Date","value":"Mon, 23 Mar 2026 21:11:10 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Job was not found.\",\n    \"data\": null,\n    \"errors\": null\n}"},{"id":"d2e1064f-3781-40de-a3a3-14ea8f3da951","name":"Get Delivery attempts By Job Id - Successfully Delivery attempts retrieved","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"{{baseURLWF}}/api/jobs/:jobId/delivery-attempts","host":["{{baseURLWF}}"],"path":["api","jobs",":jobId","delivery-attempts"],"variable":[{"key":"jobId","value":"ad100329-ad0c-414a-9445-59ef0dd6d362"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"3106"},{"key":"ETag","value":"W/\"c22-XPxSzPPyDtJoauzA2tTBEX/qu/E\""},{"key":"Date","value":"Mon, 23 Mar 2026 21:13:17 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Delivery attempts retrieved\",\n    \"data\": [\n        {\n            \"id\": \"e925e6fe-026d-4617-a183-f5c6b4f3d6f1\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 12,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:40:22.370Z\"\n        },\n        {\n            \"id\": \"87fa50d9-d58e-41dd-bd83-388be2f80611\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 11,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:40:20.346Z\"\n        },\n        {\n            \"id\": \"c5d391ca-6c29-4e2a-a714-adbf0bccf989\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 10,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:40:19.306Z\"\n        },\n        {\n            \"id\": \"538356c1-75dd-40c0-ad1f-124bc997c250\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 9,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:39:43.210Z\"\n        },\n        {\n            \"id\": \"d70cf271-1d67-4482-883a-5792e86634a0\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 8,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:39:41.193Z\"\n        },\n        {\n            \"id\": \"7fbdbdeb-ed79-4006-95d4-11b022a7cf18\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 7,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:39:40.164Z\"\n        },\n        {\n            \"id\": \"17e50924-0ec4-4ed5-9cd0-718d22e4a849\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 6,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:38:53.521Z\"\n        },\n        {\n            \"id\": \"a4d4bcf0-0aa4-40da-9bdc-855dc41c57b8\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 5,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:38:51.506Z\"\n        },\n        {\n            \"id\": \"f2515e80-c3c1-4f99-b368-03ae2aa7993c\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 4,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:38:50.484Z\"\n        },\n        {\n            \"id\": \"6637052a-8231-49ac-bdab-4d32f034e9c4\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 3,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:38:11.263Z\"\n        },\n        {\n            \"id\": \"af91b3aa-fe25-4270-bd5e-bcaaf52ee3fc\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 2,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:38:09.230Z\"\n        },\n        {\n            \"id\": \"58122dc9-c6cd-4867-852d-56783aeb809c\",\n            \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n            \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n            \"status\": \"failed\",\n            \"attemptNumber\": 1,\n            \"errorMessage\": \"fetch failed\",\n            \"createdAt\": \"2026-03-21T16:38:08.112Z\"\n        }\n    ],\n    \"errors\": null\n}"}],"_postman_id":"c9c308f2-209a-443a-abf4-2b88d4c69a4a"}],"id":"d72c8812-65be-4d1a-90db-29d186263fc9","description":"<p>Endpoints for querying and inspecting <strong>jobs</strong> created/processed by the system.</p>\n<p>Typical use cases:</p>\n<ul>\n<li>List jobs (paginated)</li>\n<li>Fetch a job by ID</li>\n<li>List jobs filtered by status (paginated)</li>\n<li>List delivery attempts associated with a job</li>\n</ul>\n<h3 id=\"pagination\">Pagination</h3>\n<p>List endpoints in this folder use query params such as <code>limit</code> and <code>offset</code>.</p>\n","_postman_id":"d72c8812-65be-4d1a-90db-29d186263fc9"},{"name":"Delivery Attempts","item":[{"name":"Get Delivery Attempt By Id","id":"4f9391a1-d319-40a5-8db3-86687b3134d4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{baseURLWF}}/api/delivery-attempts/:attemptId","description":"<p>Retrieves the details of a single delivery attempt, including its status (<code>success</code> or <code>failed</code>), timestamp, and response information.</p>\n","urlObject":{"path":["api","delivery-attempts",":attemptId"],"host":["{{baseURLWF}}"],"query":[],"variable":[{"type":"any","value":"e925e6fe-026d-4617-a183-f5c6b4f3d6f0","key":"attemptId"}]}},"response":[{"id":"46fb5e3c-7741-4a6b-840d-476e2d4a60fd","name":"Get Delivery Attempt By Id - Delivery Attempt Retrieved Successfully","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseURLWF}}/api/delivery-attempts/:attemptId","host":["{{baseURLWF}}"],"path":["api","delivery-attempts",":attemptId"],"variable":[{"key":"attemptId","value":"e925e6fe-026d-4617-a183-f5c6b4f3d6f1"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"386"},{"key":"ETag","value":"W/\"182-0OAfIE6dhD7RBQOEW9oRPUQ15/k\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:33:21 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Delivery attempt retrieved\",\n    \"data\": {\n        \"id\": \"e925e6fe-026d-4617-a183-f5c6b4f3d6f1\",\n        \"createdAt\": \"2026-03-21T16:40:22.370Z\",\n        \"updatedAt\": \"2026-03-21T16:40:22.370Z\",\n        \"isDeleted\": false,\n        \"errorMessage\": \"fetch failed\",\n        \"jobId\": \"ad100329-ad0c-414a-9445-59ef0dd6d362\",\n        \"subscriberId\": \"ef179b12-922a-4d1c-836a-6417c85f06d8\",\n        \"status\": \"failed\",\n        \"attemptNumber\": 12\n    },\n    \"errors\": null\n}"},{"id":"6a6e69be-8672-4eb7-af43-baf04026282a","name":"Get Delivery Attempt By Id - Failed Delivery Attempt Was Not Found","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{baseURLWF}}/api/delivery-attempts/:attemptId","host":["{{baseURLWF}}"],"path":["api","delivery-attempts",":attemptId"],"variable":[{"key":"attemptId","value":"e925e6fe-026d-4617-a183-f5c6b4f3d6f0"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"87"},{"key":"ETag","value":"W/\"57-xTtLs5l0A59wr7Lrk/OZyQ222Co\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:34:09 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"message\": \"Delivery attempt was not found.\",\n    \"data\": null,\n    \"errors\": null\n}"}],"_postman_id":"4f9391a1-d319-40a5-8db3-86687b3134d4"}],"id":"76584421-b5cc-47f6-88d0-6a60204ee372","description":"<p>Endpoints for inspecting <strong>delivery attempts</strong>.</p>\n<p>A <em>delivery attempt</em> represents a single attempt to deliver a job/event to a subscriber destination (for example, an HTTP endpoint).</p>\n<p>Use this folder to fetch attempt details such as status, timestamps, response codes, and error information (exact fields depend on implementation).</p>\n","_postman_id":"76584421-b5cc-47f6-88d0-6a60204ee372"},{"name":"health","id":"fb5cf3df-b9c5-4a9d-a2f1-95b599d6ea87","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{baseURLWF}}/health","description":"<p>Returns the current health status of the service.</p>\n","urlObject":{"path":["health"],"host":["{{baseURLWF}}"],"query":[],"variable":[]}},"response":[{"id":"e180a91b-733b-4771-ba90-c8b136756268","name":"health - Service healthy","originalRequest":{"method":"GET","header":[],"url":"{{baseURLWF}}/health"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"81"},{"key":"ETag","value":"W/\"51-GyF8WxIQCTqwcciS3s6J+INaDqA\""},{"key":"Date","value":"Mon, 23 Mar 2026 14:34:46 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Service healthy\",\n    \"data\": {\n        \"status\": \"ok\"\n    },\n    \"errors\": null\n}"}],"_postman_id":"fb5cf3df-b9c5-4a9d-a2f1-95b599d6ea87"}]}