@marinoscar/platform-api 0.1.0-next.19 → 0.1.0-next.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -0
  3. package/dist/alerts/alerts-admin.controller.d.ts +40 -0
  4. package/dist/alerts/alerts-admin.controller.d.ts.map +1 -0
  5. package/dist/alerts/alerts-admin.controller.js +297 -0
  6. package/dist/alerts/alerts-admin.controller.js.map +1 -0
  7. package/dist/alerts/alerts-context.service.d.ts +64 -0
  8. package/dist/alerts/alerts-context.service.d.ts.map +1 -0
  9. package/dist/alerts/alerts-context.service.js +190 -0
  10. package/dist/alerts/alerts-context.service.js.map +1 -0
  11. package/dist/alerts/alerts-dispatch.service.d.ts +53 -0
  12. package/dist/alerts/alerts-dispatch.service.d.ts.map +1 -0
  13. package/dist/alerts/alerts-dispatch.service.js +135 -0
  14. package/dist/alerts/alerts-dispatch.service.js.map +1 -0
  15. package/dist/alerts/alerts-evaluation.service.d.ts +88 -0
  16. package/dist/alerts/alerts-evaluation.service.d.ts.map +1 -0
  17. package/dist/alerts/alerts-evaluation.service.js +296 -0
  18. package/dist/alerts/alerts-evaluation.service.js.map +1 -0
  19. package/dist/alerts/alerts-event.listener.d.ts +22 -0
  20. package/dist/alerts/alerts-event.listener.d.ts.map +1 -0
  21. package/dist/alerts/alerts-event.listener.js +72 -0
  22. package/dist/alerts/alerts-event.listener.js.map +1 -0
  23. package/dist/alerts/alerts-incidents.service.d.ts +86 -0
  24. package/dist/alerts/alerts-incidents.service.d.ts.map +1 -0
  25. package/dist/alerts/alerts-incidents.service.js +144 -0
  26. package/dist/alerts/alerts-incidents.service.js.map +1 -0
  27. package/dist/alerts/alerts-rules.service.d.ts +73 -0
  28. package/dist/alerts/alerts-rules.service.d.ts.map +1 -0
  29. package/dist/alerts/alerts-rules.service.js +205 -0
  30. package/dist/alerts/alerts-rules.service.js.map +1 -0
  31. package/dist/alerts/alerts-seed.service.d.ts +25 -0
  32. package/dist/alerts/alerts-seed.service.d.ts.map +1 -0
  33. package/dist/alerts/alerts-seed.service.js +82 -0
  34. package/dist/alerts/alerts-seed.service.js.map +1 -0
  35. package/dist/alerts/alerts.constants.d.ts +53 -0
  36. package/dist/alerts/alerts.constants.d.ts.map +1 -0
  37. package/dist/alerts/alerts.constants.js +57 -0
  38. package/dist/alerts/alerts.constants.js.map +1 -0
  39. package/dist/alerts/alerts.errors.d.ts +44 -0
  40. package/dist/alerts/alerts.errors.d.ts.map +1 -0
  41. package/dist/alerts/alerts.errors.js +47 -0
  42. package/dist/alerts/alerts.errors.js.map +1 -0
  43. package/dist/alerts/alerts.metrics.d.ts +60 -0
  44. package/dist/alerts/alerts.metrics.d.ts.map +1 -0
  45. package/dist/alerts/alerts.metrics.js +135 -0
  46. package/dist/alerts/alerts.metrics.js.map +1 -0
  47. package/dist/alerts/alerts.module.d.ts +35 -0
  48. package/dist/alerts/alerts.module.d.ts.map +1 -0
  49. package/dist/alerts/alerts.module.js +96 -0
  50. package/dist/alerts/alerts.module.js.map +1 -0
  51. package/dist/alerts/alerts.options.d.ts +64 -0
  52. package/dist/alerts/alerts.options.d.ts.map +1 -0
  53. package/dist/alerts/alerts.options.js +34 -0
  54. package/dist/alerts/alerts.options.js.map +1 -0
  55. package/dist/alerts/alerts.permissions.d.ts +27 -0
  56. package/dist/alerts/alerts.permissions.d.ts.map +1 -0
  57. package/dist/alerts/alerts.permissions.js +29 -0
  58. package/dist/alerts/alerts.permissions.js.map +1 -0
  59. package/dist/alerts/alerts.types.d.ts +182 -0
  60. package/dist/alerts/alerts.types.d.ts.map +1 -0
  61. package/dist/alerts/alerts.types.js +3 -0
  62. package/dist/alerts/alerts.types.js.map +1 -0
  63. package/dist/alerts/data/alerts-db.d.ts +169 -0
  64. package/dist/alerts/data/alerts-db.d.ts.map +1 -0
  65. package/dist/alerts/data/alerts-db.js +18 -0
  66. package/dist/alerts/data/alerts-db.js.map +1 -0
  67. package/dist/alerts/dto/alerts.dto.d.ts +132 -0
  68. package/dist/alerts/dto/alerts.dto.d.ts.map +1 -0
  69. package/dist/alerts/dto/alerts.dto.js +42 -0
  70. package/dist/alerts/dto/alerts.dto.js.map +1 -0
  71. package/dist/alerts/handlers/alerts-evaluate-event.handler.d.ts +23 -0
  72. package/dist/alerts/handlers/alerts-evaluate-event.handler.d.ts.map +1 -0
  73. package/dist/alerts/handlers/alerts-evaluate-event.handler.js +71 -0
  74. package/dist/alerts/handlers/alerts-evaluate-event.handler.js.map +1 -0
  75. package/dist/alerts/handlers/alerts-evaluate.handler.d.ts +25 -0
  76. package/dist/alerts/handlers/alerts-evaluate.handler.d.ts.map +1 -0
  77. package/dist/alerts/handlers/alerts-evaluate.handler.js +54 -0
  78. package/dist/alerts/handlers/alerts-evaluate.handler.js.map +1 -0
  79. package/dist/alerts/handlers/alerts-incidents-purge.handler.d.ts +29 -0
  80. package/dist/alerts/handlers/alerts-incidents-purge.handler.d.ts.map +1 -0
  81. package/dist/alerts/handlers/alerts-incidents-purge.handler.js +76 -0
  82. package/dist/alerts/handlers/alerts-incidents-purge.handler.js.map +1 -0
  83. package/dist/alerts/index.d.ts +45 -0
  84. package/dist/alerts/index.d.ts.map +1 -0
  85. package/dist/alerts/index.js +108 -0
  86. package/dist/alerts/index.js.map +1 -0
  87. package/dist/alerts/kinds/alert-kind.registry.d.ts +33 -0
  88. package/dist/alerts/kinds/alert-kind.registry.d.ts.map +1 -0
  89. package/dist/alerts/kinds/alert-kind.registry.js +63 -0
  90. package/dist/alerts/kinds/alert-kind.registry.js.map +1 -0
  91. package/dist/alerts/kinds/builtin-kinds.d.ts +18 -0
  92. package/dist/alerts/kinds/builtin-kinds.d.ts.map +1 -0
  93. package/dist/alerts/kinds/builtin-kinds.js +33 -0
  94. package/dist/alerts/kinds/builtin-kinds.js.map +1 -0
  95. package/dist/alerts/kinds/metric-threshold.kind.d.ts +11 -0
  96. package/dist/alerts/kinds/metric-threshold.kind.d.ts.map +1 -0
  97. package/dist/alerts/kinds/metric-threshold.kind.js +63 -0
  98. package/dist/alerts/kinds/metric-threshold.kind.js.map +1 -0
  99. package/dist/alerts/kinds/metric-threshold.sql.d.ts +41 -0
  100. package/dist/alerts/kinds/metric-threshold.sql.d.ts.map +1 -0
  101. package/dist/alerts/kinds/metric-threshold.sql.js +124 -0
  102. package/dist/alerts/kinds/metric-threshold.sql.js.map +1 -0
  103. package/dist/alerts/kinds/node-event.kind.d.ts +44 -0
  104. package/dist/alerts/kinds/node-event.kind.d.ts.map +1 -0
  105. package/dist/alerts/kinds/node-event.kind.js +113 -0
  106. package/dist/alerts/kinds/node-event.kind.js.map +1 -0
  107. package/dist/alerts/kinds/node-offline.kind.d.ts +11 -0
  108. package/dist/alerts/kinds/node-offline.kind.d.ts.map +1 -0
  109. package/dist/alerts/kinds/node-offline.kind.js +41 -0
  110. package/dist/alerts/kinds/node-offline.kind.js.map +1 -0
  111. package/dist/alerts/kinds/telemetry-unavailable.kind.d.ts +11 -0
  112. package/dist/alerts/kinds/telemetry-unavailable.kind.d.ts.map +1 -0
  113. package/dist/alerts/kinds/telemetry-unavailable.kind.js +40 -0
  114. package/dist/alerts/kinds/telemetry-unavailable.kind.js.map +1 -0
  115. package/dist/alerts/kinds/verdict.kind.d.ts +13 -0
  116. package/dist/alerts/kinds/verdict.kind.d.ts.map +1 -0
  117. package/dist/alerts/kinds/verdict.kind.js +34 -0
  118. package/dist/alerts/kinds/verdict.kind.js.map +1 -0
  119. package/dist/alerts/notifications/alerts.notifications.d.ts +77 -0
  120. package/dist/alerts/notifications/alerts.notifications.d.ts.map +1 -0
  121. package/dist/alerts/notifications/alerts.notifications.js +145 -0
  122. package/dist/alerts/notifications/alerts.notifications.js.map +1 -0
  123. package/dist/alerts/starter-rules.d.ts +21 -0
  124. package/dist/alerts/starter-rules.d.ts.map +1 -0
  125. package/dist/alerts/starter-rules.js +141 -0
  126. package/dist/alerts/starter-rules.js.map +1 -0
  127. package/dist/alerts/state/alert-state-machine.d.ts +92 -0
  128. package/dist/alerts/state/alert-state-machine.d.ts.map +1 -0
  129. package/dist/alerts/state/alert-state-machine.js +96 -0
  130. package/dist/alerts/state/alert-state-machine.js.map +1 -0
  131. package/dist/alerts/tasks/alerts-evaluate.task.d.ts +18 -0
  132. package/dist/alerts/tasks/alerts-evaluate.task.d.ts.map +1 -0
  133. package/dist/alerts/tasks/alerts-evaluate.task.js +61 -0
  134. package/dist/alerts/tasks/alerts-evaluate.task.js.map +1 -0
  135. package/dist/alerts/tasks/alerts-purge.task.d.ts +15 -0
  136. package/dist/alerts/tasks/alerts-purge.task.d.ts.map +1 -0
  137. package/dist/alerts/tasks/alerts-purge.task.js +58 -0
  138. package/dist/alerts/tasks/alerts-purge.task.js.map +1 -0
  139. package/dist/alerts/testing/conformance.d.ts +58 -0
  140. package/dist/alerts/testing/conformance.d.ts.map +1 -0
  141. package/dist/alerts/testing/conformance.js +198 -0
  142. package/dist/alerts/testing/conformance.js.map +1 -0
  143. package/dist/alerts/testing/fakes.d.ts +80 -0
  144. package/dist/alerts/testing/fakes.d.ts.map +1 -0
  145. package/dist/alerts/testing/fakes.js +230 -0
  146. package/dist/alerts/testing/fakes.js.map +1 -0
  147. package/dist/alerts/testing/index.d.ts +5 -0
  148. package/dist/alerts/testing/index.d.ts.map +1 -0
  149. package/dist/alerts/testing/index.js +15 -0
  150. package/dist/alerts/testing/index.js.map +1 -0
  151. package/dist/core/index.d.ts +1 -0
  152. package/dist/core/index.d.ts.map +1 -1
  153. package/dist/core/index.js +8 -2
  154. package/dist/core/index.js.map +1 -1
  155. package/dist/core/net/ip-classify.d.ts +39 -0
  156. package/dist/core/net/ip-classify.d.ts.map +1 -0
  157. package/dist/core/net/ip-classify.js +196 -0
  158. package/dist/core/net/ip-classify.js.map +1 -0
  159. package/dist/credentials/testing/conformance.d.ts.map +1 -1
  160. package/dist/credentials/testing/conformance.js +1 -0
  161. package/dist/credentials/testing/conformance.js.map +1 -1
  162. package/dist/jobs/data/jobs-db.d.ts +26 -0
  163. package/dist/jobs/data/jobs-db.d.ts.map +1 -1
  164. package/dist/jobs/index.d.ts +1 -1
  165. package/dist/jobs/index.d.ts.map +1 -1
  166. package/dist/jobs/index.js.map +1 -1
  167. package/dist/manifest/platform-model-ownership.d.ts +1 -1
  168. package/dist/manifest/platform-model-ownership.d.ts.map +1 -1
  169. package/dist/manifest/platform-model-ownership.js +30 -1
  170. package/dist/manifest/platform-model-ownership.js.map +1 -1
  171. package/dist/manifest/platform-permissions.d.ts +6 -2
  172. package/dist/manifest/platform-permissions.d.ts.map +1 -1
  173. package/dist/manifest/platform-permissions.js +56 -44
  174. package/dist/manifest/platform-permissions.js.map +1 -1
  175. package/dist/manifest/platform-user-owned-models.d.ts.map +1 -1
  176. package/dist/manifest/platform-user-owned-models.js +16 -0
  177. package/dist/manifest/platform-user-owned-models.js.map +1 -1
  178. package/dist/nodes/dto/node-admin.dto.d.ts +5 -0
  179. package/dist/nodes/dto/node-admin.dto.d.ts.map +1 -1
  180. package/dist/nodes/dto/node-admin.dto.js +19 -0
  181. package/dist/nodes/dto/node-admin.dto.js.map +1 -1
  182. package/dist/nodes/dto/node-control-plane.dto.d.ts +26 -0
  183. package/dist/nodes/dto/node-control-plane.dto.d.ts.map +1 -1
  184. package/dist/nodes/dto/node-event.dto.d.ts +100 -0
  185. package/dist/nodes/dto/node-event.dto.d.ts.map +1 -0
  186. package/dist/nodes/dto/node-event.dto.js +239 -0
  187. package/dist/nodes/dto/node-event.dto.js.map +1 -0
  188. package/dist/nodes/dto/node-response.dto.d.ts +21 -0
  189. package/dist/nodes/dto/node-response.dto.d.ts.map +1 -1
  190. package/dist/nodes/dto/node-response.dto.js +42 -1
  191. package/dist/nodes/dto/node-response.dto.js.map +1 -1
  192. package/dist/nodes/events/node-event.event.d.ts +41 -0
  193. package/dist/nodes/events/node-event.event.d.ts.map +1 -0
  194. package/dist/nodes/events/node-event.event.js +69 -0
  195. package/dist/nodes/events/node-event.event.js.map +1 -0
  196. package/dist/nodes/handlers/node-events-purge.handler.d.ts +31 -0
  197. package/dist/nodes/handlers/node-events-purge.handler.d.ts.map +1 -0
  198. package/dist/nodes/handlers/node-events-purge.handler.js +91 -0
  199. package/dist/nodes/handlers/node-events-purge.handler.js.map +1 -0
  200. package/dist/nodes/index.d.ts +11 -4
  201. package/dist/nodes/index.d.ts.map +1 -1
  202. package/dist/nodes/index.js +20 -1
  203. package/dist/nodes/index.js.map +1 -1
  204. package/dist/nodes/node-events.service.d.ts +87 -0
  205. package/dist/nodes/node-events.service.d.ts.map +1 -0
  206. package/dist/nodes/node-events.service.js +271 -0
  207. package/dist/nodes/node-events.service.js.map +1 -0
  208. package/dist/nodes/node-fleet-metrics.service.d.ts +10 -1
  209. package/dist/nodes/node-fleet-metrics.service.d.ts.map +1 -1
  210. package/dist/nodes/node-fleet-metrics.service.js +31 -0
  211. package/dist/nodes/node-fleet-metrics.service.js.map +1 -1
  212. package/dist/nodes/node-lifecycle.service.d.ts +16 -1
  213. package/dist/nodes/node-lifecycle.service.d.ts.map +1 -1
  214. package/dist/nodes/node-lifecycle.service.js +7 -0
  215. package/dist/nodes/node-lifecycle.service.js.map +1 -1
  216. package/dist/nodes/nodes-admin.controller.d.ts +5 -1
  217. package/dist/nodes/nodes-admin.controller.d.ts.map +1 -1
  218. package/dist/nodes/nodes-admin.controller.js +32 -2
  219. package/dist/nodes/nodes-admin.controller.js.map +1 -1
  220. package/dist/nodes/nodes.controller.d.ts +7 -3
  221. package/dist/nodes/nodes.controller.d.ts.map +1 -1
  222. package/dist/nodes/nodes.controller.js +46 -6
  223. package/dist/nodes/nodes.controller.js.map +1 -1
  224. package/dist/nodes/nodes.metrics.d.ts +23 -1
  225. package/dist/nodes/nodes.metrics.d.ts.map +1 -1
  226. package/dist/nodes/nodes.metrics.js +80 -1
  227. package/dist/nodes/nodes.metrics.js.map +1 -1
  228. package/dist/nodes/nodes.module.d.ts.map +1 -1
  229. package/dist/nodes/nodes.module.js +6 -0
  230. package/dist/nodes/nodes.module.js.map +1 -1
  231. package/dist/nodes/nodes.options.d.ts +17 -0
  232. package/dist/nodes/nodes.options.d.ts.map +1 -1
  233. package/dist/nodes/nodes.options.js +13 -2
  234. package/dist/nodes/nodes.options.js.map +1 -1
  235. package/dist/nodes/nodes.service.d.ts +3 -1
  236. package/dist/nodes/nodes.service.d.ts.map +1 -1
  237. package/dist/nodes/nodes.service.js +14 -3
  238. package/dist/nodes/nodes.service.js.map +1 -1
  239. package/dist/nodes/tasks/node-events-purge.task.d.ts +13 -0
  240. package/dist/nodes/tasks/node-events-purge.task.d.ts.map +1 -0
  241. package/dist/nodes/tasks/node-events-purge.task.js +73 -0
  242. package/dist/nodes/tasks/node-events-purge.task.js.map +1 -0
  243. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts +30 -8
  244. package/dist/telemetry/dashboard/telemetry-dashboard.service.d.ts.map +1 -1
  245. package/dist/telemetry/dashboard/telemetry-dashboard.service.js +12 -0
  246. package/dist/telemetry/dashboard/telemetry-dashboard.service.js.map +1 -1
  247. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts +15 -0
  248. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.d.ts.map +1 -1
  249. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js +17 -2
  250. package/dist/telemetry/dashboard/telemetry-dashboard.verdict.js.map +1 -1
  251. package/dist/telemetry/dto/telemetry-dashboard.dto.d.ts +3 -3
  252. package/dist/telemetry/index.d.ts +4 -2
  253. package/dist/telemetry/index.d.ts.map +1 -1
  254. package/dist/telemetry/index.js +4 -1
  255. package/dist/telemetry/index.js.map +1 -1
  256. package/dist/telemetry/metrics/groups/nodes.metric-group.d.ts.map +1 -1
  257. package/dist/telemetry/metrics/groups/nodes.metric-group.js +77 -0
  258. package/dist/telemetry/metrics/groups/nodes.metric-group.js.map +1 -1
  259. package/dist/telemetry/metrics/metric-verdict.d.ts +1 -1
  260. package/dist/telemetry/metrics/metric-verdict.d.ts.map +1 -1
  261. package/dist/telemetry/metrics/metric-verdict.js +15 -1
  262. package/dist/telemetry/metrics/metric-verdict.js.map +1 -1
  263. package/dist/telemetry/query/telemetry-query-facade.d.ts +1 -1
  264. package/dist/telemetry/query/telemetry-query-facade.d.ts.map +1 -1
  265. package/dist/telemetry/query/telemetry-query-facade.js.map +1 -1
  266. package/dist/telemetry/query/telemetry-query.service.d.ts +2 -2
  267. package/dist/telemetry/query/telemetry-query.service.d.ts.map +1 -1
  268. package/dist/telemetry/query/telemetry-query.service.js +4 -0
  269. package/dist/telemetry/query/telemetry-query.service.js.map +1 -1
  270. package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +1 -1
  271. package/dist/telemetry/telemetry-support-bundle.section.d.ts +4 -4
  272. package/dist/telemetry/telemetry.module.d.ts.map +1 -1
  273. package/dist/telemetry/telemetry.module.js +1 -0
  274. package/dist/telemetry/telemetry.module.js.map +1 -1
  275. package/dist/telemetry/testing/metric-schema.fixture.d.ts.map +1 -1
  276. package/dist/telemetry/testing/metric-schema.fixture.js +56 -0
  277. package/dist/telemetry/testing/metric-schema.fixture.js.map +1 -1
  278. package/dist/user-data/platform-user-data.d.ts.map +1 -1
  279. package/dist/user-data/platform-user-data.js +2 -0
  280. package/dist/user-data/platform-user-data.js.map +1 -1
  281. package/dist/webhooks/data/webhooks-db.d.ts +176 -0
  282. package/dist/webhooks/data/webhooks-db.d.ts.map +1 -0
  283. package/dist/webhooks/data/webhooks-db.js +14 -0
  284. package/dist/webhooks/data/webhooks-db.js.map +1 -0
  285. package/dist/webhooks/egress/egress-guard.d.ts +99 -0
  286. package/dist/webhooks/egress/egress-guard.d.ts.map +1 -0
  287. package/dist/webhooks/egress/egress-guard.js +172 -0
  288. package/dist/webhooks/egress/egress-guard.js.map +1 -0
  289. package/dist/webhooks/egress/transport.d.ts +58 -0
  290. package/dist/webhooks/egress/transport.d.ts.map +1 -0
  291. package/dist/webhooks/egress/transport.js +115 -0
  292. package/dist/webhooks/egress/transport.js.map +1 -0
  293. package/dist/webhooks/handlers/webhook-deliver.handler.d.ts +76 -0
  294. package/dist/webhooks/handlers/webhook-deliver.handler.d.ts.map +1 -0
  295. package/dist/webhooks/handlers/webhook-deliver.handler.js +332 -0
  296. package/dist/webhooks/handlers/webhook-deliver.handler.js.map +1 -0
  297. package/dist/webhooks/handlers/webhook-fanout.handler.d.ts +28 -0
  298. package/dist/webhooks/handlers/webhook-fanout.handler.d.ts.map +1 -0
  299. package/dist/webhooks/handlers/webhook-fanout.handler.js +73 -0
  300. package/dist/webhooks/handlers/webhook-fanout.handler.js.map +1 -0
  301. package/dist/webhooks/handlers/webhook-purge.handler.d.ts +33 -0
  302. package/dist/webhooks/handlers/webhook-purge.handler.d.ts.map +1 -0
  303. package/dist/webhooks/handlers/webhook-purge.handler.js +77 -0
  304. package/dist/webhooks/handlers/webhook-purge.handler.js.map +1 -0
  305. package/dist/webhooks/http/admin-webhooks.controller.d.ts +36 -0
  306. package/dist/webhooks/http/admin-webhooks.controller.d.ts.map +1 -0
  307. package/dist/webhooks/http/admin-webhooks.controller.js +250 -0
  308. package/dist/webhooks/http/admin-webhooks.controller.js.map +1 -0
  309. package/dist/webhooks/http/org-webhooks.controller.d.ts +36 -0
  310. package/dist/webhooks/http/org-webhooks.controller.d.ts.map +1 -0
  311. package/dist/webhooks/http/org-webhooks.controller.js +249 -0
  312. package/dist/webhooks/http/org-webhooks.controller.js.map +1 -0
  313. package/dist/webhooks/http/scope-context.d.ts +17 -0
  314. package/dist/webhooks/http/scope-context.d.ts.map +1 -0
  315. package/dist/webhooks/http/scope-context.js +28 -0
  316. package/dist/webhooks/http/scope-context.js.map +1 -0
  317. package/dist/webhooks/http/webhook.dto.d.ts +174 -0
  318. package/dist/webhooks/http/webhook.dto.d.ts.map +1 -0
  319. package/dist/webhooks/http/webhook.dto.js +58 -0
  320. package/dist/webhooks/http/webhook.dto.js.map +1 -0
  321. package/dist/webhooks/http/webhooks.controller.d.ts +36 -0
  322. package/dist/webhooks/http/webhooks.controller.d.ts.map +1 -0
  323. package/dist/webhooks/http/webhooks.controller.js +243 -0
  324. package/dist/webhooks/http/webhooks.controller.js.map +1 -0
  325. package/dist/webhooks/index.d.ts +43 -0
  326. package/dist/webhooks/index.d.ts.map +1 -0
  327. package/dist/webhooks/index.js +147 -0
  328. package/dist/webhooks/index.js.map +1 -0
  329. package/dist/webhooks/listeners/webhook-event.listeners.d.ts +23 -0
  330. package/dist/webhooks/listeners/webhook-event.listeners.d.ts.map +1 -0
  331. package/dist/webhooks/listeners/webhook-event.listeners.js +120 -0
  332. package/dist/webhooks/listeners/webhook-event.listeners.js.map +1 -0
  333. package/dist/webhooks/notifications/webhook-notification.channel.d.ts +31 -0
  334. package/dist/webhooks/notifications/webhook-notification.channel.d.ts.map +1 -0
  335. package/dist/webhooks/notifications/webhook-notification.channel.js +127 -0
  336. package/dist/webhooks/notifications/webhook-notification.channel.js.map +1 -0
  337. package/dist/webhooks/notifications/webhook-notifications.d.ts +98 -0
  338. package/dist/webhooks/notifications/webhook-notifications.d.ts.map +1 -0
  339. package/dist/webhooks/notifications/webhook-notifications.js +150 -0
  340. package/dist/webhooks/notifications/webhook-notifications.js.map +1 -0
  341. package/dist/webhooks/ports.d.ts +29 -0
  342. package/dist/webhooks/ports.d.ts.map +1 -0
  343. package/dist/webhooks/ports.js +23 -0
  344. package/dist/webhooks/ports.js.map +1 -0
  345. package/dist/webhooks/registry/builtin-events.d.ts +57 -0
  346. package/dist/webhooks/registry/builtin-events.d.ts.map +1 -0
  347. package/dist/webhooks/registry/builtin-events.js +113 -0
  348. package/dist/webhooks/registry/builtin-events.js.map +1 -0
  349. package/dist/webhooks/registry/webhook-catalog.d.ts +63 -0
  350. package/dist/webhooks/registry/webhook-catalog.d.ts.map +1 -0
  351. package/dist/webhooks/registry/webhook-catalog.js +123 -0
  352. package/dist/webhooks/registry/webhook-catalog.js.map +1 -0
  353. package/dist/webhooks/registry/webhook-event.registry.d.ts +116 -0
  354. package/dist/webhooks/registry/webhook-event.registry.d.ts.map +1 -0
  355. package/dist/webhooks/registry/webhook-event.registry.js +152 -0
  356. package/dist/webhooks/registry/webhook-event.registry.js.map +1 -0
  357. package/dist/webhooks/signing.d.ts +31 -0
  358. package/dist/webhooks/signing.d.ts.map +1 -0
  359. package/dist/webhooks/signing.js +48 -0
  360. package/dist/webhooks/signing.js.map +1 -0
  361. package/dist/webhooks/tasks/webhook-purge.task.d.ts +17 -0
  362. package/dist/webhooks/tasks/webhook-purge.task.d.ts.map +1 -0
  363. package/dist/webhooks/tasks/webhook-purge.task.js +68 -0
  364. package/dist/webhooks/tasks/webhook-purge.task.js.map +1 -0
  365. package/dist/webhooks/testing/conformance.d.ts +61 -0
  366. package/dist/webhooks/testing/conformance.d.ts.map +1 -0
  367. package/dist/webhooks/testing/conformance.js +316 -0
  368. package/dist/webhooks/testing/conformance.js.map +1 -0
  369. package/dist/webhooks/testing/in-memory.d.ts +156 -0
  370. package/dist/webhooks/testing/in-memory.d.ts.map +1 -0
  371. package/dist/webhooks/testing/in-memory.js +323 -0
  372. package/dist/webhooks/testing/in-memory.js.map +1 -0
  373. package/dist/webhooks/testing/index.d.ts +7 -0
  374. package/dist/webhooks/testing/index.d.ts.map +1 -0
  375. package/dist/webhooks/testing/index.js +25 -0
  376. package/dist/webhooks/testing/index.js.map +1 -0
  377. package/dist/webhooks/testing/kit.d.ts +86 -0
  378. package/dist/webhooks/testing/kit.d.ts.map +1 -0
  379. package/dist/webhooks/testing/kit.js +113 -0
  380. package/dist/webhooks/testing/kit.js.map +1 -0
  381. package/dist/webhooks/webhook-endpoints.service.d.ts +142 -0
  382. package/dist/webhooks/webhook-endpoints.service.d.ts.map +1 -0
  383. package/dist/webhooks/webhook-endpoints.service.js +366 -0
  384. package/dist/webhooks/webhook-endpoints.service.js.map +1 -0
  385. package/dist/webhooks/webhook-envelope.d.ts +36 -0
  386. package/dist/webhooks/webhook-envelope.d.ts.map +1 -0
  387. package/dist/webhooks/webhook-envelope.js +46 -0
  388. package/dist/webhooks/webhook-envelope.js.map +1 -0
  389. package/dist/webhooks/webhook-secrets.service.d.ts +49 -0
  390. package/dist/webhooks/webhook-secrets.service.d.ts.map +1 -0
  391. package/dist/webhooks/webhook-secrets.service.js +118 -0
  392. package/dist/webhooks/webhook-secrets.service.js.map +1 -0
  393. package/dist/webhooks/webhook-views.d.ts +34 -0
  394. package/dist/webhooks/webhook-views.d.ts.map +1 -0
  395. package/dist/webhooks/webhook-views.js +83 -0
  396. package/dist/webhooks/webhook-views.js.map +1 -0
  397. package/dist/webhooks/webhooks.access.d.ts +28 -0
  398. package/dist/webhooks/webhooks.access.d.ts.map +1 -0
  399. package/dist/webhooks/webhooks.access.js +55 -0
  400. package/dist/webhooks/webhooks.access.js.map +1 -0
  401. package/dist/webhooks/webhooks.constants.d.ts +73 -0
  402. package/dist/webhooks/webhooks.constants.d.ts.map +1 -0
  403. package/dist/webhooks/webhooks.constants.js +100 -0
  404. package/dist/webhooks/webhooks.constants.js.map +1 -0
  405. package/dist/webhooks/webhooks.credentials.d.ts +28 -0
  406. package/dist/webhooks/webhooks.credentials.d.ts.map +1 -0
  407. package/dist/webhooks/webhooks.credentials.js +51 -0
  408. package/dist/webhooks/webhooks.credentials.js.map +1 -0
  409. package/dist/webhooks/webhooks.errors.d.ts +25 -0
  410. package/dist/webhooks/webhooks.errors.d.ts.map +1 -0
  411. package/dist/webhooks/webhooks.errors.js +65 -0
  412. package/dist/webhooks/webhooks.errors.js.map +1 -0
  413. package/dist/webhooks/webhooks.metrics.d.ts +24 -0
  414. package/dist/webhooks/webhooks.metrics.d.ts.map +1 -0
  415. package/dist/webhooks/webhooks.metrics.js +70 -0
  416. package/dist/webhooks/webhooks.metrics.js.map +1 -0
  417. package/dist/webhooks/webhooks.module.d.ts +29 -0
  418. package/dist/webhooks/webhooks.module.d.ts.map +1 -0
  419. package/dist/webhooks/webhooks.module.js +108 -0
  420. package/dist/webhooks/webhooks.module.js.map +1 -0
  421. package/dist/webhooks/webhooks.options.d.ts +119 -0
  422. package/dist/webhooks/webhooks.options.d.ts.map +1 -0
  423. package/dist/webhooks/webhooks.options.js +80 -0
  424. package/dist/webhooks/webhooks.options.js.map +1 -0
  425. package/dist/webhooks/webhooks.permissions.d.ts +47 -0
  426. package/dist/webhooks/webhooks.permissions.d.ts.map +1 -0
  427. package/dist/webhooks/webhooks.permissions.js +83 -0
  428. package/dist/webhooks/webhooks.permissions.js.map +1 -0
  429. package/dist/webhooks/webhooks.repository.d.ts +162 -0
  430. package/dist/webhooks/webhooks.repository.d.ts.map +1 -0
  431. package/dist/webhooks/webhooks.repository.js +246 -0
  432. package/dist/webhooks/webhooks.repository.js.map +1 -0
  433. package/dist/webhooks/webhooks.service.d.ts +91 -0
  434. package/dist/webhooks/webhooks.service.d.ts.map +1 -0
  435. package/dist/webhooks/webhooks.service.js +216 -0
  436. package/dist/webhooks/webhooks.service.js.map +1 -0
  437. package/package.json +19 -3
