convex-cms 0.0.1

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 (379) hide show
  1. package/dist/cli/commands/admin.d.ts +16 -0
  2. package/dist/cli/commands/admin.d.ts.map +1 -0
  3. package/dist/cli/commands/admin.js +88 -0
  4. package/dist/cli/commands/admin.js.map +1 -0
  5. package/dist/cli/index.d.ts +3 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +18 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/cli/utils/detectConvexUrl.d.ts +13 -0
  10. package/dist/cli/utils/detectConvexUrl.d.ts.map +1 -0
  11. package/dist/cli/utils/detectConvexUrl.js +48 -0
  12. package/dist/cli/utils/detectConvexUrl.js.map +1 -0
  13. package/dist/cli/utils/openBrowser.d.ts +7 -0
  14. package/dist/cli/utils/openBrowser.d.ts.map +1 -0
  15. package/dist/cli/utils/openBrowser.js +17 -0
  16. package/dist/cli/utils/openBrowser.js.map +1 -0
  17. package/dist/client/admin-config.d.ts +126 -0
  18. package/dist/client/admin-config.d.ts.map +1 -0
  19. package/dist/client/admin-config.js +117 -0
  20. package/dist/client/admin-config.js.map +1 -0
  21. package/dist/client/adminApi.d.ts +2273 -0
  22. package/dist/client/adminApi.d.ts.map +1 -0
  23. package/dist/client/adminApi.js +716 -0
  24. package/dist/client/adminApi.js.map +1 -0
  25. package/dist/client/agentTools.d.ts +933 -0
  26. package/dist/client/agentTools.d.ts.map +1 -0
  27. package/dist/client/agentTools.js +1004 -0
  28. package/dist/client/agentTools.js.map +1 -0
  29. package/dist/client/argTypes.d.ts +212 -0
  30. package/dist/client/argTypes.d.ts.map +1 -0
  31. package/dist/client/argTypes.js +5 -0
  32. package/dist/client/argTypes.js.map +1 -0
  33. package/dist/client/field-types.d.ts +55 -0
  34. package/dist/client/field-types.d.ts.map +1 -0
  35. package/dist/client/field-types.js +152 -0
  36. package/dist/client/field-types.js.map +1 -0
  37. package/dist/client/index.d.ts +189 -0
  38. package/dist/client/index.d.ts.map +1 -0
  39. package/dist/client/index.js +668 -0
  40. package/dist/client/index.js.map +1 -0
  41. package/dist/client/queryBuilder.d.ts +765 -0
  42. package/dist/client/queryBuilder.d.ts.map +1 -0
  43. package/dist/client/queryBuilder.js +970 -0
  44. package/dist/client/queryBuilder.js.map +1 -0
  45. package/dist/client/schema/codegen.d.ts +128 -0
  46. package/dist/client/schema/codegen.d.ts.map +1 -0
  47. package/dist/client/schema/codegen.js +318 -0
  48. package/dist/client/schema/codegen.js.map +1 -0
  49. package/dist/client/schema/defineContentType.d.ts +221 -0
  50. package/dist/client/schema/defineContentType.d.ts.map +1 -0
  51. package/dist/client/schema/defineContentType.js +380 -0
  52. package/dist/client/schema/defineContentType.js.map +1 -0
  53. package/dist/client/schema/index.d.ts +85 -0
  54. package/dist/client/schema/index.d.ts.map +1 -0
  55. package/dist/client/schema/index.js +92 -0
  56. package/dist/client/schema/index.js.map +1 -0
  57. package/dist/client/schema/schemaDrift.d.ts +199 -0
  58. package/dist/client/schema/schemaDrift.d.ts.map +1 -0
  59. package/dist/client/schema/schemaDrift.js +340 -0
  60. package/dist/client/schema/schemaDrift.js.map +1 -0
  61. package/dist/client/schema/typedClient.d.ts +401 -0
  62. package/dist/client/schema/typedClient.d.ts.map +1 -0
  63. package/dist/client/schema/typedClient.js +269 -0
  64. package/dist/client/schema/typedClient.js.map +1 -0
  65. package/dist/client/schema/types.d.ts +477 -0
  66. package/dist/client/schema/types.d.ts.map +1 -0
  67. package/dist/client/schema/types.js +39 -0
  68. package/dist/client/schema/types.js.map +1 -0
  69. package/dist/client/types.d.ts +449 -0
  70. package/dist/client/types.d.ts.map +1 -0
  71. package/dist/client/types.js +149 -0
  72. package/dist/client/types.js.map +1 -0
  73. package/dist/client/workflows.d.ts +51 -0
  74. package/dist/client/workflows.d.ts.map +1 -0
  75. package/dist/client/workflows.js +103 -0
  76. package/dist/client/workflows.js.map +1 -0
  77. package/dist/client/wrapper.d.ts +2198 -0
  78. package/dist/client/wrapper.d.ts.map +1 -0
  79. package/dist/client/wrapper.js +2651 -0
  80. package/dist/client/wrapper.js.map +1 -0
  81. package/dist/component/_generated/api.d.ts +124 -0
  82. package/dist/component/_generated/api.d.ts.map +1 -0
  83. package/dist/component/_generated/api.js +31 -0
  84. package/dist/component/_generated/api.js.map +1 -0
  85. package/dist/component/_generated/component.d.ts +4321 -0
  86. package/dist/component/_generated/component.d.ts.map +1 -0
  87. package/dist/component/_generated/component.js +11 -0
  88. package/dist/component/_generated/component.js.map +1 -0
  89. package/dist/component/_generated/dataModel.d.ts +46 -0
  90. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  91. package/dist/component/_generated/dataModel.js +11 -0
  92. package/dist/component/_generated/dataModel.js.map +1 -0
  93. package/dist/component/_generated/server.d.ts +121 -0
  94. package/dist/component/_generated/server.d.ts.map +1 -0
  95. package/dist/component/_generated/server.js +78 -0
  96. package/dist/component/_generated/server.js.map +1 -0
  97. package/dist/component/auditLog.d.ts +410 -0
  98. package/dist/component/auditLog.d.ts.map +1 -0
  99. package/dist/component/auditLog.js +607 -0
  100. package/dist/component/auditLog.js.map +1 -0
  101. package/dist/component/authorization.d.ts +323 -0
  102. package/dist/component/authorization.d.ts.map +1 -0
  103. package/dist/component/authorization.js +464 -0
  104. package/dist/component/authorization.js.map +1 -0
  105. package/dist/component/authorizationHooks.d.ts +184 -0
  106. package/dist/component/authorizationHooks.d.ts.map +1 -0
  107. package/dist/component/authorizationHooks.js +521 -0
  108. package/dist/component/authorizationHooks.js.map +1 -0
  109. package/dist/component/bulkOperations.d.ts +200 -0
  110. package/dist/component/bulkOperations.d.ts.map +1 -0
  111. package/dist/component/bulkOperations.js +568 -0
  112. package/dist/component/bulkOperations.js.map +1 -0
  113. package/dist/component/contentEntries.d.ts +719 -0
  114. package/dist/component/contentEntries.d.ts.map +1 -0
  115. package/dist/component/contentEntries.js +1617 -0
  116. package/dist/component/contentEntries.js.map +1 -0
  117. package/dist/component/contentEntryMutations.d.ts +505 -0
  118. package/dist/component/contentEntryMutations.d.ts.map +1 -0
  119. package/dist/component/contentEntryMutations.js +1009 -0
  120. package/dist/component/contentEntryMutations.js.map +1 -0
  121. package/dist/component/contentEntryValidation.d.ts +115 -0
  122. package/dist/component/contentEntryValidation.d.ts.map +1 -0
  123. package/dist/component/contentEntryValidation.js +546 -0
  124. package/dist/component/contentEntryValidation.js.map +1 -0
  125. package/dist/component/contentLock.d.ts +328 -0
  126. package/dist/component/contentLock.d.ts.map +1 -0
  127. package/dist/component/contentLock.js +471 -0
  128. package/dist/component/contentLock.js.map +1 -0
  129. package/dist/component/contentTypeMigration.d.ts +411 -0
  130. package/dist/component/contentTypeMigration.d.ts.map +1 -0
  131. package/dist/component/contentTypeMigration.js +805 -0
  132. package/dist/component/contentTypeMigration.js.map +1 -0
  133. package/dist/component/contentTypeMutations.d.ts +975 -0
  134. package/dist/component/contentTypeMutations.d.ts.map +1 -0
  135. package/dist/component/contentTypeMutations.js +768 -0
  136. package/dist/component/contentTypeMutations.js.map +1 -0
  137. package/dist/component/contentTypes.d.ts +538 -0
  138. package/dist/component/contentTypes.d.ts.map +1 -0
  139. package/dist/component/contentTypes.js +304 -0
  140. package/dist/component/contentTypes.js.map +1 -0
  141. package/dist/component/convex.config.d.ts +42 -0
  142. package/dist/component/convex.config.d.ts.map +1 -0
  143. package/dist/component/convex.config.js +43 -0
  144. package/dist/component/convex.config.js.map +1 -0
  145. package/dist/component/documentTypes.d.ts +186 -0
  146. package/dist/component/documentTypes.d.ts.map +1 -0
  147. package/dist/component/documentTypes.js +23 -0
  148. package/dist/component/documentTypes.js.map +1 -0
  149. package/dist/component/eventEmitter.d.ts +281 -0
  150. package/dist/component/eventEmitter.d.ts.map +1 -0
  151. package/dist/component/eventEmitter.js +300 -0
  152. package/dist/component/eventEmitter.js.map +1 -0
  153. package/dist/component/exportImport.d.ts +1120 -0
  154. package/dist/component/exportImport.d.ts.map +1 -0
  155. package/dist/component/exportImport.js +931 -0
  156. package/dist/component/exportImport.js.map +1 -0
  157. package/dist/component/index.d.ts +28 -0
  158. package/dist/component/index.d.ts.map +1 -0
  159. package/dist/component/index.js +142 -0
  160. package/dist/component/index.js.map +1 -0
  161. package/dist/component/lib/deepReferenceResolver.d.ts +252 -0
  162. package/dist/component/lib/deepReferenceResolver.d.ts.map +1 -0
  163. package/dist/component/lib/deepReferenceResolver.js +601 -0
  164. package/dist/component/lib/deepReferenceResolver.js.map +1 -0
  165. package/dist/component/lib/errors.d.ts +306 -0
  166. package/dist/component/lib/errors.d.ts.map +1 -0
  167. package/dist/component/lib/errors.js +407 -0
  168. package/dist/component/lib/errors.js.map +1 -0
  169. package/dist/component/lib/index.d.ts +10 -0
  170. package/dist/component/lib/index.d.ts.map +1 -0
  171. package/dist/component/lib/index.js +33 -0
  172. package/dist/component/lib/index.js.map +1 -0
  173. package/dist/component/lib/mediaReferenceResolver.d.ts +217 -0
  174. package/dist/component/lib/mediaReferenceResolver.d.ts.map +1 -0
  175. package/dist/component/lib/mediaReferenceResolver.js +326 -0
  176. package/dist/component/lib/mediaReferenceResolver.js.map +1 -0
  177. package/dist/component/lib/metadataExtractor.d.ts +245 -0
  178. package/dist/component/lib/metadataExtractor.d.ts.map +1 -0
  179. package/dist/component/lib/metadataExtractor.js +548 -0
  180. package/dist/component/lib/metadataExtractor.js.map +1 -0
  181. package/dist/component/lib/mutationAuth.d.ts +95 -0
  182. package/dist/component/lib/mutationAuth.d.ts.map +1 -0
  183. package/dist/component/lib/mutationAuth.js +146 -0
  184. package/dist/component/lib/mutationAuth.js.map +1 -0
  185. package/dist/component/lib/queries.d.ts +17 -0
  186. package/dist/component/lib/queries.d.ts.map +1 -0
  187. package/dist/component/lib/queries.js +49 -0
  188. package/dist/component/lib/queries.js.map +1 -0
  189. package/dist/component/lib/ragContentChunker.d.ts +423 -0
  190. package/dist/component/lib/ragContentChunker.d.ts.map +1 -0
  191. package/dist/component/lib/ragContentChunker.js +897 -0
  192. package/dist/component/lib/ragContentChunker.js.map +1 -0
  193. package/dist/component/lib/referenceResolver.d.ts +175 -0
  194. package/dist/component/lib/referenceResolver.d.ts.map +1 -0
  195. package/dist/component/lib/referenceResolver.js +293 -0
  196. package/dist/component/lib/referenceResolver.js.map +1 -0
  197. package/dist/component/lib/slugGenerator.d.ts +71 -0
  198. package/dist/component/lib/slugGenerator.d.ts.map +1 -0
  199. package/dist/component/lib/slugGenerator.js +207 -0
  200. package/dist/component/lib/slugGenerator.js.map +1 -0
  201. package/dist/component/lib/slugUniqueness.d.ts +131 -0
  202. package/dist/component/lib/slugUniqueness.d.ts.map +1 -0
  203. package/dist/component/lib/slugUniqueness.js +229 -0
  204. package/dist/component/lib/slugUniqueness.js.map +1 -0
  205. package/dist/component/lib/softDelete.d.ts +18 -0
  206. package/dist/component/lib/softDelete.d.ts.map +1 -0
  207. package/dist/component/lib/softDelete.js +29 -0
  208. package/dist/component/lib/softDelete.js.map +1 -0
  209. package/dist/component/localeFallbackChain.d.ts +410 -0
  210. package/dist/component/localeFallbackChain.d.ts.map +1 -0
  211. package/dist/component/localeFallbackChain.js +467 -0
  212. package/dist/component/localeFallbackChain.js.map +1 -0
  213. package/dist/component/localeFields.d.ts +508 -0
  214. package/dist/component/localeFields.d.ts.map +1 -0
  215. package/dist/component/localeFields.js +592 -0
  216. package/dist/component/localeFields.js.map +1 -0
  217. package/dist/component/mediaAssetMutations.d.ts +235 -0
  218. package/dist/component/mediaAssetMutations.d.ts.map +1 -0
  219. package/dist/component/mediaAssetMutations.js +558 -0
  220. package/dist/component/mediaAssetMutations.js.map +1 -0
  221. package/dist/component/mediaAssets.d.ts +168 -0
  222. package/dist/component/mediaAssets.d.ts.map +1 -0
  223. package/dist/component/mediaAssets.js +618 -0
  224. package/dist/component/mediaAssets.js.map +1 -0
  225. package/dist/component/mediaFolderMutations.d.ts +642 -0
  226. package/dist/component/mediaFolderMutations.d.ts.map +1 -0
  227. package/dist/component/mediaFolderMutations.js +849 -0
  228. package/dist/component/mediaFolderMutations.js.map +1 -0
  229. package/dist/component/mediaUploadMutations.d.ts +136 -0
  230. package/dist/component/mediaUploadMutations.d.ts.map +1 -0
  231. package/dist/component/mediaUploadMutations.js +205 -0
  232. package/dist/component/mediaUploadMutations.js.map +1 -0
  233. package/dist/component/mediaVariantMutations.d.ts +468 -0
  234. package/dist/component/mediaVariantMutations.d.ts.map +1 -0
  235. package/dist/component/mediaVariantMutations.js +737 -0
  236. package/dist/component/mediaVariantMutations.js.map +1 -0
  237. package/dist/component/mediaVariants.d.ts +525 -0
  238. package/dist/component/mediaVariants.d.ts.map +1 -0
  239. package/dist/component/mediaVariants.js +661 -0
  240. package/dist/component/mediaVariants.js.map +1 -0
  241. package/dist/component/ragContentIndexer.d.ts +595 -0
  242. package/dist/component/ragContentIndexer.d.ts.map +1 -0
  243. package/dist/component/ragContentIndexer.js +794 -0
  244. package/dist/component/ragContentIndexer.js.map +1 -0
  245. package/dist/component/rateLimitHooks.d.ts +266 -0
  246. package/dist/component/rateLimitHooks.d.ts.map +1 -0
  247. package/dist/component/rateLimitHooks.js +412 -0
  248. package/dist/component/rateLimitHooks.js.map +1 -0
  249. package/dist/component/roles.d.ts +649 -0
  250. package/dist/component/roles.d.ts.map +1 -0
  251. package/dist/component/roles.js +884 -0
  252. package/dist/component/roles.js.map +1 -0
  253. package/dist/component/scheduledPublish.d.ts +182 -0
  254. package/dist/component/scheduledPublish.d.ts.map +1 -0
  255. package/dist/component/scheduledPublish.js +304 -0
  256. package/dist/component/scheduledPublish.js.map +1 -0
  257. package/dist/component/schema.d.ts +4114 -0
  258. package/dist/component/schema.d.ts.map +1 -0
  259. package/dist/component/schema.js +469 -0
  260. package/dist/component/schema.js.map +1 -0
  261. package/dist/component/taxonomies.d.ts +476 -0
  262. package/dist/component/taxonomies.d.ts.map +1 -0
  263. package/dist/component/taxonomies.js +785 -0
  264. package/dist/component/taxonomies.js.map +1 -0
  265. package/dist/component/taxonomyMutations.d.ts +206 -0
  266. package/dist/component/taxonomyMutations.d.ts.map +1 -0
  267. package/dist/component/taxonomyMutations.js +1001 -0
  268. package/dist/component/taxonomyMutations.js.map +1 -0
  269. package/dist/component/trash.d.ts +265 -0
  270. package/dist/component/trash.d.ts.map +1 -0
  271. package/dist/component/trash.js +621 -0
  272. package/dist/component/trash.js.map +1 -0
  273. package/dist/component/types.d.ts +4 -0
  274. package/dist/component/types.d.ts.map +1 -0
  275. package/dist/component/types.js +2 -0
  276. package/dist/component/types.js.map +1 -0
  277. package/dist/component/userContext.d.ts +508 -0
  278. package/dist/component/userContext.d.ts.map +1 -0
  279. package/dist/component/userContext.js +615 -0
  280. package/dist/component/userContext.js.map +1 -0
  281. package/dist/component/validation.d.ts +387 -0
  282. package/dist/component/validation.d.ts.map +1 -0
  283. package/dist/component/validation.js +1052 -0
  284. package/dist/component/validation.js.map +1 -0
  285. package/dist/component/validators.d.ts +4645 -0
  286. package/dist/component/validators.d.ts.map +1 -0
  287. package/dist/component/validators.js +641 -0
  288. package/dist/component/validators.js.map +1 -0
  289. package/dist/component/versionMutations.d.ts +216 -0
  290. package/dist/component/versionMutations.d.ts.map +1 -0
  291. package/dist/component/versionMutations.js +321 -0
  292. package/dist/component/versionMutations.js.map +1 -0
  293. package/dist/component/webhookTrigger.d.ts +770 -0
  294. package/dist/component/webhookTrigger.d.ts.map +1 -0
  295. package/dist/component/webhookTrigger.js +1413 -0
  296. package/dist/component/webhookTrigger.js.map +1 -0
  297. package/dist/react/index.d.ts +316 -0
  298. package/dist/react/index.d.ts.map +1 -0
  299. package/dist/react/index.js +558 -0
  300. package/dist/react/index.js.map +1 -0
  301. package/dist/test.d.ts +2230 -0
  302. package/dist/test.d.ts.map +1 -0
  303. package/dist/test.js +1107 -0
  304. package/dist/test.js.map +1 -0
  305. package/package.json +95 -0
  306. package/src/cli/commands/admin.ts +104 -0
  307. package/src/cli/index.ts +21 -0
  308. package/src/cli/utils/detectConvexUrl.ts +54 -0
  309. package/src/cli/utils/openBrowser.ts +16 -0
  310. package/src/client/admin-config.ts +138 -0
  311. package/src/client/adminApi.ts +942 -0
  312. package/src/client/agentTools.ts +1311 -0
  313. package/src/client/argTypes.ts +316 -0
  314. package/src/client/field-types.ts +187 -0
  315. package/src/client/index.ts +1301 -0
  316. package/src/client/queryBuilder.ts +1100 -0
  317. package/src/client/schema/codegen.ts +500 -0
  318. package/src/client/schema/defineContentType.ts +501 -0
  319. package/src/client/schema/index.ts +169 -0
  320. package/src/client/schema/schemaDrift.ts +574 -0
  321. package/src/client/schema/typedClient.ts +688 -0
  322. package/src/client/schema/types.ts +666 -0
  323. package/src/client/types.ts +723 -0
  324. package/src/client/workflows.ts +141 -0
  325. package/src/client/wrapper.ts +4304 -0
  326. package/src/component/_generated/api.ts +140 -0
  327. package/src/component/_generated/component.ts +5029 -0
  328. package/src/component/_generated/dataModel.ts +60 -0
  329. package/src/component/_generated/server.ts +156 -0
  330. package/src/component/authorization.ts +647 -0
  331. package/src/component/authorizationHooks.ts +668 -0
  332. package/src/component/bulkOperations.ts +687 -0
  333. package/src/component/contentEntries.ts +1976 -0
  334. package/src/component/contentEntryMutations.ts +1223 -0
  335. package/src/component/contentEntryValidation.ts +707 -0
  336. package/src/component/contentLock.ts +550 -0
  337. package/src/component/contentTypeMigration.ts +1064 -0
  338. package/src/component/contentTypeMutations.ts +969 -0
  339. package/src/component/contentTypes.ts +346 -0
  340. package/src/component/convex.config.ts +44 -0
  341. package/src/component/documentTypes.ts +240 -0
  342. package/src/component/eventEmitter.ts +485 -0
  343. package/src/component/exportImport.ts +1169 -0
  344. package/src/component/index.ts +491 -0
  345. package/src/component/lib/deepReferenceResolver.ts +999 -0
  346. package/src/component/lib/errors.ts +816 -0
  347. package/src/component/lib/index.ts +145 -0
  348. package/src/component/lib/mediaReferenceResolver.ts +495 -0
  349. package/src/component/lib/metadataExtractor.ts +792 -0
  350. package/src/component/lib/mutationAuth.ts +199 -0
  351. package/src/component/lib/queries.ts +79 -0
  352. package/src/component/lib/ragContentChunker.ts +1371 -0
  353. package/src/component/lib/referenceResolver.ts +430 -0
  354. package/src/component/lib/slugGenerator.ts +262 -0
  355. package/src/component/lib/slugUniqueness.ts +333 -0
  356. package/src/component/lib/softDelete.ts +44 -0
  357. package/src/component/localeFallbackChain.ts +673 -0
  358. package/src/component/localeFields.ts +896 -0
  359. package/src/component/mediaAssetMutations.ts +725 -0
  360. package/src/component/mediaAssets.ts +932 -0
  361. package/src/component/mediaFolderMutations.ts +1046 -0
  362. package/src/component/mediaUploadMutations.ts +224 -0
  363. package/src/component/mediaVariantMutations.ts +900 -0
  364. package/src/component/mediaVariants.ts +793 -0
  365. package/src/component/ragContentIndexer.ts +1067 -0
  366. package/src/component/rateLimitHooks.ts +572 -0
  367. package/src/component/roles.ts +1360 -0
  368. package/src/component/scheduledPublish.ts +358 -0
  369. package/src/component/schema.ts +617 -0
  370. package/src/component/taxonomies.ts +949 -0
  371. package/src/component/taxonomyMutations.ts +1210 -0
  372. package/src/component/trash.ts +724 -0
  373. package/src/component/userContext.ts +898 -0
  374. package/src/component/validation.ts +1388 -0
  375. package/src/component/validators.ts +949 -0
  376. package/src/component/versionMutations.ts +392 -0
  377. package/src/component/webhookTrigger.ts +1922 -0
  378. package/src/react/index.ts +898 -0
  379. package/src/test.ts +1580 -0
