{"flow":{"id":74,"summary":"Example Actor Webhook Flow","versions":[286,287],"created_by":"jakub.drobnik222","created_at":"2025-12-05T15:44:46.535Z","votes":0,"approved":true,"apps":["apify"],"value":{"modules":[{"id":"a","value":{"lock":"{\n  \"dependencies\": {\n    \"apify-client\": \"^2.19.0\"\n  }\n}\n//bun.lock\n{\n  \"lockfileVersion\": 1,\n  \"workspaces\": {\n    \"\": {\n      \"dependencies\": {\n        \"apify-client\": \"^2.19.0\",\n      },\n    },\n  },\n  \"packages\": {\n    \"@apify/consts\": [\"@apify/consts@2.48.0\", \"\", {}, \"sha512-a0HeYDxAbbkRxc9z2N6beMFAmAJSgBw8WuKUwV+KmCuPyGUVLp54fYzjQ63p9Gv5IVFC88/HMXpAzI29ARgO5w==\"],\n\n    \"@apify/log\": [\"@apify/log@2.5.28\", \"\", { \"dependencies\": { \"@apify/consts\": \"^2.48.0\", \"ansi-colors\": \"^4.1.1\" } }, \"sha512-jU8qIvU+Crek8glBjFl3INjJQWWDR9n2z9Dr0WvUI8KJi0LG9fMdTvV+Aprf9z1b37CbHXgiZkA1iPlNYxKOEQ==\"],\n\n    \"@apify/utilities\": [\"@apify/utilities@2.25.0\", \"\", { \"dependencies\": { \"@apify/consts\": \"^2.48.0\", \"@apify/log\": \"^2.5.28\" } }, \"sha512-j+doZoNKGwqByCzhiGdU4hf5uNFtYS1xOihFV/GDcYAv8T/gIyKw/TaMmaRlAUmItww9PW58Qh+lDJ4kP/xZug==\"],\n\n    \"@crawlee/types\": [\"@crawlee/types@3.15.3\", \"\", { \"dependencies\": { \"tslib\": \"^2.4.0\" } }, \"sha512-RvgVPXrsQw4GQIUXrC1z1aNOedUPJnZ/U/8n+jZ0fu1Iw9moJVMuiuIxSI8q1P6BA84aWZdalyfDWBZ3FMjsiw==\"],\n\n    \"@sindresorhus/is\": [\"@sindresorhus/is@4.6.0\", \"\", {}, \"sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==\"],\n\n    \"@tootallnate/quickjs-emscripten\": [\"@tootallnate/quickjs-emscripten@0.23.0\", \"\", {}, \"sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==\"],\n\n    \"agent-base\": [\"agent-base@7.1.4\", \"\", {}, \"sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==\"],\n\n    \"ansi-colors\": [\"ansi-colors@4.1.3\", \"\", {}, \"sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==\"],\n\n    \"apify-client\": [\"apify-client@2.21.0\", \"\", { \"dependencies\": { \"@apify/consts\": \"^2.42.0\", \"@apify/log\": \"^2.2.6\", \"@apify/utilities\": \"^2.23.2\", \"@crawlee/types\": \"^3.3.0\", \"ansi-colors\": \"^4.1.1\", \"async-retry\": \"^1.3.3\", \"axios\": \"^1.6.7\", \"content-type\": \"^1.0.5\", \"ow\": \"^0.28.2\", \"proxy-agent\": \"^6.5.0\", \"tslib\": \"^2.5.0\", \"type-fest\": \"^4.0.0\" } }, \"sha512-mNXyHJFHIc6zswANonWojz9JvsSsqLbfNQA1Q+COcf0dBTBOwrFlYMTt/pJbcr55PZieBXdMOGIwGsv6UHeJWQ==\"],\n\n    \"ast-types\": [\"ast-types@0.13.4\", \"\", { \"dependencies\": { \"tslib\": \"^2.0.1\" } }, \"sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==\"],\n\n    \"async-retry\": [\"async-retry@1.3.3\", \"\", { \"dependencies\": { \"retry\": \"0.13.1\" } }, \"sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==\"],\n\n    \"asynckit\": [\"asynckit@0.4.0\", \"\", {}, \"sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==\"],\n\n    \"axios\": [\"axios@1.13.2\", \"\", { \"dependencies\": { \"follow-redirects\": \"^1.15.6\", \"form-data\": \"^4.0.4\", \"proxy-from-env\": \"^1.1.0\" } }, \"sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==\"],\n\n    \"basic-ftp\": [\"basic-ftp@5.1.0\", \"\", {}, \"sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==\"],\n\n    \"call-bind-apply-helpers\": [\"call-bind-apply-helpers@1.0.2\", \"\", { \"dependencies\": { \"es-errors\": \"^1.3.0\", \"function-bind\": \"^1.1.2\" } }, \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\"],\n\n    \"callsites\": [\"callsites@3.1.0\", \"\", {}, \"sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==\"],\n\n    \"combined-stream\": [\"combined-stream@1.0.8\", \"\", { \"dependencies\": { \"delayed-stream\": \"~1.0.0\" } }, \"sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==\"],\n\n    \"content-type\": [\"content-type@1.0.5\", \"\", {}, \"sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==\"],\n\n    \"data-uri-to-buffer\": [\"data-uri-to-buffer@6.0.2\", \"\", {}, \"sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==\"],\n\n    \"debug\": [\"debug@4.4.3\", \"\", { \"dependencies\": { \"ms\": \"^2.1.3\" } }, \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\"],\n\n    \"degenerator\": [\"degenerator@5.0.1\", \"\", { \"dependencies\": { \"ast-types\": \"^0.13.4\", \"escodegen\": \"^2.1.0\", \"esprima\": \"^4.0.1\" } }, \"sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==\"],\n\n    \"delayed-stream\": [\"delayed-stream@1.0.0\", \"\", {}, \"sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==\"],\n\n    \"dot-prop\": [\"dot-prop@6.0.1\", \"\", { \"dependencies\": { \"is-obj\": \"^2.0.0\" } }, \"sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==\"],\n\n    \"dunder-proto\": [\"dunder-proto@1.0.1\", \"\", { \"dependencies\": { \"call-bind-apply-helpers\": \"^1.0.1\", \"es-errors\": \"^1.3.0\", \"gopd\": \"^1.2.0\" } }, \"sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==\"],\n\n    \"es-define-property\": [\"es-define-property@1.0.1\", \"\", {}, \"sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==\"],\n\n    \"es-errors\": [\"es-errors@1.3.0\", \"\", {}, \"sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==\"],\n\n    \"es-object-atoms\": [\"es-object-atoms@1.1.1\", \"\", { \"dependencies\": { \"es-errors\": \"^1.3.0\" } }, \"sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==\"],\n\n    \"es-set-tostringtag\": [\"es-set-tostringtag@2.1.0\", \"\", { \"dependencies\": { \"es-errors\": \"^1.3.0\", \"get-intrinsic\": \"^1.2.6\", \"has-tostringtag\": \"^1.0.2\", \"hasown\": \"^2.0.2\" } }, \"sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==\"],\n\n    \"escodegen\": [\"escodegen@2.1.0\", \"\", { \"dependencies\": { \"esprima\": \"^4.0.1\", \"estraverse\": \"^5.2.0\", \"esutils\": \"^2.0.2\" }, \"optionalDependencies\": { \"source-map\": \"~0.6.1\" }, \"bin\": { \"esgenerate\": \"bin/esgenerate.js\", \"escodegen\": \"bin/escodegen.js\" } }, \"sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==\"],\n\n    \"esprima\": [\"esprima@4.0.1\", \"\", { \"bin\": { \"esparse\": \"./bin/esparse.js\", \"esvalidate\": \"./bin/esvalidate.js\" } }, \"sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==\"],\n\n    \"estraverse\": [\"estraverse@5.3.0\", \"\", {}, \"sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==\"],\n\n    \"esutils\": [\"esutils@2.0.3\", \"\", {}, \"sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==\"],\n\n    \"follow-redirects\": [\"follow-redirects@1.15.11\", \"\", {}, \"sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==\"],\n\n    \"form-data\": [\"form-data@4.0.5\", \"\", { \"dependencies\": { \"asynckit\": \"^0.4.0\", \"combined-stream\": \"^1.0.8\", \"es-set-tostringtag\": \"^2.1.0\", \"hasown\": \"^2.0.2\", \"mime-types\": \"^2.1.12\" } }, \"sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==\"],\n\n    \"function-bind\": [\"function-bind@1.1.2\", \"\", {}, \"sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==\"],\n\n    \"get-intrinsic\": [\"get-intrinsic@1.3.0\", \"\", { \"dependencies\": { \"call-bind-apply-helpers\": \"^1.0.2\", \"es-define-property\": \"^1.0.1\", \"es-errors\": \"^1.3.0\", \"es-object-atoms\": \"^1.1.1\", \"function-bind\": \"^1.1.2\", \"get-proto\": \"^1.0.1\", \"gopd\": \"^1.2.0\", \"has-symbols\": \"^1.1.0\", \"hasown\": \"^2.0.2\", \"math-intrinsics\": \"^1.1.0\" } }, \"sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==\"],\n\n    \"get-proto\": [\"get-proto@1.0.1\", \"\", { \"dependencies\": { \"dunder-proto\": \"^1.0.1\", \"es-object-atoms\": \"^1.0.0\" } }, \"sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==\"],\n\n    \"get-uri\": [\"get-uri@6.0.5\", \"\", { \"dependencies\": { \"basic-ftp\": \"^5.0.2\", \"data-uri-to-buffer\": \"^6.0.2\", \"debug\": \"^4.3.4\" } }, \"sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==\"],\n\n    \"gopd\": [\"gopd@1.2.0\", \"\", {}, \"sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==\"],\n\n    \"has-symbols\": [\"has-symbols@1.1.0\", \"\", {}, \"sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==\"],\n\n    \"has-tostringtag\": [\"has-tostringtag@1.0.2\", \"\", { \"dependencies\": { \"has-symbols\": \"^1.0.3\" } }, \"sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==\"],\n\n    \"hasown\": [\"hasown@2.0.2\", \"\", { \"dependencies\": { \"function-bind\": \"^1.1.2\" } }, \"sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==\"],\n\n    \"http-proxy-agent\": [\"http-proxy-agent@7.0.2\", \"\", { \"dependencies\": { \"agent-base\": \"^7.1.0\", \"debug\": \"^4.3.4\" } }, \"sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==\"],\n\n    \"https-proxy-agent\": [\"https-proxy-agent@7.0.6\", \"\", { \"dependencies\": { \"agent-base\": \"^7.1.2\", \"debug\": \"4\" } }, \"sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==\"],\n\n    \"ip-address\": [\"ip-address@10.1.0\", \"\", {}, \"sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==\"],\n\n    \"is-obj\": [\"is-obj@2.0.0\", \"\", {}, \"sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==\"],\n\n    \"lodash.isequal\": [\"lodash.isequal@4.5.0\", \"\", {}, \"sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==\"],\n\n    \"lru-cache\": [\"lru-cache@7.18.3\", \"\", {}, \"sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==\"],\n\n    \"math-intrinsics\": [\"math-intrinsics@1.1.0\", \"\", {}, \"sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==\"],\n\n    \"mime-db\": [\"mime-db@1.52.0\", \"\", {}, \"sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==\"],\n\n    \"mime-types\": [\"mime-types@2.1.35\", \"\", { \"dependencies\": { \"mime-db\": \"1.52.0\" } }, \"sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==\"],\n\n    \"ms\": [\"ms@2.1.3\", \"\", {}, \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\"],\n\n    \"netmask\": [\"netmask@2.0.2\", \"\", {}, \"sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==\"],\n\n    \"ow\": [\"ow@0.28.2\", \"\", { \"dependencies\": { \"@sindresorhus/is\": \"^4.2.0\", \"callsites\": \"^3.1.0\", \"dot-prop\": \"^6.0.1\", \"lodash.isequal\": \"^4.5.0\", \"vali-date\": \"^1.0.0\" } }, \"sha512-dD4UpyBh/9m4X2NVjA+73/ZPBRF+uF4zIMFvvQsabMiEK8x41L3rQ8EENOi35kyyoaJwNxEeJcP6Fj1H4U409Q==\"],\n\n    \"pac-proxy-agent\": [\"pac-proxy-agent@7.2.0\", \"\", { \"dependencies\": { \"@tootallnate/quickjs-emscripten\": \"^0.23.0\", \"agent-base\": \"^7.1.2\", \"debug\": \"^4.3.4\", \"get-uri\": \"^6.0.1\", \"http-proxy-agent\": \"^7.0.0\", \"https-proxy-agent\": \"^7.0.6\", \"pac-resolver\": \"^7.0.1\", \"socks-proxy-agent\": \"^8.0.5\" } }, \"sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==\"],\n\n    \"pac-resolver\": [\"pac-resolver@7.0.1\", \"\", { \"dependencies\": { \"degenerator\": \"^5.0.0\", \"netmask\": \"^2.0.2\" } }, \"sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==\"],\n\n    \"proxy-agent\": [\"proxy-agent@6.5.0\", \"\", { \"dependencies\": { \"agent-base\": \"^7.1.2\", \"debug\": \"^4.3.4\", \"http-proxy-agent\": \"^7.0.1\", \"https-proxy-agent\": \"^7.0.6\", \"lru-cache\": \"^7.14.1\", \"pac-proxy-agent\": \"^7.1.0\", \"proxy-from-env\": \"^1.1.0\", \"socks-proxy-agent\": \"^8.0.5\" } }, \"sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==\"],\n\n    \"proxy-from-env\": [\"proxy-from-env@1.1.0\", \"\", {}, \"sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==\"],\n\n    \"retry\": [\"retry@0.13.1\", \"\", {}, \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\"],\n\n    \"smart-buffer\": [\"smart-buffer@4.2.0\", \"\", {}, \"sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==\"],\n\n    \"socks\": [\"socks@2.8.7\", \"\", { \"dependencies\": { \"ip-address\": \"^10.0.1\", \"smart-buffer\": \"^4.2.0\" } }, \"sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==\"],\n\n    \"socks-proxy-agent\": [\"socks-proxy-agent@8.0.5\", \"\", { \"dependencies\": { \"agent-base\": \"^7.1.2\", \"debug\": \"^4.3.4\", \"socks\": \"^2.8.3\" } }, \"sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==\"],\n\n    \"source-map\": [\"source-map@0.6.1\", \"\", {}, \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\"],\n\n    \"tslib\": [\"tslib@2.8.1\", \"\", {}, \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\"],\n\n    \"type-fest\": [\"type-fest@4.41.0\", \"\", {}, \"sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==\"],\n\n    \"vali-date\": [\"vali-date@1.0.0\", \"\", {}, \"sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==\"],\n  }\n}\n","type":"rawscript","assets":[],"content":"import { ActorListSortBy, ApifyClient } from 'apify-client@^2.19.0';\nimport { createHash } from 'node:crypto';\n\ntype ApifyApiKey = {\n  api_key: string;\n};\n\ntype Apify = {\n  token: string;\n};\n\ntype WebhookEventTypes =\n  | 'ACTOR.RUN.SUCCEEDED'\n  | 'ACTOR.RUN.FAILED'\n  | 'ACTOR.RUN.TIMED_OUT'\n  | 'ACTOR.RUN.ABORTED'\n\ntype ApifyWebhookConfig = {\n  url: string;\n  token: string;\n};\n\ntype ActorSource = 'RECENTLY_USED_ACTORS' | 'APIFY_STORE_ACTORS';\n\nexport type DynSelect_actorId = string;\nexport async function actorId(actorSource: ActorSource, api_key?: ApifyApiKey, oauth_token?: Apify) {\n  if (!api_key?.api_key && !oauth_token?.token) {\n    return [{ value: '', label: 'Missing Apify API key or OAuth token' }];\n  }\n\n  const client = createClient(api_key, oauth_token);\n\n  const mapActorToSelectOption = (actor: any) => {\n    const optionName = actor.title\n      ? `${actor.title} (${actor.username}/${actor.name})`\n      : `${actor.username}/${actor.name}`;\n\n    return {\n      label: optionName,\n      value: actor.id,\n    };\n  };\n\n  try {\n    if (actorSource === 'RECENTLY_USED_ACTORS') {\n      const recentActors = await client.actors().list({\n        limit: 100,\n        offset: 0,\n        sortBy: ActorListSortBy.LAST_RUN_STARTED_AT,\n        desc: true,\n      });\n      return recentActors.items.map(mapActorToSelectOption);\n    }\n\n    const storeActors = await client.store().list({\n      limit: 1000,\n      offset: 0,\n    });\n    return storeActors.items.map(mapActorToSelectOption);\n  } catch (error: any) {\n    return [\n      { value: '', label: `Failed to load actors: ${error.message || error}` },\n    ];\n  }\n}\n\nfunction prettifyEvent(e: string) {\n  return e.replace(/^ACTOR\\.RUN\\./, '');\n}\n\nfunction generateIdempotencyKey(\n  id: string,\n  eventTypes: WebhookEventTypes[],\n  requestUrl: string\n): string {\n  const sortedEventTypes = [...eventTypes].sort();\n  const url = new URL(requestUrl);\n  const pathname = url.pathname;\n  const hash = createHash('sha256');\n  hash.update(`${id}:${sortedEventTypes.join(',')}:${pathname}`);\n  return hash.digest('hex');\n}\n\nconst createClient = (api_key?: ApifyApiKey, oauth_token?: Apify): ApifyClient => {\n  const token = oauth_token?.token ?? api_key?.api_key;\n  if (!token) {\n    throw new Error('Missing Apify API key or OAuth token');\n  }\n\n  return new ApifyClient({\n    token: token,\n    requestInterceptors: [\n      (request) => {\n        if (!request.headers) {\n          request.headers = {};\n        }\n        request.headers['x-apify-integration-platform'] = 'windmill';\n        return request;\n      },\n    ],\n  });\n};\nexport async function main(\n  actorSource: ActorSource,\n  apifyWebhookConfig: ApifyWebhookConfig,\n  actorId: DynSelect_actorId,\n  eventTypes: WebhookEventTypes[],\n  api_key?: ApifyApiKey,\n  oauth_token?: Apify,\n) {\n  if (!actorId) {\n    return { error: 'Actor ID is required' };\n  }\n\n  const client = createClient(api_key, oauth_token);\n\n  const idempotencyKey = generateIdempotencyKey(\n    actorId,\n    eventTypes,\n    apifyWebhookConfig.url\n  );\n  const headersTemplate = JSON.stringify({\n    Authorization: `Bearer ${apifyWebhookConfig.token}`,\n  });\n\n  // get actor to store name for later webhook deletion\n  const actor = await client.actor(actorId).get();\n  const actorName = actor && (actor.title || actor.name);\n  const webhookEvents = eventTypes\n    .map((event) => prettifyEvent(event))\n    .join(', ');\n\n  try {\n    const response = await client.webhooks().create({\n      requestUrl: apifyWebhookConfig.url,\n      eventTypes: eventTypes,\n      condition: {\n        actorId: actorId,\n      },\n      idempotencyKey,\n      headersTemplate,\n      shouldInterpolateStrings: true,\n      description: `${actorName}: ${webhookEvents}`,\n      title: \"Windmill integration\"\n    });\n\n    return response;\n  } catch (e: any) {\n    return { error: `Failed to create a webhook. Reason: ${e.message}` };\n  }\n}\n","language":"bun","input_transforms":{"actorId":{"type":"static"},"api_key":{"type":"static"},"eventTypes":{"type":"static","value":[]},"actorSource":{"type":"static","value":"RECENTLY_USED_ACTORS"},"oauth_token":{"type":"static","value":null},"apifyWebhookConfig":{"type":"static"}}},"summary":"Create Actor Webhook"},{"id":"b","value":{"type":"branchone","default":[],"branches":[{"expr":"Boolean(flow_input?.resource?.defaultDatasetId)","modules":[{"id":"c","value":{"lock":"{\n  \"dependencies\": {\n    \"apify-client\": \"^2.19.0\"\n  }\n}\n//bun.lock\n{\n  \"lockfileVersion\": 1,\n  \"workspaces\": {\n    \"\": {\n      \"dependencies\": {\n        \"apify-client\": \"^2.19.0\",\n      },\n    },\n  },\n  \"packages\": {\n    \"@apify/consts\": [\"@apify/consts@2.48.0\", \"\", {}, \"sha512-a0HeYDxAbbkRxc9z2N6beMFAmAJSgBw8WuKUwV+KmCuPyGUVLp54fYzjQ63p9Gv5IVFC88/HMXpAzI29ARgO5w==\"],\n\n    \"@apify/log\": [\"@apify/log@2.5.28\", \"\", { \"dependencies\": { \"@apify/consts\": \"^2.48.0\", \"ansi-colors\": \"^4.1.1\" } }, \"sha512-jU8qIvU+Crek8glBjFl3INjJQWWDR9n2z9Dr0WvUI8KJi0LG9fMdTvV+Aprf9z1b37CbHXgiZkA1iPlNYxKOEQ==\"],\n\n    \"@apify/utilities\": [\"@apify/utilities@2.25.0\", \"\", { \"dependencies\": { \"@apify/consts\": \"^2.48.0\", \"@apify/log\": \"^2.5.28\" } }, \"sha512-j+doZoNKGwqByCzhiGdU4hf5uNFtYS1xOihFV/GDcYAv8T/gIyKw/TaMmaRlAUmItww9PW58Qh+lDJ4kP/xZug==\"],\n\n    \"@crawlee/types\": [\"@crawlee/types@3.15.3\", \"\", { \"dependencies\": { \"tslib\": \"^2.4.0\" } }, \"sha512-RvgVPXrsQw4GQIUXrC1z1aNOedUPJnZ/U/8n+jZ0fu1Iw9moJVMuiuIxSI8q1P6BA84aWZdalyfDWBZ3FMjsiw==\"],\n\n    \"@sindresorhus/is\": [\"@sindresorhus/is@4.6.0\", \"\", {}, \"sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==\"],\n\n    \"@tootallnate/quickjs-emscripten\": [\"@tootallnate/quickjs-emscripten@0.23.0\", \"\", {}, \"sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==\"],\n\n    \"agent-base\": [\"agent-base@7.1.4\", \"\", {}, \"sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==\"],\n\n    \"ansi-colors\": [\"ansi-colors@4.1.3\", \"\", {}, \"sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==\"],\n\n    \"apify-client\": [\"apify-client@2.21.0\", \"\", { \"dependencies\": { \"@apify/consts\": \"^2.42.0\", \"@apify/log\": \"^2.2.6\", \"@apify/utilities\": \"^2.23.2\", \"@crawlee/types\": \"^3.3.0\", \"ansi-colors\": \"^4.1.1\", \"async-retry\": \"^1.3.3\", \"axios\": \"^1.6.7\", \"content-type\": \"^1.0.5\", \"ow\": \"^0.28.2\", \"proxy-agent\": \"^6.5.0\", \"tslib\": \"^2.5.0\", \"type-fest\": \"^4.0.0\" } }, \"sha512-mNXyHJFHIc6zswANonWojz9JvsSsqLbfNQA1Q+COcf0dBTBOwrFlYMTt/pJbcr55PZieBXdMOGIwGsv6UHeJWQ==\"],\n\n    \"ast-types\": [\"ast-types@0.13.4\", \"\", { \"dependencies\": { \"tslib\": \"^2.0.1\" } }, \"sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==\"],\n\n    \"async-retry\": [\"async-retry@1.3.3\", \"\", { \"dependencies\": { \"retry\": \"0.13.1\" } }, \"sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==\"],\n\n    \"asynckit\": [\"asynckit@0.4.0\", \"\", {}, \"sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==\"],\n\n    \"axios\": [\"axios@1.13.2\", \"\", { \"dependencies\": { \"follow-redirects\": \"^1.15.6\", \"form-data\": \"^4.0.4\", \"proxy-from-env\": \"^1.1.0\" } }, \"sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==\"],\n\n    \"basic-ftp\": [\"basic-ftp@5.1.0\", \"\", {}, \"sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==\"],\n\n    \"call-bind-apply-helpers\": [\"call-bind-apply-helpers@1.0.2\", \"\", { \"dependencies\": { \"es-errors\": \"^1.3.0\", \"function-bind\": \"^1.1.2\" } }, \"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==\"],\n\n    \"callsites\": [\"callsites@3.1.0\", \"\", {}, \"sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==\"],\n\n    \"combined-stream\": [\"combined-stream@1.0.8\", \"\", { \"dependencies\": { \"delayed-stream\": \"~1.0.0\" } }, \"sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==\"],\n\n    \"content-type\": [\"content-type@1.0.5\", \"\", {}, \"sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==\"],\n\n    \"data-uri-to-buffer\": [\"data-uri-to-buffer@6.0.2\", \"\", {}, \"sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==\"],\n\n    \"debug\": [\"debug@4.4.3\", \"\", { \"dependencies\": { \"ms\": \"^2.1.3\" } }, \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\"],\n\n    \"degenerator\": [\"degenerator@5.0.1\", \"\", { \"dependencies\": { \"ast-types\": \"^0.13.4\", \"escodegen\": \"^2.1.0\", \"esprima\": \"^4.0.1\" } }, \"sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==\"],\n\n    \"delayed-stream\": [\"delayed-stream@1.0.0\", \"\", {}, \"sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==\"],\n\n    \"dot-prop\": [\"dot-prop@6.0.1\", \"\", { \"dependencies\": { \"is-obj\": \"^2.0.0\" } }, \"sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==\"],\n\n    \"dunder-proto\": [\"dunder-proto@1.0.1\", \"\", { \"dependencies\": { \"call-bind-apply-helpers\": \"^1.0.1\", \"es-errors\": \"^1.3.0\", \"gopd\": \"^1.2.0\" } }, \"sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==\"],\n\n    \"es-define-property\": [\"es-define-property@1.0.1\", \"\", {}, \"sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==\"],\n\n    \"es-errors\": [\"es-errors@1.3.0\", \"\", {}, \"sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==\"],\n\n    \"es-object-atoms\": [\"es-object-atoms@1.1.1\", \"\", { \"dependencies\": { \"es-errors\": \"^1.3.0\" } }, \"sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==\"],\n\n    \"es-set-tostringtag\": [\"es-set-tostringtag@2.1.0\", \"\", { \"dependencies\": { \"es-errors\": \"^1.3.0\", \"get-intrinsic\": \"^1.2.6\", \"has-tostringtag\": \"^1.0.2\", \"hasown\": \"^2.0.2\" } }, \"sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==\"],\n\n    \"escodegen\": [\"escodegen@2.1.0\", \"\", { \"dependencies\": { \"esprima\": \"^4.0.1\", \"estraverse\": \"^5.2.0\", \"esutils\": \"^2.0.2\" }, \"optionalDependencies\": { \"source-map\": \"~0.6.1\" }, \"bin\": { \"esgenerate\": \"bin/esgenerate.js\", \"escodegen\": \"bin/escodegen.js\" } }, \"sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==\"],\n\n    \"esprima\": [\"esprima@4.0.1\", \"\", { \"bin\": { \"esparse\": \"./bin/esparse.js\", \"esvalidate\": \"./bin/esvalidate.js\" } }, \"sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==\"],\n\n    \"estraverse\": [\"estraverse@5.3.0\", \"\", {}, \"sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==\"],\n\n    \"esutils\": [\"esutils@2.0.3\", \"\", {}, \"sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==\"],\n\n    \"follow-redirects\": [\"follow-redirects@1.15.11\", \"\", {}, \"sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==\"],\n\n    \"form-data\": [\"form-data@4.0.5\", \"\", { \"dependencies\": { \"asynckit\": \"^0.4.0\", \"combined-stream\": \"^1.0.8\", \"es-set-tostringtag\": \"^2.1.0\", \"hasown\": \"^2.0.2\", \"mime-types\": \"^2.1.12\" } }, \"sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==\"],\n\n    \"function-bind\": [\"function-bind@1.1.2\", \"\", {}, \"sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==\"],\n\n    \"get-intrinsic\": [\"get-intrinsic@1.3.0\", \"\", { \"dependencies\": { \"call-bind-apply-helpers\": \"^1.0.2\", \"es-define-property\": \"^1.0.1\", \"es-errors\": \"^1.3.0\", \"es-object-atoms\": \"^1.1.1\", \"function-bind\": \"^1.1.2\", \"get-proto\": \"^1.0.1\", \"gopd\": \"^1.2.0\", \"has-symbols\": \"^1.1.0\", \"hasown\": \"^2.0.2\", \"math-intrinsics\": \"^1.1.0\" } }, \"sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==\"],\n\n    \"get-proto\": [\"get-proto@1.0.1\", \"\", { \"dependencies\": { \"dunder-proto\": \"^1.0.1\", \"es-object-atoms\": \"^1.0.0\" } }, \"sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==\"],\n\n    \"get-uri\": [\"get-uri@6.0.5\", \"\", { \"dependencies\": { \"basic-ftp\": \"^5.0.2\", \"data-uri-to-buffer\": \"^6.0.2\", \"debug\": \"^4.3.4\" } }, \"sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==\"],\n\n    \"gopd\": [\"gopd@1.2.0\", \"\", {}, \"sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==\"],\n\n    \"has-symbols\": [\"has-symbols@1.1.0\", \"\", {}, \"sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==\"],\n\n    \"has-tostringtag\": [\"has-tostringtag@1.0.2\", \"\", { \"dependencies\": { \"has-symbols\": \"^1.0.3\" } }, \"sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==\"],\n\n    \"hasown\": [\"hasown@2.0.2\", \"\", { \"dependencies\": { \"function-bind\": \"^1.1.2\" } }, \"sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==\"],\n\n    \"http-proxy-agent\": [\"http-proxy-agent@7.0.2\", \"\", { \"dependencies\": { \"agent-base\": \"^7.1.0\", \"debug\": \"^4.3.4\" } }, \"sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==\"],\n\n    \"https-proxy-agent\": [\"https-proxy-agent@7.0.6\", \"\", { \"dependencies\": { \"agent-base\": \"^7.1.2\", \"debug\": \"4\" } }, \"sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==\"],\n\n    \"ip-address\": [\"ip-address@10.1.0\", \"\", {}, \"sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==\"],\n\n    \"is-obj\": [\"is-obj@2.0.0\", \"\", {}, \"sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==\"],\n\n    \"lodash.isequal\": [\"lodash.isequal@4.5.0\", \"\", {}, \"sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==\"],\n\n    \"lru-cache\": [\"lru-cache@7.18.3\", \"\", {}, \"sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==\"],\n\n    \"math-intrinsics\": [\"math-intrinsics@1.1.0\", \"\", {}, \"sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==\"],\n\n    \"mime-db\": [\"mime-db@1.52.0\", \"\", {}, \"sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==\"],\n\n    \"mime-types\": [\"mime-types@2.1.35\", \"\", { \"dependencies\": { \"mime-db\": \"1.52.0\" } }, \"sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==\"],\n\n    \"ms\": [\"ms@2.1.3\", \"\", {}, \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\"],\n\n    \"netmask\": [\"netmask@2.0.2\", \"\", {}, \"sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==\"],\n\n    \"ow\": [\"ow@0.28.2\", \"\", { \"dependencies\": { \"@sindresorhus/is\": \"^4.2.0\", \"callsites\": \"^3.1.0\", \"dot-prop\": \"^6.0.1\", \"lodash.isequal\": \"^4.5.0\", \"vali-date\": \"^1.0.0\" } }, \"sha512-dD4UpyBh/9m4X2NVjA+73/ZPBRF+uF4zIMFvvQsabMiEK8x41L3rQ8EENOi35kyyoaJwNxEeJcP6Fj1H4U409Q==\"],\n\n    \"pac-proxy-agent\": [\"pac-proxy-agent@7.2.0\", \"\", { \"dependencies\": { \"@tootallnate/quickjs-emscripten\": \"^0.23.0\", \"agent-base\": \"^7.1.2\", \"debug\": \"^4.3.4\", \"get-uri\": \"^6.0.1\", \"http-proxy-agent\": \"^7.0.0\", \"https-proxy-agent\": \"^7.0.6\", \"pac-resolver\": \"^7.0.1\", \"socks-proxy-agent\": \"^8.0.5\" } }, \"sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==\"],\n\n    \"pac-resolver\": [\"pac-resolver@7.0.1\", \"\", { \"dependencies\": { \"degenerator\": \"^5.0.0\", \"netmask\": \"^2.0.2\" } }, \"sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==\"],\n\n    \"proxy-agent\": [\"proxy-agent@6.5.0\", \"\", { \"dependencies\": { \"agent-base\": \"^7.1.2\", \"debug\": \"^4.3.4\", \"http-proxy-agent\": \"^7.0.1\", \"https-proxy-agent\": \"^7.0.6\", \"lru-cache\": \"^7.14.1\", \"pac-proxy-agent\": \"^7.1.0\", \"proxy-from-env\": \"^1.1.0\", \"socks-proxy-agent\": \"^8.0.5\" } }, \"sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==\"],\n\n    \"proxy-from-env\": [\"proxy-from-env@1.1.0\", \"\", {}, \"sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==\"],\n\n    \"retry\": [\"retry@0.13.1\", \"\", {}, \"sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==\"],\n\n    \"smart-buffer\": [\"smart-buffer@4.2.0\", \"\", {}, \"sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==\"],\n\n    \"socks\": [\"socks@2.8.7\", \"\", { \"dependencies\": { \"ip-address\": \"^10.0.1\", \"smart-buffer\": \"^4.2.0\" } }, \"sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==\"],\n\n    \"socks-proxy-agent\": [\"socks-proxy-agent@8.0.5\", \"\", { \"dependencies\": { \"agent-base\": \"^7.1.2\", \"debug\": \"^4.3.4\", \"socks\": \"^2.8.3\" } }, \"sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==\"],\n\n    \"source-map\": [\"source-map@0.6.1\", \"\", {}, \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\"],\n\n    \"tslib\": [\"tslib@2.8.1\", \"\", {}, \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\"],\n\n    \"type-fest\": [\"type-fest@4.41.0\", \"\", {}, \"sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==\"],\n\n    \"vali-date\": [\"vali-date@1.0.0\", \"\", {}, \"sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==\"],\n  }\n}\n","type":"rawscript","assets":[],"content":"import { ApifyClient } from 'apify-client@^2.19.0';\n\ntype ApifyApiKey = {\n  api_key: string;\n};\n\ntype Apify = {\n  token: string;\n};\n\nconst createClient = (api_key?: ApifyApiKey, oauth_token?: Apify): ApifyClient => {\n  const token = oauth_token?.token ?? api_key?.api_key;\n  if (!token) {\n    throw new Error('Missing Apify API key or OAuth token');\n  }\n\n  return new ApifyClient({\n    token: token,\n    requestInterceptors: [\n      (request) => {\n        if (!request.headers) {\n          request.headers = {};\n        }\n        request.headers['x-apify-integration-platform'] = 'windmill';\n        return request;\n      },\n    ],\n  });\n};\n\ntype DynSelect_dataset = string;\nexport async function dataset(api_key?: ApifyApiKey, oauth_token?: Apify) {\n  if (!api_key?.api_key && !oauth_token?.token) {\n    return [{ value: '', label: 'Missing Apify API key or OAuth token' }];\n  }\n\n  const apifyClient = createClient(api_key, oauth_token);\n\n  try {\n    const dataset = await apifyClient.datasets().list({\n      desc: true,\n    });\n\n    return dataset.items.map(item => ({\n      value: item.id,\n      label: `${item.title || item.name} (${item.itemCount} ${pluralize(item.itemCount)} - ${item.id})`\n    }));\n  } catch (e: any) {\n    return {\n      error: `Failed to fetch dataset list. Reason: ${e.message}`\n    };\n  }\n}\n\nfunction pluralize(n: number) {\n  return n === 1 ? \"item\" : \"items\";\n}\n\nexport async function main(\n  api_key?: ApifyApiKey,\n  oauth_token?: Apify,\n  datasetId?: string,\n  dataset?: DynSelect_dataset,\n  offset?: number,\n  limit?: number,\n  fields?: string[],\n  omit?: string[],\n) {\n\n  const id = datasetId || dataset;\n\n  if (!id) {\n    return {\n      error: \"A Dataset ID is required. Please select one from the list or provide it manually\"\n    };\n  }\n\n  const apifyClient = createClient(api_key, oauth_token);\n\n  try {\n    const result = await apifyClient.dataset(id).listItems({\n      // in a Flow null is passed instead of undefined\n      offset: offset ?? undefined,\n      limit: limit ?? undefined,\n      fields: fields ?? undefined,\n      omit: omit ?? undefined,\n    });\n\n    if (!result) {\n      return { error: `Dataset with ID \"${id}\" not found` };\n    }\n\n    return result.items;\n  } catch (e: any) {\n    return { error: `Failed to fetch items from dataset \"${id}\". Reason: ${e.message}` };\n  }\n}","language":"bun","input_transforms":{"omit":{"type":"static","value":[]},"limit":{"type":"static","value":1000},"fields":{"type":"static","value":[]},"offset":{"type":"static","value":0},"api_key":{"type":"static","value":null},"dataset":{"type":"static"},"datasetId":{"expr":"`${flow_input.resource.defaultDatasetId}`","type":"javascript","value":"${flow_input.resource.defaultDatasetId}"},"oauth_token":{"type":"static","value":null}}},"summary":"Get Dataset Items"},{"id":"e","value":{"type":"forloopflow","modules":[{"id":"d","value":{"lock":"{\n  \"dependencies\": {}\n}\n//bun.lock\n<empty>","type":"rawscript","assets":[],"content":"// import * as wmill from \"windmill-client\"\n\nexport async function main(index: number, getDatesetItemsResult: object) {\n  console.log({index, getDatesetItemsResult});\n\n  return getDatesetItemsResult;\n}\n","language":"bun","input_transforms":{"index":{"expr":"flow_input.iter.index","type":"javascript"},"getDatesetItemsResult":{"expr":"flow_input.iter.value","type":"javascript"}}},"summary":"Process dataset item for an action"}],"iterator":{"expr":"[...results.c]","type":"javascript"},"parallel":false,"skip_failures":true}}],"summary":"If is webhook trigger result","parallel":true,"skip_failure":true}]},"summary":""}]},"schema":{"type":"object","order":["createdAt","eventData","eventType","resource","userId"],"$schema":"https://json-schema.org/draft/2020-12/schema","required":[],"properties":{"userId":{"type":"string","title":"User ID","default":"","disabled":true,"description":""},"resource":{"type":"object","order":["links","defaultDatasetId","defaultRequestQueueId","defaultKeyValueStoreId"],"title":"Resource","format":"","disabled":true,"required":[],"properties":{"links":{"type":"object","order":["apiRunUrl","publicRunUrl","consoleRunUrl"],"title":"Links","format":"","required":[],"properties":{"apiRunUrl":{"type":"string","title":"API run URL","default":"","description":""},"publicRunUrl":{"type":"string","title":"Public run URL","default":"","description":""},"consoleRunUrl":{"type":"string","title":"Console Run URL","default":"","description":""}},"description":""},"defaultDatasetId":{"type":"string","title":"Default Dataset ID","default":"","description":""},"defaultRequestQueueId":{"type":"string","title":"Default Request Queue ID","default":"","description":""},"defaultKeyValueStoreId":{"type":"string","title":"Default Key Value Store ID","default":"","description":""}},"description":""},"createdAt":{"type":"string","title":"Created At","format":"date-time","default":"","disabled":true,"description":""},"eventData":{"type":"object","order":["actorId","actorRunId"],"title":"Event Data","format":"","disabled":true,"required":[],"properties":{"actorId":{"type":"string","title":"Actor ID","default":"","description":""},"actorRunId":{"type":"string","title":"Actor Run ID","default":"","description":""}},"description":""},"eventType":{"type":"string","title":"Event Type","default":"","disabled":true,"description":""}}},"description":"# Apify Actor Webhook → Dataset Processor (example)\nProcesses Apify Actor run webhooks, fetches the run’s default dataset, and lets you handle each item.\n\n## How it works\n\n- Creates the Actor webhook using an idempotency key, so no duplicates. If your webhook already exists, remove the create-webhook step and its branch.\n- On each incoming webhook, extracts the run info, reads `defaultDatasetId`, fetches the dataset, and iterates its items.\n- Inside the loop, use the provided TS step—or swap in any language—to transform each item for downstream actions (e.g., map fields for Airtable). Collected iteration results are returned at the end.\n\n## Setup\n\n- Create and/or provide your Apify Auth Resource in every used Apify script.\n- Get the webhook URL and token from the webhook settings, and use them to create a new **webhook config** resource.\n- Test-run the script that creates the webhook.\n- (Optional) Once confirmed, remove the creation script along with the conditional branching.\n- Set the actions you want to run for each dataset item.\n\n","recording":null,"vcreated_at":"2026-01-09T12:28:37.400Z","vcreated_by":"jakub.drobnik222","comments":[]}}