@@ -0,0 +1,332 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // `webhooks.deliver`: one delivery attempt (issue #1046)
4
+ // =============================================================================
5
+ //
6
+ // The ONLY place the slice makes an outbound HTTP request. One job is one
7
+ // attempt of one delivery; a failed attempt that has retries left enqueues the
8
+ // next attempt's job itself (scheduled for the backoff time), in the same
9
+ // transaction as the delivery row's update, so the retry schedule is the
10
+ // slice's (30s, 2m, 10m, 30m, 1h, 2h, 4h, 6h, 6h; jittered; `Retry-After`
11
+ // honoured up to 24h) and not the queue's generic one. A job that throws (the
12
+ // database) is retried by the queue as usual.
13
+ //
14
+ // PER ATTEMPT:
15
+ // 1. load the delivery and its endpoint (`runInOrg` for an organization's
16
+ // rows, the bypass client with reason `webhooks` for a system endpoint);
17
+ // a gone delivery ends the job quietly, a disabled or gone endpoint
18
+ // settles the delivery `dead`;
19
+ // 2. read the signing secret(s) from the credentials store;
20
+ // 3. run the egress guard (resolve EVERY address, refuse any non-public one,
21
+ // pin the checked address for the connection): a refusal is `ssrf_blocked`
22
+ // and final;
23
+ // 4. POST the stored body, signed (two signatures during a rotation overlap),
24
+ // 10 s deadline, no redirects, 1 KiB of the answer kept;
25
+ // 5. settle: 2xx succeeded; 410 switches the endpoint off at once; anything
26
+ // else is a failed attempt (retry while attempts remain, else `dead`) that
27
+ // counts toward the endpoint's circuit breaker; at the threshold the
28
+ // endpoint is switched off and its owner is notified (after the commit).
29
+ //
30
+ // SERVER-ONLY: the job needs the signing secret, so it declares neither
31
+ // `nodeResultSchema` nor `persistNodeResult`, and no secret is ever brokered to a
32
+ // node. Nothing secret or URL-shaped is logged: a log line carries the delivery
33
+ // id, the host, the status and a code.
34
+ // =============================================================================
35
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
36
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
37
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
39
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
40
+ };
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ var WebhookDeliverHandler_1;
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.WEBHOOK_REQUEST_HEADER_NAMES = exports.WebhookDeliverHandler = void 0;
50
+ exports.retryDelayMs = retryDelayMs;
51
+ exports.parseRetryAfter = parseRetryAfter;
52
+ const common_1 = require("@nestjs/common");
53
+ const api_1 = require("@opentelemetry/api");
54
+ const webhooks_1 = require("@marinoscar/platform-contract/webhooks");
55
+ const index_1 = require("../../jobs/index");
56
+ const index_2 = require("../../notifications/index");
57
+ const index_3 = require("../../otel-core/index");
58
+ const egress_guard_1 = require("../egress/egress-guard");
59
+ const transport_1 = require("../egress/transport");
60
+ const builtin_events_1 = require("../registry/builtin-events");
61
+ const signing_1 = require("../signing");
62
+ const webhook_envelope_1 = require("../webhook-envelope");
63
+ const webhook_secrets_service_1 = require("../webhook-secrets.service");
64
+ const webhooks_constants_1 = require("../webhooks.constants");
65
+ const webhooks_metrics_1 = require("../webhooks.metrics");
66
+ const webhooks_options_1 = require("../webhooks.options");
67
+ const webhooks_repository_1 = require("../webhooks.repository");
68
+ /**
69
+ * The delay before the retry that follows failed attempt number `attempt`.
70
+ *
71
+ * @param attempt - the attempt that just failed (1-based).
72
+ * @param retryAfterMs - the receiver's `Retry-After`, when it sent one.
73
+ * @param rand - a random source in [0, 1), for tests.
74
+ * @returns milliseconds: the schedule entry with half-range jitter, never less than `Retry-After` (capped at 24 h).
75
+ *
76
+ * @stability experimental
77
+ */
78
+ function retryDelayMs(attempt, retryAfterMs = null, rand = Math.random) {
79
+ const index = Math.min(Math.max(1, Math.floor(attempt)), webhooks_constants_1.WEBHOOK_RETRY_SCHEDULE_MS.length) - 1;
80
+ const base = webhooks_constants_1.WEBHOOK_RETRY_SCHEDULE_MS[index];
81
+ const jittered = base / 2 + rand() * (base / 2);
82
+ const floor = retryAfterMs === null ? 0 : Math.min(retryAfterMs, webhooks_constants_1.WEBHOOK_RETRY_AFTER_CAP_MS);
83
+ return Math.round(Math.max(floor, jittered));
84
+ }
85
+ /**
86
+ * Parses a `Retry-After` header: delta-seconds or an HTTP date.
87
+ *
88
+ * @param value - the raw header.
89
+ * @param now - the current time in ms.
90
+ * @returns milliseconds to wait, or `null` when absent or malformed.
91
+ *
92
+ * @stability experimental
93
+ */
94
+ function parseRetryAfter(value, now = Date.now()) {
95
+ if (value === null)
96
+ return null;
97
+ const trimmed = value.trim();
98
+ if (/^\d+$/.test(trimmed))
99
+ return Number(trimmed) * 1000;
100
+ const at = Date.parse(trimmed);
101
+ return Number.isNaN(at) ? null : Math.max(0, at - now);
102
+ }
103
+ /**
104
+ * The `webhooks.deliver` job. See the file header.
105
+ *
106
+ * @stability experimental
107
+ */
108
+ let WebhookDeliverHandler = WebhookDeliverHandler_1 = class WebhookDeliverHandler {
109
+ registry;
110
+ repository;
111
+ secrets;
112
+ options;
113
+ transport;
114
+ resolver;
115
+ notifications;
116
+ metrics;
117
+ logger = new common_1.Logger(WebhookDeliverHandler_1.name);
118
+ /** PERMANENT once jobs of this type exist. */
119
+ type = webhooks_constants_1.WEBHOOK_DELIVER_JOB_TYPE;
120
+ /** Its name in the jobs console. */
121
+ label = 'Webhook delivery';
122
+ /** 30 s per run (the request has 10 s); a failed attempt schedules its own retry, so the queue's attempts only cover infrastructure failures. */
123
+ profile = { maxRuntimeMs: 30_000, maxAttempts: 10 };
124
+ /** Overridable clock, for tests. */
125
+ now = () => new Date();
126
+ /** Overridable random source, for tests. */
127
+ rand = Math.random;
128
+ constructor(registry, repository, secrets, options, transport, resolver, notifications, metrics) {
129
+ this.registry = registry;
130
+ this.repository = repository;
131
+ this.secrets = secrets;
132
+ this.options = options;
133
+ this.transport = transport;
134
+ this.resolver = resolver;
135
+ this.notifications = notifications;
136
+ this.metrics = metrics;
137
+ }
138
+ /** Registers the handler with the job registry. */
139
+ onModuleInit() {
140
+ this.registry.register(this);
141
+ }
142
+ /**
143
+ * Runs one attempt.
144
+ *
145
+ * @param job - the claimed job; `subjectId` is the delivery id and `orgId` its organization (`null`: a system endpoint).
146
+ */
147
+ async process(job) {
148
+ const deliveryId = job.subjectId;
149
+ if (!deliveryId)
150
+ throw new Error(`Job ${job.id} names no delivery`);
151
+ const orgId = job.orgId ?? null;
152
+ const loaded = await this.repository.loadDeliveryForJob(orgId, deliveryId);
153
+ if (!loaded) {
154
+ this.logger.debug(`Delivery ${deliveryId} no longer exists; nothing to do`);
155
+ return;
156
+ }
157
+ const { delivery, endpoint } = loaded;
158
+ if (delivery.status === 'succeeded')
159
+ return;
160
+ const isPing = delivery.eventKey === builtin_events_1.WEBHOOK_PING_EVENT_KEY;
161
+ if (!endpoint || (!endpoint.enabled && !isPing)) {
162
+ await this.repository.settleAttempt(orgId, deliveryId, delivery.endpointId, {
163
+ delivery: { status: 'dead', errorCode: endpoint ? 'endpoint_disabled' : 'endpoint_gone', nextAttemptAt: null },
164
+ endpoint: 'neutral',
165
+ threshold: this.options.circuitBreakerThreshold,
166
+ });
167
+ this.count('dead', delivery.eventKey, 0);
168
+ return;
169
+ }
170
+ const marked = await this.repository.markDelivering(orgId, deliveryId);
171
+ const attempt = marked.attempt;
172
+ const span = api_1.trace.getTracer('webhooks').startSpan('webhooks.deliver', {
173
+ attributes: { 'webhook.endpoint.id': endpoint.id, 'webhook.event.type': delivery.eventKey, 'webhook.attempt': attempt },
174
+ });
175
+ const started = Date.now();
176
+ try {
177
+ const outcome = await this.attempt(endpoint, delivery.eventId, delivery.payload, attempt, span);
178
+ const durationMs = Date.now() - started;
179
+ const settled = await this.repository.settleAttempt(orgId, deliveryId, endpoint.id, { ...outcome.settle, delivery: { ...outcome.settle.delivery, durationMs } });
180
+ this.count(outcome.metric, delivery.eventKey, durationMs);
181
+ this.logger.log(`Webhook delivery ${deliveryId} attempt ${attempt}: ${outcome.metric}` +
182
+ `${outcome.status ? ` (HTTP ${outcome.status})` : ''}${outcome.code ? ` [${outcome.code}]` : ''} -> ${(0, egress_guard_1.hostForLog)(endpoint.url)}`);
183
+ if (settled.disabled && settled.endpoint)
184
+ await this.tellOwner(settled.endpoint, outcome.settle.disableNow ?? webhooks_constants_1.WEBHOOK_DISABLED_REASONS.CIRCUIT_OPEN);
185
+ }
186
+ catch (error) {
187
+ span.setStatus({ code: api_1.SpanStatusCode.ERROR });
188
+ throw error;
189
+ }
190
+ finally {
191
+ span.end();
192
+ }
193
+ }
194
+ async attempt(endpoint, eventId, payload, attempt, span) {
195
+ const threshold = this.options.circuitBreakerThreshold;
196
+ const dead = (code, metric = 'dead', disableNow) => ({
197
+ settle: { delivery: { status: 'dead', attempt, errorCode: code, nextAttemptAt: null }, endpoint: 'failure', threshold, ...(disableNow ? { disableNow } : {}) },
198
+ metric,
199
+ code,
200
+ });
201
+ const secrets = await this.signingSecrets(endpoint);
202
+ if (secrets.length === 0)
203
+ return dead('secret_missing');
204
+ let target;
205
+ try {
206
+ target = await (0, egress_guard_1.resolveWebhookTarget)(endpoint.url, this.policy(), this.resolver);
207
+ }
208
+ catch (error) {
209
+ if (error instanceof egress_guard_1.WebhookEgressError && error.code !== 'unresolvable')
210
+ return dead('ssrf_blocked', 'blocked');
211
+ return this.failed(attempt, 'network', null, null, null, null);
212
+ }
213
+ const body = JSON.stringify(payload);
214
+ const timestamp = Math.floor(this.now().getTime() / 1000);
215
+ const headers = await (0, signing_1.signedHeaders)({
216
+ id: eventId,
217
+ timestamp,
218
+ body,
219
+ secrets,
220
+ userAgent: `${this.options.appName()}-Webhooks/1.0`,
221
+ });
222
+ let response;
223
+ try {
224
+ response = await this.transport.send({ target, headers, body, timeoutMs: this.options.requestTimeoutMs });
225
+ }
226
+ catch (error) {
227
+ const code = error instanceof transport_1.WebhookTransportError ? error.code : 'network';
228
+ return this.failed(attempt, code, null, null, null, null);
229
+ }
230
+ span.setAttribute('http.response.status_code', response.status);
231
+ if (response.status >= 200 && response.status < 300) {
232
+ return {
233
+ settle: {
234
+ delivery: { status: 'succeeded', attempt, responseStatus: response.status, responseSnippet: response.snippet, errorCode: null, deliveredAt: this.now(), nextAttemptAt: null },
235
+ endpoint: 'success',
236
+ threshold,
237
+ },
238
+ metric: 'succeeded',
239
+ status: response.status,
240
+ };
241
+ }
242
+ if (response.status === 410) {
243
+ return {
244
+ settle: {
245
+ delivery: { status: 'dead', attempt, responseStatus: response.status, responseSnippet: response.snippet, errorCode: 'http_410', nextAttemptAt: null },
246
+ endpoint: 'failure',
247
+ threshold,
248
+ disableNow: webhooks_constants_1.WEBHOOK_DISABLED_REASONS.GONE,
249
+ },
250
+ metric: 'dead',
251
+ status: response.status,
252
+ code: 'http_410',
253
+ };
254
+ }
255
+ const code = response.status >= 500 ? 'http_5xx' : response.status >= 400 ? 'http_4xx' : 'http_3xx';
256
+ return this.failed(attempt, code, response.status, response.snippet, parseRetryAfter(response.retryAfter, this.now().getTime()), response.status);
257
+ }
258
+ failed(attempt, code, responseStatus, snippet, retryAfterMs, status) {
259
+ const exhausted = attempt >= this.options.maxDeliveryAttempts;
260
+ const delay = retryDelayMs(attempt, retryAfterMs, this.rand);
261
+ const retryAt = new Date(this.now().getTime() + delay);
262
+ return {
263
+ settle: {
264
+ delivery: {
265
+ status: exhausted ? 'dead' : 'failed',
266
+ attempt,
267
+ responseStatus,
268
+ responseSnippet: snippet,
269
+ errorCode: code,
270
+ nextAttemptAt: exhausted ? null : retryAt,
271
+ },
272
+ endpoint: 'failure',
273
+ threshold: this.options.circuitBreakerThreshold,
274
+ ...(exhausted ? {} : { retryAt }),
275
+ },
276
+ metric: exhausted ? 'dead' : 'failed',
277
+ ...(status !== null ? { status } : {}),
278
+ code,
279
+ };
280
+ }
281
+ /** The current secret first, then the previous one while the rotation overlap lasts. */
282
+ async signingSecrets(endpoint) {
283
+ const secrets = [];
284
+ const current = await this.secrets.get(endpoint, endpoint.secretVersion);
285
+ if (current)
286
+ secrets.push(current);
287
+ const overlap = endpoint.previousSecretUntil && endpoint.previousSecretUntil.getTime() > this.now().getTime();
288
+ if (overlap && endpoint.secretVersion > 1) {
289
+ const previous = await this.secrets.get(endpoint, endpoint.secretVersion - 1);
290
+ if (previous)
291
+ secrets.push(previous);
292
+ }
293
+ return secrets;
294
+ }
295
+ policy() {
296
+ return { allowInsecureHttp: this.options.allowInsecureHttp, allowPrivateTargets: this.options.allowPrivateTargets, allowedHosts: this.options.allowedHosts };
297
+ }
298
+ count(outcome, eventKey, durationMs) {
299
+ const attributes = { outcome, event_group: (0, webhook_envelope_1.eventGroupOf)(eventKey) };
300
+ this.metrics?.add(webhooks_metrics_1.WEBHOOK_DELIVERIES_METRIC, 1, attributes);
301
+ if (durationMs > 0)
302
+ this.metrics?.record(webhooks_metrics_1.WEBHOOK_DELIVERY_DURATION_METRIC, durationMs / 1000, attributes);
303
+ }
304
+ /** After the commit, outside any transaction. */
305
+ async tellOwner(endpoint, reason) {
306
+ const ownerId = endpoint.ownerUserId ?? endpoint.createdById;
307
+ if (!ownerId || !this.notifications)
308
+ return;
309
+ try {
310
+ await this.notifications.notifyNow(webhooks_constants_1.WEBHOOK_ENDPOINT_DISABLED_EVENT_KEY, ownerId, { endpointId: endpoint.id, endpointName: endpoint.name, scope: endpoint.scope, reason, host: (0, egress_guard_1.hostForLog)(endpoint.url) }, endpoint.orgId ? { orgId: endpoint.orgId } : undefined);
311
+ }
312
+ catch (error) {
313
+ this.logger.warn(`Could not notify the owner of webhook endpoint ${endpoint.id}: ${error instanceof Error ? error.message : String(error)}`);
314
+ }
315
+ }
316
+ };
317
+ exports.WebhookDeliverHandler = WebhookDeliverHandler;
318
+ exports.WebhookDeliverHandler = WebhookDeliverHandler = WebhookDeliverHandler_1 = __decorate([
319
+ (0, common_1.Injectable)(),
320
+ __param(3, (0, common_1.Inject)(webhooks_options_1.WEBHOOKS_OPTIONS)),
321
+ __param(4, (0, common_1.Inject)(transport_1.WEBHOOKS_TRANSPORT)),
322
+ __param(5, (0, common_1.Inject)(transport_1.WEBHOOKS_RESOLVER)),
323
+ __param(6, (0, common_1.Optional)()),
324
+ __param(7, (0, common_1.Optional)()),
325
+ __metadata("design:paramtypes", [index_1.JobHandlerRegistry,
326
+ webhooks_repository_1.WebhooksRepository,
327
+ webhook_secrets_service_1.WebhookSecrets, Object, Object, Object, index_2.NotificationsService,
328
+ index_3.MetricsHostService])
329
+ ], WebhookDeliverHandler);
330
+ /** The `webhook-*` header names a delivery carries, for the docs and the testing entry. @stability experimental */
331
+ exports.WEBHOOK_REQUEST_HEADER_NAMES = Object.freeze([webhooks_1.WEBHOOK_HEADERS.ID, webhooks_1.WEBHOOK_HEADERS.TIMESTAMP, webhooks_1.WEBHOOK_HEADERS.SIGNATURE, 'content-type', 'user-agent']);
332
+ //# sourceMappingURL=webhook-deliver.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-deliver.handler.js","sourceRoot":"","sources":["../../../src/webhooks/handlers/webhook-deliver.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { JobHandlerRegistry, type Job, type JobExecutionProfile, type JobHandler } from '../../jobs/index';
3
+ import { WebhooksService } from '../webhooks.service';
4
+ /**
5
+ * The `webhooks.fanout` job. See the file header.
6
+ *
7
+ * @stability experimental
8
+ */
9
+ export declare class WebhookFanoutHandler implements JobHandler, OnModuleInit {
10
+ private readonly registry;
11
+ private readonly webhooks;
12
+ /** PERMANENT once jobs of this type exist. */
13
+ readonly type = "webhooks.fanout";
14
+ /** Its name in the jobs console. */
15
+ readonly label = "Webhook fan-out";
16
+ /** Reads a few rows and inserts a few; a minute and three attempts. */
17
+ readonly profile: JobExecutionProfile;
18
+ constructor(registry: JobHandlerRegistry, webhooks: WebhooksService);
19
+ /** Registers the handler with the job registry. */
20
+ onModuleInit(): void;
21
+ /**
22
+ * Emits the event the job carries.
23
+ *
24
+ * @param job - the claimed job; its payload is a {@link WebhookFanoutPayload}.
25
+ */
26
+ process(job: Job): Promise<void>;
27
+ }
28
+ //# sourceMappingURL=webhook-fanout.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-fanout.handler.d.ts","sourceRoot":"","sources":["../../../src/webhooks/handlers/webhook-fanout.handler.ts"],"names":[],"mappings":"AAYA,OAAO,EAAc,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,KAAK,GAAG,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3G,OAAO,EAAE,eAAe,EAA6B,MAAM,qBAAqB,CAAC;AAEjF;;;;GAIG;AACH,qBACa,oBAAqB,YAAW,UAAU,EAAE,YAAY;IAWjE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX3B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,qBAA2B;IAExC,oCAAoC;IACpC,QAAQ,CAAC,KAAK,qBAAqB;IAEnC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAA4C;gBAG9D,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,eAAe;IAG5C,mDAAmD;IACnD,YAAY,IAAI,IAAI;IAIpB;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAUvC"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // `webhooks.fanout`: the fan-out of one emitted event (issue #1046)
4
+ // =============================================================================
5
+ //
6
+ // The domain-event listeners (node offline, node event, permanent job failure)
7
+ // only ENQUEUE this job, so no listener body does fan-out work inline
8
+ // (`on-event-no-io`). The handler replays the event through
9
+ // `WebhooksService.emit` under the event id the listener chose, so a retried
10
+ // job inserts no second delivery (`(endpointId, eventId)` is unique).
11
+ // Server-only: it reads other people's endpoints and their owners' roles.
12
+ // =============================================================================
13
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
14
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
18
+ };
19
+ var __metadata = (this && this.__metadata) || function (k, v) {
20
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.WebhookFanoutHandler = void 0;
24
+ const common_1 = require("@nestjs/common");
25
+ const index_1 = require("../../jobs/index");
26
+ const webhooks_constants_1 = require("../webhooks.constants");
27
+ const webhooks_service_1 = require("../webhooks.service");
28
+ /**
29
+ * The `webhooks.fanout` job. See the file header.
30
+ *
31
+ * @stability experimental
32
+ */
33
+ let WebhookFanoutHandler = class WebhookFanoutHandler {
34
+ registry;
35
+ webhooks;
36
+ /** PERMANENT once jobs of this type exist. */
37
+ type = webhooks_constants_1.WEBHOOK_FANOUT_JOB_TYPE;
38
+ /** Its name in the jobs console. */
39
+ label = 'Webhook fan-out';
40
+ /** Reads a few rows and inserts a few; a minute and three attempts. */
41
+ profile = { maxRuntimeMs: 60_000, maxAttempts: 3 };
42
+ constructor(registry, webhooks) {
43
+ this.registry = registry;
44
+ this.webhooks = webhooks;
45
+ }
46
+ /** Registers the handler with the job registry. */
47
+ onModuleInit() {
48
+ this.registry.register(this);
49
+ }
50
+ /**
51
+ * Emits the event the job carries.
52
+ *
53
+ * @param job - the claimed job; its payload is a {@link WebhookFanoutPayload}.
54
+ */
55
+ async process(job) {
56
+ const payload = job.payload;
57
+ if (!payload || typeof payload.eventKey !== 'string')
58
+ throw new Error(`Job ${job.id} carries no webhook event`);
59
+ await this.webhooks.emit(payload.eventKey, payload.data, {
60
+ orgId: payload.orgId ?? job.orgId ?? null,
61
+ ...(payload.userId ? { userId: payload.userId } : {}),
62
+ eventId: payload.eventId,
63
+ occurredAt: new Date(payload.occurredAt),
64
+ });
65
+ }
66
+ };
67
+ exports.WebhookFanoutHandler = WebhookFanoutHandler;
68
+ exports.WebhookFanoutHandler = WebhookFanoutHandler = __decorate([
69
+ (0, common_1.Injectable)(),
70
+ __metadata("design:paramtypes", [index_1.JobHandlerRegistry,
71
+ webhooks_service_1.WebhooksService])
72
+ ], WebhookFanoutHandler);
73
+ //# sourceMappingURL=webhook-fanout.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-fanout.handler.js","sourceRoot":"","sources":["../../../src/webhooks/handlers/webhook-fanout.handler.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oEAAoE;AACpE,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,sEAAsE;AACtE,4DAA4D;AAC5D,6EAA6E;AAC7E,sEAAsE;AACtE,0EAA0E;AAC1E,gFAAgF;;;;;;;;;;;;AAEhF,2CAA0D;AAE1D,4CAA2G;AAC3G,8DAAgE;AAChE,0DAAiF;AAEjF;;;;GAIG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAWZ;IACA;IAXnB,8CAA8C;IACrC,IAAI,GAAG,4CAAuB,CAAC;IAExC,oCAAoC;IAC3B,KAAK,GAAG,iBAAiB,CAAC;IAEnC,uEAAuE;IAC9D,OAAO,GAAwB,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAEjF,YACmB,QAA4B,EAC5B,QAAyB;QADzB,aAAQ,GAAR,QAAQ,CAAoB;QAC5B,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEJ,mDAAmD;IACnD,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,GAAQ;QACpB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAiD,CAAC;QACtE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAChH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE;YACvD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI;YACzC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SACzC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnCY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAYkB,0BAAkB;QAClB,kCAAe;GAZjC,oBAAoB,CAmChC"}
@@ -0,0 +1,33 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { JobHandlerRegistry, type Job, type JobExecutionProfile, type JobHandler } from '../../jobs/index';
3
+ import { type ResolvedWebhooksModuleOptions } from '../webhooks.options';
4
+ import { WebhooksRepository } from '../webhooks.repository';
5
+ /**
6
+ * The `webhooks.deliveries_purge` job. See the file header.
7
+ *
8
+ * @stability experimental
9
+ */
10
+ export declare class WebhookPurgeHandler implements JobHandler, OnModuleInit {
11
+ private readonly registry;
12
+ private readonly repository;
13
+ private readonly options;
14
+ private readonly logger;
15
+ /** PERMANENT once jobs of this type exist. */
16
+ readonly type = "webhooks.deliveries_purge";
17
+ /** Its name in the jobs console. */
18
+ readonly label = "Webhook delivery purge";
19
+ /** Deletes only; thirty minutes, three attempts. */
20
+ readonly profile: JobExecutionProfile;
21
+ /** Overridable clock, for tests. */
22
+ now: () => Date;
23
+ constructor(registry: JobHandlerRegistry, repository: WebhooksRepository, options: ResolvedWebhooksModuleOptions);
24
+ /** Registers the handler with the job registry. */
25
+ onModuleInit(): void;
26
+ /**
27
+ * Runs the purge.
28
+ *
29
+ * @param job - the claimed job.
30
+ */
31
+ process(job: Job): Promise<void>;
32
+ }
33
+ //# sourceMappingURL=webhook-purge.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-purge.handler.d.ts","sourceRoot":"","sources":["../../../src/webhooks/handlers/webhook-purge.handler.ts"],"names":[],"mappings":"AAWA,OAAO,EAA8B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,KAAK,GAAG,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3G,OAAO,EAAoB,KAAK,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;;GAIG;AACH,qBACa,mBAAoB,YAAW,UAAU,EAAE,YAAY;IAgBhE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IACD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjBpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAE/D,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,+BAA0B;IAEvC,oCAAoC;IACpC,QAAQ,CAAC,KAAK,4BAA4B;IAE1C,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAiD;IAEtF,oCAAoC;IACpC,GAAG,EAAE,MAAM,IAAI,CAAoB;gBAGhB,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE,kBAAkB,EACJ,OAAO,EAAE,6BAA6B;IAGnF,mDAAmD;IACnD,YAAY,IAAI,IAAI;IAIpB;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAKvC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ // =============================================================================
3
+ // `webhooks.deliveries_purge`: the delivery retention (issue #1046)
4
+ // =============================================================================
5
+ //
6
+ // Deletes delivery rows older than `deliveryRetentionDays`, oldest first, in
7
+ // batches, across every organization (the bypass client, reason `retention`).
8
+ // Queued once a day by `WebhookPurgeTask`, which only enqueues. Idempotent: a
9
+ // run that stops early leaves the rest to the next. Server-only: it deletes
10
+ // across tenants.
11
+ // =============================================================================
12
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
13
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
17
+ };
18
+ var __metadata = (this && this.__metadata) || function (k, v) {
19
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
20
+ };
21
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
22
+ return function (target, key) { decorator(target, key, paramIndex); }
23
+ };
24
+ var WebhookPurgeHandler_1;
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.WebhookPurgeHandler = void 0;
27
+ const common_1 = require("@nestjs/common");
28
+ const index_1 = require("../../jobs/index");
29
+ const webhooks_constants_1 = require("../webhooks.constants");
30
+ const webhooks_options_1 = require("../webhooks.options");
31
+ const webhooks_repository_1 = require("../webhooks.repository");
32
+ /**
33
+ * The `webhooks.deliveries_purge` job. See the file header.
34
+ *
35
+ * @stability experimental
36
+ */
37
+ let WebhookPurgeHandler = WebhookPurgeHandler_1 = class WebhookPurgeHandler {
38
+ registry;
39
+ repository;
40
+ options;
41
+ logger = new common_1.Logger(WebhookPurgeHandler_1.name);
42
+ /** PERMANENT once jobs of this type exist. */
43
+ type = webhooks_constants_1.WEBHOOK_PURGE_JOB_TYPE;
44
+ /** Its name in the jobs console. */
45
+ label = 'Webhook delivery purge';
46
+ /** Deletes only; thirty minutes, three attempts. */
47
+ profile = { maxRuntimeMs: 30 * 60_000, maxAttempts: 3 };
48
+ /** Overridable clock, for tests. */
49
+ now = () => new Date();
50
+ constructor(registry, repository, options) {
51
+ this.registry = registry;
52
+ this.repository = repository;
53
+ this.options = options;
54
+ }
55
+ /** Registers the handler with the job registry. */
56
+ onModuleInit() {
57
+ this.registry.register(this);
58
+ }
59
+ /**
60
+ * Runs the purge.
61
+ *
62
+ * @param job - the claimed job.
63
+ */
64
+ async process(job) {
65
+ const cutoff = new Date(this.now().getTime() - this.options.deliveryRetentionDays * 24 * 3_600_000);
66
+ const deleted = await this.repository.purgeDeliveriesBefore(cutoff);
67
+ this.logger.log(`Webhook delivery purge removed ${deleted} row(s) created before ${cutoff.toISOString()} (job ${job.id})`);
68
+ }
69
+ };
70
+ exports.WebhookPurgeHandler = WebhookPurgeHandler;
71
+ exports.WebhookPurgeHandler = WebhookPurgeHandler = WebhookPurgeHandler_1 = __decorate([
72
+ (0, common_1.Injectable)(),
73
+ __param(2, (0, common_1.Inject)(webhooks_options_1.WEBHOOKS_OPTIONS)),
74
+ __metadata("design:paramtypes", [index_1.JobHandlerRegistry,
75
+ webhooks_repository_1.WebhooksRepository, Object])
76
+ ], WebhookPurgeHandler);
77
+ //# sourceMappingURL=webhook-purge.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-purge.handler.js","sourceRoot":"","sources":["../../../src/webhooks/handlers/webhook-purge.handler.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oEAAoE;AACpE,gFAAgF;AAChF,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,kBAAkB;AAClB,gFAAgF;;;;;;;;;;;;;;;;AAEhF,2CAA0E;AAE1E,4CAA2G;AAC3G,8DAA+D;AAC/D,0DAA2F;AAC3F,gEAA4D;AAE5D;;;;GAIG;AAEI,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAgBX;IACA;IAC0B;IAjB5B,MAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IAE/D,8CAA8C;IACrC,IAAI,GAAG,2CAAsB,CAAC;IAEvC,oCAAoC;IAC3B,KAAK,GAAG,wBAAwB,CAAC;IAE1C,oDAAoD;IAC3C,OAAO,GAAwB,EAAE,YAAY,EAAE,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAEtF,oCAAoC;IACpC,GAAG,GAAe,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;IAEnC,YACmB,QAA4B,EAC5B,UAA8B,EACJ,OAAsC;QAFhE,aAAQ,GAAR,QAAQ,CAAoB;QAC5B,eAAU,GAAV,UAAU,CAAoB;QACJ,YAAO,GAAP,OAAO,CAA+B;IAChF,CAAC;IAEJ,mDAAmD;IACnD,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,GAAQ;QACpB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QACpG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kCAAkC,OAAO,0BAA0B,MAAM,CAAC,WAAW,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7H,CAAC;CACF,CAAA;AApCY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;IAmBR,WAAA,IAAA,eAAM,EAAC,mCAAgB,CAAC,CAAA;qCAFE,0BAAkB;QAChB,wCAAkB;GAjBtC,mBAAmB,CAoC/B"}
@@ -0,0 +1,36 @@
1
+ import { type RotateWebhookSecretResponse, type WebhookDeliveryDetail, type WebhookDeliveryList, type WebhookEndpoint, type WebhookEndpointCreated, type WebhookEndpointList, type WebhookEventCatalog, type WebhookTestResponse } from '@marinoscar/platform-contract/webhooks';
2
+ import type { Principal } from '../../core/index';
3
+ import { WebhookEndpointsService } from '../webhook-endpoints.service';
4
+ import { CreateWebhookEndpointDto, UpdateWebhookEndpointDto, WebhookDeliveryListQueryDto } from './webhook.dto';
5
+ /**
6
+ * The deployment-scope webhook routes. See the file header.
7
+ *
8
+ * @stability experimental
9
+ */
10
+ export declare class AdminWebhooksController {
11
+ private readonly endpoints;
12
+ constructor(endpoints: WebhookEndpointsService);
13
+ /** The events the caller may subscribe to. */
14
+ events(principal: Principal | undefined): WebhookEventCatalog;
15
+ /** One delivery, with its payload. */
16
+ getDelivery(principal: Principal | undefined, deliveryId: string): Promise<WebhookDeliveryDetail>;
17
+ /** Sends a delivery again. */
18
+ redeliver(principal: Principal | undefined, deliveryId: string): Promise<WebhookDeliveryDetail>;
19
+ /** The caller's endpoints. */
20
+ list(principal: Principal | undefined): Promise<WebhookEndpointList>;
21
+ /** Creates an endpoint. */
22
+ create(principal: Principal | undefined, body: CreateWebhookEndpointDto): Promise<WebhookEndpointCreated>;
23
+ /** One endpoint. */
24
+ get(principal: Principal | undefined, id: string): Promise<WebhookEndpoint>;
25
+ /** Changes an endpoint. */
26
+ update(principal: Principal | undefined, id: string, body: UpdateWebhookEndpointDto): Promise<WebhookEndpoint>;
27
+ /** Deletes an endpoint. */
28
+ remove(principal: Principal | undefined, id: string): Promise<void>;
29
+ /** Rotates the signing secret. */
30
+ rotate(principal: Principal | undefined, id: string): Promise<RotateWebhookSecretResponse>;
31
+ /** Queues a test ping. */
32
+ test(principal: Principal | undefined, id: string): Promise<WebhookTestResponse>;
33
+ /** An endpoint's deliveries. */
34
+ deliveries(principal: Principal | undefined, id: string, query: WebhookDeliveryListQueryDto): Promise<WebhookDeliveryList>;
35
+ }
36
+ //# sourceMappingURL=admin-webhooks.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-webhooks.controller.d.ts","sourceRoot":"","sources":["../../../src/webhooks/http/admin-webhooks.controller.ts"],"names":[],"mappings":"AAoBA,OAAO,EAGL,KAAK,2BAA2B,EAEhC,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAExB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,wCAAwC,CAAC;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EACL,wBAAwB,EAExB,wBAAwB,EAGxB,2BAA2B,EAM5B,MAAM,eAAe,CAAC;AAKvB;;;;GAIG;AACH,qBAEa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,uBAAuB;IAE/D,8CAA8C;IAK9C,MAAM,CAAqB,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,mBAAmB;IAIjF,sCAAsC;IAOtC,WAAW,CAAqB,SAAS,EAAE,SAAS,GAAG,SAAS,EAAsC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIzJ,8BAA8B;IAS9B,SAAS,CAAqB,SAAS,EAAE,SAAS,GAAG,SAAS,EAAsC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIvJ,8BAA8B;IAKxB,IAAI,CAAqB,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI9F,2BAA2B;IAO3B,MAAM,CAAqB,SAAS,EAAE,SAAS,GAAG,SAAS,EAAU,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIrI,oBAAoB;IAOpB,GAAG,CAAqB,SAAS,EAAE,SAAS,GAAG,SAAS,EAA8B,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAI3H,2BAA2B;IAS3B,MAAM,CAAqB,SAAS,EAAE,SAAS,GAAG,SAAS,EAA8B,EAAE,EAAE,MAAM,EAAU,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,eAAe,CAAC;IAItK,2BAA2B;IAQ3B,MAAM,CAAqB,SAAS,EAAE,SAAS,GAAG,SAAS,EAA8B,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInH,kCAAkC;IAQlC,MAAM,CAAqB,SAAS,EAAE,SAAS,GAAG,SAAS,EAA8B,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAI1I,0BAA0B;IAQ1B,IAAI,CAAqB,SAAS,EAAE,SAAS,GAAG,SAAS,EAA8B,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIhI,gCAAgC;IAOhC,UAAU,CAAqB,SAAS,EAAE,SAAS,GAAG,SAAS,EAA8B,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAGpL"}