@@ -0,0 +1,770 @@
1
+ /**
2
+ * Webhook Trigger Module
3
+ *
4
+ * Scheduled function to process content events and trigger configured webhooks.
5
+ * Supports retry logic with exponential backoff and delivery confirmation.
6
+ *
7
+ * Architecture:
8
+ * 1. Events are captured via the event emitter system (cmsEvents table)
9
+ * 2. A background processor polls for unprocessed events
10
+ * 3. For each event, matching webhook configurations are found
11
+ * 4. Delivery records are created and HTTP requests are dispatched
12
+ * 5. Success/failure is tracked with automatic retry for failures
13
+ *
14
+ * Security Features:
15
+ * - HMAC-SHA256 signature generation for payload verification
16
+ * - Configurable timeout to prevent hanging requests
17
+ * - Secret keys never exposed in API responses
18
+ *
19
+ * Retry Behavior:
20
+ * - Exponential backoff: 1min, 5min, 15min, 1hr, 4hr (configurable)
21
+ * - Automatic retry scheduling via Convex scheduler
22
+ * - Maximum retry limit per webhook configuration
23
+ *
24
+ * @module
25
+ */
26
+ /**
27
+ * Webhook delivery status.
28
+ */
29
+ export type WebhookDeliveryStatus = "pending" | "processing" | "delivered" | "failed" | "retrying";
30
+ /**
31
+ * Configuration for the webhook processor.
32
+ */
33
+ export interface WebhookProcessorConfig {
34
+ /**
35
+ * Maximum number of events to process in a single batch.
36
+ * @default 50
37
+ */
38
+ batchSize?: number;
39
+ /**
40
+ * Interval in milliseconds for the background polling job.
41
+ * @default 60000 (1 minute)
42
+ */
43
+ pollingIntervalMs?: number;
44
+ /**
45
+ * Default timeout for webhook requests in milliseconds.
46
+ * @default 30000 (30 seconds)
47
+ */
48
+ defaultTimeoutMs?: number;
49
+ /**
50
+ * Default maximum retry attempts.
51
+ * @default 5
52
+ */
53
+ defaultMaxRetries?: number;
54
+ }
55
+ /**
56
+ * Result of processing webhook events.
57
+ */
58
+ export interface ProcessWebhooksResult {
59
+ /** Number of events processed */
60
+ eventsProcessed: number;
61
+ /** Number of deliveries queued */
62
+ deliveriesQueued: number;
63
+ /** Number of deliveries sent successfully */
64
+ deliveriesSucceeded: number;
65
+ /** Number of deliveries that failed (will retry or exhausted) */
66
+ deliveriesFailed: number;
67
+ /** Whether there are more events to process */
68
+ hasMore: boolean;
69
+ /** Errors encountered */
70
+ errors: Array<{
71
+ webhookId: string;
72
+ eventId: string;
73
+ error: string;
74
+ }>;
75
+ }
76
+ /**
77
+ * Webhook payload structure sent to endpoints.
78
+ */
79
+ export interface WebhookPayload {
80
+ /** Unique delivery ID for idempotency */
81
+ deliveryId: string;
82
+ /** Event type (e.g., "contentEntry.published") */
83
+ eventType: string;
84
+ /** Resource type that triggered the event */
85
+ resourceType: string;
86
+ /** ID of the affected resource */
87
+ resourceId: string;
88
+ /** Action performed on the resource */
89
+ action: string;
90
+ /** Event-specific payload data */
91
+ data: unknown;
92
+ /** ISO timestamp when the event occurred */
93
+ timestamp: string;
94
+ /** User who triggered the event (if known) */
95
+ userId?: string;
96
+ }
97
+ /**
98
+ * Statistics about webhook deliveries.
99
+ */
100
+ export interface WebhookStats {
101
+ /** Total webhooks configured */
102
+ totalWebhooks: number;
103
+ /** Active webhooks */
104
+ activeWebhooks: number;
105
+ /** Pending deliveries */
106
+ pendingDeliveries: number;
107
+ /** Deliveries awaiting retry */
108
+ retryingDeliveries: number;
109
+ /** Deliveries in the last 24 hours */
110
+ deliveriesLast24h: number;
111
+ /** Success rate in the last 24 hours */
112
+ successRateLast24h: number;
113
+ }
114
+ /**
115
+ * Default configuration values.
116
+ */
117
+ export declare const DEFAULT_WEBHOOK_CONFIG: {
118
+ batchSize: number;
119
+ pollingIntervalMs: number;
120
+ defaultTimeoutMs: number;
121
+ defaultMaxRetries: number;
122
+ };
123
+ /**
124
+ * Exponential backoff delays in milliseconds.
125
+ * Attempt 1: 1 minute
126
+ * Attempt 2: 5 minutes
127
+ * Attempt 3: 15 minutes
128
+ * Attempt 4: 1 hour
129
+ * Attempt 5: 4 hours
130
+ */
131
+ export declare const RETRY_DELAYS_MS: number[];
132
+ /**
133
+ * Validator for webhook delivery status.
134
+ */
135
+ export declare const webhookDeliveryStatusValidator: import("convex/values").VUnion<"pending" | "processing" | "failed" | "delivered" | "retrying", [import("convex/values").VLiteral<"pending", "required">, import("convex/values").VLiteral<"processing", "required">, import("convex/values").VLiteral<"delivered", "required">, import("convex/values").VLiteral<"failed", "required">, import("convex/values").VLiteral<"retrying", "required">], "required", never>;
136
+ /**
137
+ * Validator for creating a webhook configuration.
138
+ */
139
+ export declare const createWebhookArgs: import("convex/values").VObject<{
140
+ description?: string | undefined;
141
+ contentTypes?: string[] | undefined;
142
+ createdBy?: string | undefined;
143
+ secret?: string | undefined;
144
+ resourceTypes?: ("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined;
145
+ headers?: any;
146
+ enabled?: boolean | undefined;
147
+ maxRetries?: number | undefined;
148
+ timeoutMs?: number | undefined;
149
+ name: string;
150
+ url: string;
151
+ eventTypes: string[];
152
+ }, {
153
+ /** Human-readable name for the webhook */
154
+ name: import("convex/values").VString<string, "required">;
155
+ /** Optional description */
156
+ description: import("convex/values").VString<string | undefined, "optional">;
157
+ /** Target URL (must be HTTPS in production) */
158
+ url: import("convex/values").VString<string, "required">;
159
+ /** Secret for HMAC signature (optional but recommended) */
160
+ secret: import("convex/values").VString<string | undefined, "optional">;
161
+ /** Event types to subscribe to (e.g., ["contentEntry.published"]) */
162
+ eventTypes: import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">;
163
+ /** Filter by resource types (optional) */
164
+ resourceTypes: import("convex/values").VArray<("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined, import("convex/values").VUnion<"contentEntry" | "contentType" | "mediaAsset" | "mediaFolder", [import("convex/values").VLiteral<"contentEntry", "required">, import("convex/values").VLiteral<"contentType", "required">, import("convex/values").VLiteral<"mediaAsset", "required">, import("convex/values").VLiteral<"mediaFolder", "required">], "required", never>, "optional">;
165
+ /** Filter by content types (optional, for contentEntry events) */
166
+ contentTypes: import("convex/values").VArray<string[] | undefined, import("convex/values").VString<string, "required">, "optional">;
167
+ /** Additional HTTP headers */
168
+ headers: import("convex/values").VAny<any, "optional", string>;
169
+ /** Whether the webhook is enabled (default: true) */
170
+ enabled: import("convex/values").VBoolean<boolean | undefined, "optional">;
171
+ /** Maximum retry attempts (default: 5) */
172
+ maxRetries: import("convex/values").VFloat64<number | undefined, "optional">;
173
+ /** Request timeout in ms (default: 30000) */
174
+ timeoutMs: import("convex/values").VFloat64<number | undefined, "optional">;
175
+ /** User creating the webhook */
176
+ createdBy: import("convex/values").VString<string | undefined, "optional">;
177
+ }, "required", "name" | "description" | "contentTypes" | "createdBy" | "url" | "secret" | "eventTypes" | "resourceTypes" | "headers" | "enabled" | "maxRetries" | "timeoutMs" | `headers.${string}`>;
178
+ /**
179
+ * Validator for updating a webhook configuration.
180
+ */
181
+ export declare const updateWebhookArgs: import("convex/values").VObject<{
182
+ name?: string | undefined;
183
+ description?: string | undefined;
184
+ contentTypes?: string[] | undefined;
185
+ updatedBy?: string | undefined;
186
+ url?: string | undefined;
187
+ secret?: string | undefined;
188
+ eventTypes?: string[] | undefined;
189
+ resourceTypes?: ("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined;
190
+ headers?: any;
191
+ enabled?: boolean | undefined;
192
+ maxRetries?: number | undefined;
193
+ timeoutMs?: number | undefined;
194
+ id: import("convex/values").GenericId<"webhookConfigs">;
195
+ }, {
196
+ /** Webhook ID to update */
197
+ id: import("convex/values").VId<import("convex/values").GenericId<"webhookConfigs">, "required">;
198
+ /** New name */
199
+ name: import("convex/values").VString<string | undefined, "optional">;
200
+ /** New description */
201
+ description: import("convex/values").VString<string | undefined, "optional">;
202
+ /** New URL */
203
+ url: import("convex/values").VString<string | undefined, "optional">;
204
+ /** New secret (set to empty string to remove) */
205
+ secret: import("convex/values").VString<string | undefined, "optional">;
206
+ /** New event types filter */
207
+ eventTypes: import("convex/values").VArray<string[] | undefined, import("convex/values").VString<string, "required">, "optional">;
208
+ /** New resource types filter */
209
+ resourceTypes: import("convex/values").VArray<("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined, import("convex/values").VUnion<"contentEntry" | "contentType" | "mediaAsset" | "mediaFolder", [import("convex/values").VLiteral<"contentEntry", "required">, import("convex/values").VLiteral<"contentType", "required">, import("convex/values").VLiteral<"mediaAsset", "required">, import("convex/values").VLiteral<"mediaFolder", "required">], "required", never>, "optional">;
210
+ /** New content types filter */
211
+ contentTypes: import("convex/values").VArray<string[] | undefined, import("convex/values").VString<string, "required">, "optional">;
212
+ /** New headers */
213
+ headers: import("convex/values").VAny<any, "optional", string>;
214
+ /** Enable/disable the webhook */
215
+ enabled: import("convex/values").VBoolean<boolean | undefined, "optional">;
216
+ /** New max retries */
217
+ maxRetries: import("convex/values").VFloat64<number | undefined, "optional">;
218
+ /** New timeout */
219
+ timeoutMs: import("convex/values").VFloat64<number | undefined, "optional">;
220
+ /** User performing the update */
221
+ updatedBy: import("convex/values").VString<string | undefined, "optional">;
222
+ }, "required", "id" | "name" | "description" | "contentTypes" | "updatedBy" | "url" | "secret" | "eventTypes" | "resourceTypes" | "headers" | "enabled" | "maxRetries" | "timeoutMs" | `headers.${string}`>;
223
+ /**
224
+ * Validator for deleting a webhook configuration.
225
+ */
226
+ export declare const deleteWebhookArgs: import("convex/values").VObject<{
227
+ hardDelete?: boolean | undefined;
228
+ deletedBy?: string | undefined;
229
+ id: import("convex/values").GenericId<"webhookConfigs">;
230
+ }, {
231
+ /** Webhook ID to delete */
232
+ id: import("convex/values").VId<import("convex/values").GenericId<"webhookConfigs">, "required">;
233
+ /** Hard delete (true) or soft delete (false, default) */
234
+ hardDelete: import("convex/values").VBoolean<boolean | undefined, "optional">;
235
+ /** User performing the deletion */
236
+ deletedBy: import("convex/values").VString<string | undefined, "optional">;
237
+ }, "required", "id" | "hardDelete" | "deletedBy">;
238
+ /**
239
+ * Validator for webhook configuration document (return type).
240
+ */
241
+ export declare const webhookConfigDoc: import("convex/values").VObject<{
242
+ description?: string | undefined;
243
+ contentTypes?: string[] | undefined;
244
+ deletedAt?: number | undefined;
245
+ createdBy?: string | undefined;
246
+ updatedBy?: string | undefined;
247
+ resourceTypes?: ("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined;
248
+ headers?: any;
249
+ maxRetries?: number | undefined;
250
+ timeoutMs?: number | undefined;
251
+ name: string;
252
+ _creationTime: number;
253
+ url: string;
254
+ eventTypes: string[];
255
+ enabled: boolean;
256
+ _id: import("convex/values").GenericId<"webhookConfigs">;
257
+ }, {
258
+ _id: import("convex/values").VId<import("convex/values").GenericId<"webhookConfigs">, "required">;
259
+ _creationTime: import("convex/values").VFloat64<number, "required">;
260
+ name: import("convex/values").VString<string, "required">;
261
+ description: import("convex/values").VString<string | undefined, "optional">;
262
+ url: import("convex/values").VString<string, "required">;
263
+ eventTypes: import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">;
264
+ resourceTypes: import("convex/values").VArray<("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined, import("convex/values").VUnion<"contentEntry" | "contentType" | "mediaAsset" | "mediaFolder", [import("convex/values").VLiteral<"contentEntry", "required">, import("convex/values").VLiteral<"contentType", "required">, import("convex/values").VLiteral<"mediaAsset", "required">, import("convex/values").VLiteral<"mediaFolder", "required">], "required", never>, "optional">;
265
+ contentTypes: import("convex/values").VArray<string[] | undefined, import("convex/values").VString<string, "required">, "optional">;
266
+ headers: import("convex/values").VAny<any, "optional", string>;
267
+ enabled: import("convex/values").VBoolean<boolean, "required">;
268
+ maxRetries: import("convex/values").VFloat64<number | undefined, "optional">;
269
+ timeoutMs: import("convex/values").VFloat64<number | undefined, "optional">;
270
+ deletedAt: import("convex/values").VFloat64<number | undefined, "optional">;
271
+ createdBy: import("convex/values").VString<string | undefined, "optional">;
272
+ updatedBy: import("convex/values").VString<string | undefined, "optional">;
273
+ }, "required", "name" | "description" | "contentTypes" | "deletedAt" | "createdBy" | "updatedBy" | "_creationTime" | "url" | "eventTypes" | "resourceTypes" | "headers" | "enabled" | "maxRetries" | "timeoutMs" | `headers.${string}` | "_id">;
274
+ /**
275
+ * Validator for webhook delivery document.
276
+ */
277
+ export declare const webhookDeliveryDoc: import("convex/values").VObject<{
278
+ lastAttemptAt?: number | undefined;
279
+ nextRetryAt?: number | undefined;
280
+ lastStatusCode?: number | undefined;
281
+ lastError?: string | undefined;
282
+ lastResponseBody?: string | undefined;
283
+ lastDurationMs?: number | undefined;
284
+ deliveredAt?: number | undefined;
285
+ _creationTime: number;
286
+ status: "pending" | "processing" | "failed" | "delivered" | "retrying";
287
+ eventType: string;
288
+ payload: any;
289
+ webhookId: import("convex/values").GenericId<"webhookConfigs">;
290
+ eventId: import("convex/values").GenericId<"cmsEvents">;
291
+ attemptCount: number;
292
+ maxAttempts: number;
293
+ _id: import("convex/values").GenericId<"webhookDeliveries">;
294
+ }, {
295
+ _id: import("convex/values").VId<import("convex/values").GenericId<"webhookDeliveries">, "required">;
296
+ _creationTime: import("convex/values").VFloat64<number, "required">;
297
+ webhookId: import("convex/values").VId<import("convex/values").GenericId<"webhookConfigs">, "required">;
298
+ eventId: import("convex/values").VId<import("convex/values").GenericId<"cmsEvents">, "required">;
299
+ eventType: import("convex/values").VString<string, "required">;
300
+ status: import("convex/values").VUnion<"pending" | "processing" | "failed" | "delivered" | "retrying", [import("convex/values").VLiteral<"pending", "required">, import("convex/values").VLiteral<"processing", "required">, import("convex/values").VLiteral<"delivered", "required">, import("convex/values").VLiteral<"failed", "required">, import("convex/values").VLiteral<"retrying", "required">], "required", never>;
301
+ attemptCount: import("convex/values").VFloat64<number, "required">;
302
+ maxAttempts: import("convex/values").VFloat64<number, "required">;
303
+ lastAttemptAt: import("convex/values").VFloat64<number | undefined, "optional">;
304
+ nextRetryAt: import("convex/values").VFloat64<number | undefined, "optional">;
305
+ lastStatusCode: import("convex/values").VFloat64<number | undefined, "optional">;
306
+ lastError: import("convex/values").VString<string | undefined, "optional">;
307
+ lastResponseBody: import("convex/values").VString<string | undefined, "optional">;
308
+ lastDurationMs: import("convex/values").VFloat64<number | undefined, "optional">;
309
+ payload: import("convex/values").VAny<any, "required", string>;
310
+ deliveredAt: import("convex/values").VFloat64<number | undefined, "optional">;
311
+ }, "required", "_creationTime" | "status" | "eventType" | "payload" | `payload.${string}` | "webhookId" | "eventId" | "attemptCount" | "maxAttempts" | "lastAttemptAt" | "nextRetryAt" | "lastStatusCode" | "lastError" | "lastResponseBody" | "lastDurationMs" | "deliveredAt" | "_id">;
312
+ /**
313
+ * Create a new webhook configuration.
314
+ *
315
+ * @example
316
+ * ```typescript
317
+ * const webhookId = await ctx.runMutation(api.webhookTrigger.createWebhook, {
318
+ * name: "CDN Invalidation",
319
+ * url: "https://api.example.com/webhooks/cms",
320
+ * secret: "my-secret-key",
321
+ * eventTypes: ["contentEntry.published", "contentEntry.deleted"],
322
+ * });
323
+ * ```
324
+ */
325
+ export declare const createWebhook: import("convex/server").RegisteredMutation<"public", {
326
+ description?: string | undefined;
327
+ contentTypes?: string[] | undefined;
328
+ createdBy?: string | undefined;
329
+ secret?: string | undefined;
330
+ resourceTypes?: ("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined;
331
+ headers?: any;
332
+ enabled?: boolean | undefined;
333
+ maxRetries?: number | undefined;
334
+ timeoutMs?: number | undefined;
335
+ name: string;
336
+ url: string;
337
+ eventTypes: string[];
338
+ }, Promise<import("convex/values").GenericId<"webhookConfigs">>>;
339
+ /**
340
+ * Update an existing webhook configuration.
341
+ */
342
+ export declare const updateWebhook: import("convex/server").RegisteredMutation<"public", {
343
+ name?: string | undefined;
344
+ description?: string | undefined;
345
+ contentTypes?: string[] | undefined;
346
+ updatedBy?: string | undefined;
347
+ url?: string | undefined;
348
+ secret?: string | undefined;
349
+ eventTypes?: string[] | undefined;
350
+ resourceTypes?: ("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined;
351
+ headers?: any;
352
+ enabled?: boolean | undefined;
353
+ maxRetries?: number | undefined;
354
+ timeoutMs?: number | undefined;
355
+ id: import("convex/values").GenericId<"webhookConfigs">;
356
+ }, Promise<{
357
+ _id: import("convex/values").GenericId<"webhookConfigs">;
358
+ _creationTime: number;
359
+ description?: string | undefined;
360
+ contentTypes?: string[] | undefined;
361
+ deletedAt?: number | undefined;
362
+ createdBy?: string | undefined;
363
+ updatedBy?: string | undefined;
364
+ secret?: string | undefined;
365
+ resourceTypes?: ("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined;
366
+ headers?: any;
367
+ maxRetries?: number | undefined;
368
+ timeoutMs?: number | undefined;
369
+ name: string;
370
+ url: string;
371
+ eventTypes: string[];
372
+ enabled: boolean;
373
+ }>>;
374
+ /**
375
+ * Delete a webhook configuration.
376
+ */
377
+ export declare const deleteWebhook: import("convex/server").RegisteredMutation<"public", {
378
+ hardDelete?: boolean | undefined;
379
+ deletedBy?: string | undefined;
380
+ id: import("convex/values").GenericId<"webhookConfigs">;
381
+ }, Promise<{
382
+ success: boolean;
383
+ message: string;
384
+ }>>;
385
+ /**
386
+ * Restore a soft-deleted webhook.
387
+ */
388
+ export declare const restoreWebhook: import("convex/server").RegisteredMutation<"public", {
389
+ restoredBy?: string | undefined;
390
+ id: import("convex/values").GenericId<"webhookConfigs">;
391
+ }, Promise<{
392
+ _id: import("convex/values").GenericId<"webhookConfigs">;
393
+ _creationTime: number;
394
+ description?: string | undefined;
395
+ contentTypes?: string[] | undefined;
396
+ deletedAt?: number | undefined;
397
+ createdBy?: string | undefined;
398
+ updatedBy?: string | undefined;
399
+ secret?: string | undefined;
400
+ resourceTypes?: ("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined;
401
+ headers?: any;
402
+ maxRetries?: number | undefined;
403
+ timeoutMs?: number | undefined;
404
+ name: string;
405
+ url: string;
406
+ eventTypes: string[];
407
+ enabled: boolean;
408
+ }>>;
409
+ /**
410
+ * Get a single webhook configuration by ID.
411
+ * Note: Secret is not returned for security.
412
+ */
413
+ export declare const getWebhook: import("convex/server").RegisteredQuery<"public", {
414
+ includeDeleted?: boolean | undefined;
415
+ id: import("convex/values").GenericId<"webhookConfigs">;
416
+ }, Promise<{
417
+ _id: import("convex/values").GenericId<"webhookConfigs">;
418
+ _creationTime: number;
419
+ description?: string | undefined;
420
+ contentTypes?: string[] | undefined;
421
+ deletedAt?: number | undefined;
422
+ createdBy?: string | undefined;
423
+ updatedBy?: string | undefined;
424
+ secret?: string | undefined;
425
+ resourceTypes?: ("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined;
426
+ headers?: any;
427
+ maxRetries?: number | undefined;
428
+ timeoutMs?: number | undefined;
429
+ name: string;
430
+ url: string;
431
+ eventTypes: string[];
432
+ enabled: boolean;
433
+ } | null>>;
434
+ /**
435
+ * List all webhook configurations with optional filtering.
436
+ */
437
+ export declare const listWebhooks: import("convex/server").RegisteredQuery<"public", {
438
+ enabled?: boolean | undefined;
439
+ includeDeleted?: boolean | undefined;
440
+ limit?: number | undefined;
441
+ }, Promise<{
442
+ _id: import("convex/values").GenericId<"webhookConfigs">;
443
+ _creationTime: number;
444
+ description?: string | undefined;
445
+ contentTypes?: string[] | undefined;
446
+ deletedAt?: number | undefined;
447
+ createdBy?: string | undefined;
448
+ updatedBy?: string | undefined;
449
+ secret?: string | undefined;
450
+ resourceTypes?: ("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined;
451
+ headers?: any;
452
+ maxRetries?: number | undefined;
453
+ timeoutMs?: number | undefined;
454
+ name: string;
455
+ url: string;
456
+ eventTypes: string[];
457
+ enabled: boolean;
458
+ }[]>>;
459
+ /**
460
+ * Internal query to get webhooks matching an event.
461
+ */
462
+ export declare const getMatchingWebhooks: import("convex/server").RegisteredQuery<"internal", {
463
+ contentTypeName?: string | undefined;
464
+ eventType: string;
465
+ resourceType: "contentEntry" | "contentType" | "mediaAsset" | "mediaFolder";
466
+ }, Promise<{
467
+ _id: import("convex/values").GenericId<"webhookConfigs">;
468
+ _creationTime: number;
469
+ description?: string | undefined;
470
+ contentTypes?: string[] | undefined;
471
+ deletedAt?: number | undefined;
472
+ createdBy?: string | undefined;
473
+ updatedBy?: string | undefined;
474
+ secret?: string | undefined;
475
+ resourceTypes?: ("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined;
476
+ headers?: any;
477
+ maxRetries?: number | undefined;
478
+ timeoutMs?: number | undefined;
479
+ name: string;
480
+ url: string;
481
+ eventTypes: string[];
482
+ enabled: boolean;
483
+ }[]>>;
484
+ /**
485
+ * Internal query to get unprocessed events for webhook delivery.
486
+ */
487
+ export declare const getUnprocessedWebhookEvents: import("convex/server").RegisteredQuery<"internal", {
488
+ limit?: number | undefined;
489
+ }, Promise<{
490
+ _id: import("convex/values").GenericId<"cmsEvents">;
491
+ _creationTime: number;
492
+ metadata?: any;
493
+ userId?: string | undefined;
494
+ processedAt?: number | undefined;
495
+ correlationId?: string | undefined;
496
+ eventType: string;
497
+ resourceType: "contentEntry" | "contentType" | "mediaAsset" | "mediaFolder";
498
+ resourceId: string;
499
+ action: "published" | "scheduled" | "created" | "updated" | "unpublished" | "deleted" | "restored" | "duplicated";
500
+ payload: any;
501
+ processed: boolean;
502
+ }[]>>;
503
+ /**
504
+ * Internal query to get pending or retrying deliveries.
505
+ */
506
+ export declare const getPendingDeliveries: import("convex/server").RegisteredQuery<"internal", {
507
+ limit?: number | undefined;
508
+ }, Promise<{
509
+ _id: import("convex/values").GenericId<"webhookDeliveries">;
510
+ _creationTime: number;
511
+ lastAttemptAt?: number | undefined;
512
+ nextRetryAt?: number | undefined;
513
+ lastStatusCode?: number | undefined;
514
+ lastError?: string | undefined;
515
+ lastResponseBody?: string | undefined;
516
+ lastDurationMs?: number | undefined;
517
+ deliveredAt?: number | undefined;
518
+ status: "pending" | "processing" | "failed" | "delivered" | "retrying";
519
+ eventType: string;
520
+ payload: any;
521
+ webhookId: import("convex/values").GenericId<"webhookConfigs">;
522
+ eventId: import("convex/values").GenericId<"cmsEvents">;
523
+ attemptCount: number;
524
+ maxAttempts: number;
525
+ }[]>>;
526
+ /**
527
+ * Internal mutation to create a delivery record for an event-webhook pair.
528
+ */
529
+ export declare const createDelivery: import("convex/server").RegisteredMutation<"internal", {
530
+ eventType: string;
531
+ payload: any;
532
+ webhookId: import("convex/values").GenericId<"webhookConfigs">;
533
+ eventId: import("convex/values").GenericId<"cmsEvents">;
534
+ maxAttempts: number;
535
+ }, Promise<import("convex/values").GenericId<"webhookDeliveries">>>;
536
+ /**
537
+ * Internal mutation to update delivery status after an attempt.
538
+ */
539
+ export declare const updateDeliveryStatus: import("convex/server").RegisteredMutation<"internal", {
540
+ nextRetryAt?: number | undefined;
541
+ error?: string | undefined;
542
+ statusCode?: number | undefined;
543
+ responseBody?: string | undefined;
544
+ durationMs?: number | undefined;
545
+ status: "pending" | "processing" | "failed" | "delivered" | "retrying";
546
+ deliveryId: import("convex/values").GenericId<"webhookDeliveries">;
547
+ }, Promise<void>>;
548
+ /**
549
+ * Internal mutation to mark delivery as processing.
550
+ */
551
+ export declare const markDeliveryProcessing: import("convex/server").RegisteredMutation<"internal", {
552
+ deliveryId: import("convex/values").GenericId<"webhookDeliveries">;
553
+ }, Promise<void>>;
554
+ /**
555
+ * Internal action to send a webhook delivery.
556
+ * Actions are needed for HTTP requests to external services.
557
+ */
558
+ export declare const sendWebhookDelivery: import("convex/server").RegisteredAction<"internal", {
559
+ deliveryId: import("convex/values").GenericId<"webhookDeliveries">;
560
+ }, Promise<void>>;
561
+ /**
562
+ * Internal query to get delivery with webhook info.
563
+ */
564
+ export declare const getDeliveryWithWebhook: import("convex/server").RegisteredQuery<"internal", {
565
+ deliveryId: import("convex/values").GenericId<"webhookDeliveries">;
566
+ }, Promise<{
567
+ webhook: {
568
+ _id: import("convex/values").GenericId<"webhookConfigs">;
569
+ _creationTime: number;
570
+ description?: string | undefined;
571
+ contentTypes?: string[] | undefined;
572
+ deletedAt?: number | undefined;
573
+ createdBy?: string | undefined;
574
+ updatedBy?: string | undefined;
575
+ secret?: string | undefined;
576
+ resourceTypes?: ("contentEntry" | "contentType" | "mediaAsset" | "mediaFolder")[] | undefined;
577
+ headers?: any;
578
+ maxRetries?: number | undefined;
579
+ timeoutMs?: number | undefined;
580
+ name: string;
581
+ url: string;
582
+ eventTypes: string[];
583
+ enabled: boolean;
584
+ };
585
+ _id: import("convex/values").GenericId<"webhookDeliveries">;
586
+ _creationTime: number;
587
+ lastAttemptAt?: number | undefined;
588
+ nextRetryAt?: number | undefined;
589
+ lastStatusCode?: number | undefined;
590
+ lastError?: string | undefined;
591
+ lastResponseBody?: string | undefined;
592
+ lastDurationMs?: number | undefined;
593
+ deliveredAt?: number | undefined;
594
+ status: "pending" | "processing" | "failed" | "delivered" | "retrying";
595
+ eventType: string;
596
+ payload: any;
597
+ webhookId: import("convex/values").GenericId<"webhookConfigs">;
598
+ eventId: import("convex/values").GenericId<"cmsEvents">;
599
+ attemptCount: number;
600
+ maxAttempts: number;
601
+ } | null>>;
602
+ /**
603
+ * Process unprocessed events and create webhook deliveries.
604
+ *
605
+ * This mutation:
606
+ * 1. Gets unprocessed events from cmsEvents
607
+ * 2. For each event, finds matching webhook configurations
608
+ * 3. Creates delivery records for each event-webhook pair
609
+ *
610
+ * Call this periodically to queue new deliveries.
611
+ */
612
+ export declare const processEventsForDelivery: import("convex/server").RegisteredMutation<"internal", {
613
+ batchSize?: number | undefined;
614
+ }, Promise<{
615
+ eventsProcessed: number;
616
+ deliveriesCreated: number;
617
+ hasMore: boolean;
618
+ }>>;
619
+ /**
620
+ * Trigger webhook deliveries for pending/retrying items.
621
+ *
622
+ * This internal mutation schedules action calls for each pending delivery.
623
+ */
624
+ export declare const triggerPendingDeliveries: import("convex/server").RegisteredMutation<"internal", {
625
+ batchSize?: number | undefined;
626
+ }, Promise<{
627
+ deliveriesTriggered: number;
628
+ hasMore: boolean;
629
+ }>>;
630
+ /**
631
+ * Main scheduled function that processes events and triggers webhooks.
632
+ *
633
+ * This should be called periodically (e.g., every minute) to:
634
+ * 1. Create deliveries for new events
635
+ * 2. Trigger pending/retrying deliveries
636
+ */
637
+ export declare const processWebhooks: import("convex/server").RegisteredMutation<"internal", {
638
+ config?: {
639
+ batchSize?: number | undefined;
640
+ } | undefined;
641
+ }, Promise<{
642
+ eventsProcessed: number;
643
+ deliveriesCreated: number;
644
+ deliveriesTriggered: number;
645
+ hasMore: boolean;
646
+ }>>;
647
+ /**
648
+ * Schedule the next webhook processing run.
649
+ *
650
+ * Call this to set up recurring background processing.
651
+ *
652
+ * @param delayMs - Delay before next run in milliseconds
653
+ */
654
+ export declare const scheduleNextWebhookRun: import("convex/server").RegisteredMutation<"public", {
655
+ delayMs?: number | undefined;
656
+ }, Promise<{
657
+ scheduledAt: number;
658
+ }>>;
659
+ /**
660
+ * Internal mutation triggered by scheduler to process webhooks.
661
+ * This inlines the processWebhooks logic to avoid calling .handler() directly.
662
+ */
663
+ export declare const triggerWebhookCheck: import("convex/server").RegisteredMutation<"internal", {}, Promise<{
664
+ eventsProcessed: number;
665
+ deliveriesCreated: number;
666
+ deliveriesTriggered: number;
667
+ hasMore: boolean;
668
+ }>>;
669
+ /**
670
+ * Get delivery statistics for a webhook.
671
+ */
672
+ export declare const getWebhookDeliveryStats: import("convex/server").RegisteredQuery<"public", {
673
+ since?: number | undefined;
674
+ webhookId: import("convex/values").GenericId<"webhookConfigs">;
675
+ }, Promise<{
676
+ total: number;
677
+ pending: number;
678
+ processing: number;
679
+ delivered: number;
680
+ failed: number;
681
+ retrying: number;
682
+ }>>;
683
+ /**
684
+ * List recent deliveries for a webhook.
685
+ */
686
+ export declare const listWebhookDeliveries: import("convex/server").RegisteredQuery<"public", {
687
+ status?: "pending" | "processing" | "failed" | "delivered" | "retrying" | undefined;
688
+ limit?: number | undefined;
689
+ webhookId: import("convex/values").GenericId<"webhookConfigs">;
690
+ }, Promise<{
691
+ _id: import("convex/values").GenericId<"webhookDeliveries">;
692
+ _creationTime: number;
693
+ lastAttemptAt?: number | undefined;
694
+ nextRetryAt?: number | undefined;
695
+ lastStatusCode?: number | undefined;
696
+ lastError?: string | undefined;
697
+ lastResponseBody?: string | undefined;
698
+ lastDurationMs?: number | undefined;
699
+ deliveredAt?: number | undefined;
700
+ status: "pending" | "processing" | "failed" | "delivered" | "retrying";
701
+ eventType: string;
702
+ payload: any;
703
+ webhookId: import("convex/values").GenericId<"webhookConfigs">;
704
+ eventId: import("convex/values").GenericId<"cmsEvents">;
705
+ attemptCount: number;
706
+ maxAttempts: number;
707
+ }[]>>;
708
+ /**
709
+ * Get overall webhook statistics.
710
+ */
711
+ export declare const getWebhookStats: import("convex/server").RegisteredQuery<"public", {}, Promise<{
712
+ totalWebhooks: number;
713
+ activeWebhooks: number;
714
+ pendingDeliveries: number;
715
+ retryingDeliveries: number;
716
+ deliveriesLast24h: number;
717
+ successRateLast24h: number;
718
+ }>>;
719
+ /**
720
+ * Get delivery details by ID.
721
+ */
722
+ export declare const getDelivery: import("convex/server").RegisteredQuery<"public", {
723
+ deliveryId: import("convex/values").GenericId<"webhookDeliveries">;
724
+ }, Promise<{
725
+ _id: import("convex/values").GenericId<"webhookDeliveries">;
726
+ _creationTime: number;
727
+ lastAttemptAt?: number | undefined;
728
+ nextRetryAt?: number | undefined;
729
+ lastStatusCode?: number | undefined;
730
+ lastError?: string | undefined;
731
+ lastResponseBody?: string | undefined;
732
+ lastDurationMs?: number | undefined;
733
+ deliveredAt?: number | undefined;
734
+ status: "pending" | "processing" | "failed" | "delivered" | "retrying";
735
+ eventType: string;
736
+ payload: any;
737
+ webhookId: import("convex/values").GenericId<"webhookConfigs">;
738
+ eventId: import("convex/values").GenericId<"cmsEvents">;
739
+ attemptCount: number;
740
+ maxAttempts: number;
741
+ } | null>>;
742
+ /**
743
+ * Manually retry a failed delivery.
744
+ */
745
+ export declare const retryDelivery: import("convex/server").RegisteredMutation<"public", {
746
+ deliveryId: import("convex/values").GenericId<"webhookDeliveries">;
747
+ }, Promise<{
748
+ success: boolean;
749
+ message: string;
750
+ }>>;
751
+ /**
752
+ * Clean up old delivery records.
753
+ */
754
+ export declare const cleanupOldDeliveries: import("convex/server").RegisteredMutation<"public", {
755
+ retentionDays?: number | undefined;
756
+ }, Promise<{
757
+ deletedCount: number;
758
+ }>>;
759
+ /**
760
+ * Test a webhook by sending a test event.
761
+ * Useful for verifying webhook configuration before enabling.
762
+ */
763
+ export declare const testWebhook: import("convex/server").RegisteredMutation<"public", {
764
+ webhookId: import("convex/values").GenericId<"webhookConfigs">;
765
+ }, Promise<{
766
+ success: boolean;
767
+ message: string;
768
+ deliveryId: import("convex/values").GenericId<"webhookDeliveries">;
769
+ }>>;
770
+ //# sourceMappingURL=webhookTrigger.d.ts.map