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.
- package/dist/cli/commands/admin.d.ts +16 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +88 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +18 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/detectConvexUrl.d.ts +13 -0
- package/dist/cli/utils/detectConvexUrl.d.ts.map +1 -0
- package/dist/cli/utils/detectConvexUrl.js +48 -0
- package/dist/cli/utils/detectConvexUrl.js.map +1 -0
- package/dist/cli/utils/openBrowser.d.ts +7 -0
- package/dist/cli/utils/openBrowser.d.ts.map +1 -0
- package/dist/cli/utils/openBrowser.js +17 -0
- package/dist/cli/utils/openBrowser.js.map +1 -0
- package/dist/client/admin-config.d.ts +126 -0
- package/dist/client/admin-config.d.ts.map +1 -0
- package/dist/client/admin-config.js +117 -0
- package/dist/client/admin-config.js.map +1 -0
- package/dist/client/adminApi.d.ts +2273 -0
- package/dist/client/adminApi.d.ts.map +1 -0
- package/dist/client/adminApi.js +716 -0
- package/dist/client/adminApi.js.map +1 -0
- package/dist/client/agentTools.d.ts +933 -0
- package/dist/client/agentTools.d.ts.map +1 -0
- package/dist/client/agentTools.js +1004 -0
- package/dist/client/agentTools.js.map +1 -0
- package/dist/client/argTypes.d.ts +212 -0
- package/dist/client/argTypes.d.ts.map +1 -0
- package/dist/client/argTypes.js +5 -0
- package/dist/client/argTypes.js.map +1 -0
- package/dist/client/field-types.d.ts +55 -0
- package/dist/client/field-types.d.ts.map +1 -0
- package/dist/client/field-types.js +152 -0
- package/dist/client/field-types.js.map +1 -0
- package/dist/client/index.d.ts +189 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +668 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/queryBuilder.d.ts +765 -0
- package/dist/client/queryBuilder.d.ts.map +1 -0
- package/dist/client/queryBuilder.js +970 -0
- package/dist/client/queryBuilder.js.map +1 -0
- package/dist/client/schema/codegen.d.ts +128 -0
- package/dist/client/schema/codegen.d.ts.map +1 -0
- package/dist/client/schema/codegen.js +318 -0
- package/dist/client/schema/codegen.js.map +1 -0
- package/dist/client/schema/defineContentType.d.ts +221 -0
- package/dist/client/schema/defineContentType.d.ts.map +1 -0
- package/dist/client/schema/defineContentType.js +380 -0
- package/dist/client/schema/defineContentType.js.map +1 -0
- package/dist/client/schema/index.d.ts +85 -0
- package/dist/client/schema/index.d.ts.map +1 -0
- package/dist/client/schema/index.js +92 -0
- package/dist/client/schema/index.js.map +1 -0
- package/dist/client/schema/schemaDrift.d.ts +199 -0
- package/dist/client/schema/schemaDrift.d.ts.map +1 -0
- package/dist/client/schema/schemaDrift.js +340 -0
- package/dist/client/schema/schemaDrift.js.map +1 -0
- package/dist/client/schema/typedClient.d.ts +401 -0
- package/dist/client/schema/typedClient.d.ts.map +1 -0
- package/dist/client/schema/typedClient.js +269 -0
- package/dist/client/schema/typedClient.js.map +1 -0
- package/dist/client/schema/types.d.ts +477 -0
- package/dist/client/schema/types.d.ts.map +1 -0
- package/dist/client/schema/types.js +39 -0
- package/dist/client/schema/types.js.map +1 -0
- package/dist/client/types.d.ts +449 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +149 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/workflows.d.ts +51 -0
- package/dist/client/workflows.d.ts.map +1 -0
- package/dist/client/workflows.js +103 -0
- package/dist/client/workflows.js.map +1 -0
- package/dist/client/wrapper.d.ts +2198 -0
- package/dist/client/wrapper.d.ts.map +1 -0
- package/dist/client/wrapper.js +2651 -0
- package/dist/client/wrapper.js.map +1 -0
- package/dist/component/_generated/api.d.ts +124 -0
- package/dist/component/_generated/api.d.ts.map +1 -0
- package/dist/component/_generated/api.js +31 -0
- package/dist/component/_generated/api.js.map +1 -0
- package/dist/component/_generated/component.d.ts +4321 -0
- package/dist/component/_generated/component.d.ts.map +1 -0
- package/dist/component/_generated/component.js +11 -0
- package/dist/component/_generated/component.js.map +1 -0
- package/dist/component/_generated/dataModel.d.ts +46 -0
- package/dist/component/_generated/dataModel.d.ts.map +1 -0
- package/dist/component/_generated/dataModel.js +11 -0
- package/dist/component/_generated/dataModel.js.map +1 -0
- package/dist/component/_generated/server.d.ts +121 -0
- package/dist/component/_generated/server.d.ts.map +1 -0
- package/dist/component/_generated/server.js +78 -0
- package/dist/component/_generated/server.js.map +1 -0
- package/dist/component/auditLog.d.ts +410 -0
- package/dist/component/auditLog.d.ts.map +1 -0
- package/dist/component/auditLog.js +607 -0
- package/dist/component/auditLog.js.map +1 -0
- package/dist/component/authorization.d.ts +323 -0
- package/dist/component/authorization.d.ts.map +1 -0
- package/dist/component/authorization.js +464 -0
- package/dist/component/authorization.js.map +1 -0
- package/dist/component/authorizationHooks.d.ts +184 -0
- package/dist/component/authorizationHooks.d.ts.map +1 -0
- package/dist/component/authorizationHooks.js +521 -0
- package/dist/component/authorizationHooks.js.map +1 -0
- package/dist/component/bulkOperations.d.ts +200 -0
- package/dist/component/bulkOperations.d.ts.map +1 -0
- package/dist/component/bulkOperations.js +568 -0
- package/dist/component/bulkOperations.js.map +1 -0
- package/dist/component/contentEntries.d.ts +719 -0
- package/dist/component/contentEntries.d.ts.map +1 -0
- package/dist/component/contentEntries.js +1617 -0
- package/dist/component/contentEntries.js.map +1 -0
- package/dist/component/contentEntryMutations.d.ts +505 -0
- package/dist/component/contentEntryMutations.d.ts.map +1 -0
- package/dist/component/contentEntryMutations.js +1009 -0
- package/dist/component/contentEntryMutations.js.map +1 -0
- package/dist/component/contentEntryValidation.d.ts +115 -0
- package/dist/component/contentEntryValidation.d.ts.map +1 -0
- package/dist/component/contentEntryValidation.js +546 -0
- package/dist/component/contentEntryValidation.js.map +1 -0
- package/dist/component/contentLock.d.ts +328 -0
- package/dist/component/contentLock.d.ts.map +1 -0
- package/dist/component/contentLock.js +471 -0
- package/dist/component/contentLock.js.map +1 -0
- package/dist/component/contentTypeMigration.d.ts +411 -0
- package/dist/component/contentTypeMigration.d.ts.map +1 -0
- package/dist/component/contentTypeMigration.js +805 -0
- package/dist/component/contentTypeMigration.js.map +1 -0
- package/dist/component/contentTypeMutations.d.ts +975 -0
- package/dist/component/contentTypeMutations.d.ts.map +1 -0
- package/dist/component/contentTypeMutations.js +768 -0
- package/dist/component/contentTypeMutations.js.map +1 -0
- package/dist/component/contentTypes.d.ts +538 -0
- package/dist/component/contentTypes.d.ts.map +1 -0
- package/dist/component/contentTypes.js +304 -0
- package/dist/component/contentTypes.js.map +1 -0
- package/dist/component/convex.config.d.ts +42 -0
- package/dist/component/convex.config.d.ts.map +1 -0
- package/dist/component/convex.config.js +43 -0
- package/dist/component/convex.config.js.map +1 -0
- package/dist/component/documentTypes.d.ts +186 -0
- package/dist/component/documentTypes.d.ts.map +1 -0
- package/dist/component/documentTypes.js +23 -0
- package/dist/component/documentTypes.js.map +1 -0
- package/dist/component/eventEmitter.d.ts +281 -0
- package/dist/component/eventEmitter.d.ts.map +1 -0
- package/dist/component/eventEmitter.js +300 -0
- package/dist/component/eventEmitter.js.map +1 -0
- package/dist/component/exportImport.d.ts +1120 -0
- package/dist/component/exportImport.d.ts.map +1 -0
- package/dist/component/exportImport.js +931 -0
- package/dist/component/exportImport.js.map +1 -0
- package/dist/component/index.d.ts +28 -0
- package/dist/component/index.d.ts.map +1 -0
- package/dist/component/index.js +142 -0
- package/dist/component/index.js.map +1 -0
- package/dist/component/lib/deepReferenceResolver.d.ts +252 -0
- package/dist/component/lib/deepReferenceResolver.d.ts.map +1 -0
- package/dist/component/lib/deepReferenceResolver.js +601 -0
- package/dist/component/lib/deepReferenceResolver.js.map +1 -0
- package/dist/component/lib/errors.d.ts +306 -0
- package/dist/component/lib/errors.d.ts.map +1 -0
- package/dist/component/lib/errors.js +407 -0
- package/dist/component/lib/errors.js.map +1 -0
- package/dist/component/lib/index.d.ts +10 -0
- package/dist/component/lib/index.d.ts.map +1 -0
- package/dist/component/lib/index.js +33 -0
- package/dist/component/lib/index.js.map +1 -0
- package/dist/component/lib/mediaReferenceResolver.d.ts +217 -0
- package/dist/component/lib/mediaReferenceResolver.d.ts.map +1 -0
- package/dist/component/lib/mediaReferenceResolver.js +326 -0
- package/dist/component/lib/mediaReferenceResolver.js.map +1 -0
- package/dist/component/lib/metadataExtractor.d.ts +245 -0
- package/dist/component/lib/metadataExtractor.d.ts.map +1 -0
- package/dist/component/lib/metadataExtractor.js +548 -0
- package/dist/component/lib/metadataExtractor.js.map +1 -0
- package/dist/component/lib/mutationAuth.d.ts +95 -0
- package/dist/component/lib/mutationAuth.d.ts.map +1 -0
- package/dist/component/lib/mutationAuth.js +146 -0
- package/dist/component/lib/mutationAuth.js.map +1 -0
- package/dist/component/lib/queries.d.ts +17 -0
- package/dist/component/lib/queries.d.ts.map +1 -0
- package/dist/component/lib/queries.js +49 -0
- package/dist/component/lib/queries.js.map +1 -0
- package/dist/component/lib/ragContentChunker.d.ts +423 -0
- package/dist/component/lib/ragContentChunker.d.ts.map +1 -0
- package/dist/component/lib/ragContentChunker.js +897 -0
- package/dist/component/lib/ragContentChunker.js.map +1 -0
- package/dist/component/lib/referenceResolver.d.ts +175 -0
- package/dist/component/lib/referenceResolver.d.ts.map +1 -0
- package/dist/component/lib/referenceResolver.js +293 -0
- package/dist/component/lib/referenceResolver.js.map +1 -0
- package/dist/component/lib/slugGenerator.d.ts +71 -0
- package/dist/component/lib/slugGenerator.d.ts.map +1 -0
- package/dist/component/lib/slugGenerator.js +207 -0
- package/dist/component/lib/slugGenerator.js.map +1 -0
- package/dist/component/lib/slugUniqueness.d.ts +131 -0
- package/dist/component/lib/slugUniqueness.d.ts.map +1 -0
- package/dist/component/lib/slugUniqueness.js +229 -0
- package/dist/component/lib/slugUniqueness.js.map +1 -0
- package/dist/component/lib/softDelete.d.ts +18 -0
- package/dist/component/lib/softDelete.d.ts.map +1 -0
- package/dist/component/lib/softDelete.js +29 -0
- package/dist/component/lib/softDelete.js.map +1 -0
- package/dist/component/localeFallbackChain.d.ts +410 -0
- package/dist/component/localeFallbackChain.d.ts.map +1 -0
- package/dist/component/localeFallbackChain.js +467 -0
- package/dist/component/localeFallbackChain.js.map +1 -0
- package/dist/component/localeFields.d.ts +508 -0
- package/dist/component/localeFields.d.ts.map +1 -0
- package/dist/component/localeFields.js +592 -0
- package/dist/component/localeFields.js.map +1 -0
- package/dist/component/mediaAssetMutations.d.ts +235 -0
- package/dist/component/mediaAssetMutations.d.ts.map +1 -0
- package/dist/component/mediaAssetMutations.js +558 -0
- package/dist/component/mediaAssetMutations.js.map +1 -0
- package/dist/component/mediaAssets.d.ts +168 -0
- package/dist/component/mediaAssets.d.ts.map +1 -0
- package/dist/component/mediaAssets.js +618 -0
- package/dist/component/mediaAssets.js.map +1 -0
- package/dist/component/mediaFolderMutations.d.ts +642 -0
- package/dist/component/mediaFolderMutations.d.ts.map +1 -0
- package/dist/component/mediaFolderMutations.js +849 -0
- package/dist/component/mediaFolderMutations.js.map +1 -0
- package/dist/component/mediaUploadMutations.d.ts +136 -0
- package/dist/component/mediaUploadMutations.d.ts.map +1 -0
- package/dist/component/mediaUploadMutations.js +205 -0
- package/dist/component/mediaUploadMutations.js.map +1 -0
- package/dist/component/mediaVariantMutations.d.ts +468 -0
- package/dist/component/mediaVariantMutations.d.ts.map +1 -0
- package/dist/component/mediaVariantMutations.js +737 -0
- package/dist/component/mediaVariantMutations.js.map +1 -0
- package/dist/component/mediaVariants.d.ts +525 -0
- package/dist/component/mediaVariants.d.ts.map +1 -0
- package/dist/component/mediaVariants.js +661 -0
- package/dist/component/mediaVariants.js.map +1 -0
- package/dist/component/ragContentIndexer.d.ts +595 -0
- package/dist/component/ragContentIndexer.d.ts.map +1 -0
- package/dist/component/ragContentIndexer.js +794 -0
- package/dist/component/ragContentIndexer.js.map +1 -0
- package/dist/component/rateLimitHooks.d.ts +266 -0
- package/dist/component/rateLimitHooks.d.ts.map +1 -0
- package/dist/component/rateLimitHooks.js +412 -0
- package/dist/component/rateLimitHooks.js.map +1 -0
- package/dist/component/roles.d.ts +649 -0
- package/dist/component/roles.d.ts.map +1 -0
- package/dist/component/roles.js +884 -0
- package/dist/component/roles.js.map +1 -0
- package/dist/component/scheduledPublish.d.ts +182 -0
- package/dist/component/scheduledPublish.d.ts.map +1 -0
- package/dist/component/scheduledPublish.js +304 -0
- package/dist/component/scheduledPublish.js.map +1 -0
- package/dist/component/schema.d.ts +4114 -0
- package/dist/component/schema.d.ts.map +1 -0
- package/dist/component/schema.js +469 -0
- package/dist/component/schema.js.map +1 -0
- package/dist/component/taxonomies.d.ts +476 -0
- package/dist/component/taxonomies.d.ts.map +1 -0
- package/dist/component/taxonomies.js +785 -0
- package/dist/component/taxonomies.js.map +1 -0
- package/dist/component/taxonomyMutations.d.ts +206 -0
- package/dist/component/taxonomyMutations.d.ts.map +1 -0
- package/dist/component/taxonomyMutations.js +1001 -0
- package/dist/component/taxonomyMutations.js.map +1 -0
- package/dist/component/trash.d.ts +265 -0
- package/dist/component/trash.d.ts.map +1 -0
- package/dist/component/trash.js +621 -0
- package/dist/component/trash.js.map +1 -0
- package/dist/component/types.d.ts +4 -0
- package/dist/component/types.d.ts.map +1 -0
- package/dist/component/types.js +2 -0
- package/dist/component/types.js.map +1 -0
- package/dist/component/userContext.d.ts +508 -0
- package/dist/component/userContext.d.ts.map +1 -0
- package/dist/component/userContext.js +615 -0
- package/dist/component/userContext.js.map +1 -0
- package/dist/component/validation.d.ts +387 -0
- package/dist/component/validation.d.ts.map +1 -0
- package/dist/component/validation.js +1052 -0
- package/dist/component/validation.js.map +1 -0
- package/dist/component/validators.d.ts +4645 -0
- package/dist/component/validators.d.ts.map +1 -0
- package/dist/component/validators.js +641 -0
- package/dist/component/validators.js.map +1 -0
- package/dist/component/versionMutations.d.ts +216 -0
- package/dist/component/versionMutations.d.ts.map +1 -0
- package/dist/component/versionMutations.js +321 -0
- package/dist/component/versionMutations.js.map +1 -0
- package/dist/component/webhookTrigger.d.ts +770 -0
- package/dist/component/webhookTrigger.d.ts.map +1 -0
- package/dist/component/webhookTrigger.js +1413 -0
- package/dist/component/webhookTrigger.js.map +1 -0
- package/dist/react/index.d.ts +316 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +558 -0
- package/dist/react/index.js.map +1 -0
- package/dist/test.d.ts +2230 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +1107 -0
- package/dist/test.js.map +1 -0
- package/package.json +95 -0
- package/src/cli/commands/admin.ts +104 -0
- package/src/cli/index.ts +21 -0
- package/src/cli/utils/detectConvexUrl.ts +54 -0
- package/src/cli/utils/openBrowser.ts +16 -0
- package/src/client/admin-config.ts +138 -0
- package/src/client/adminApi.ts +942 -0
- package/src/client/agentTools.ts +1311 -0
- package/src/client/argTypes.ts +316 -0
- package/src/client/field-types.ts +187 -0
- package/src/client/index.ts +1301 -0
- package/src/client/queryBuilder.ts +1100 -0
- package/src/client/schema/codegen.ts +500 -0
- package/src/client/schema/defineContentType.ts +501 -0
- package/src/client/schema/index.ts +169 -0
- package/src/client/schema/schemaDrift.ts +574 -0
- package/src/client/schema/typedClient.ts +688 -0
- package/src/client/schema/types.ts +666 -0
- package/src/client/types.ts +723 -0
- package/src/client/workflows.ts +141 -0
- package/src/client/wrapper.ts +4304 -0
- package/src/component/_generated/api.ts +140 -0
- package/src/component/_generated/component.ts +5029 -0
- package/src/component/_generated/dataModel.ts +60 -0
- package/src/component/_generated/server.ts +156 -0
- package/src/component/authorization.ts +647 -0
- package/src/component/authorizationHooks.ts +668 -0
- package/src/component/bulkOperations.ts +687 -0
- package/src/component/contentEntries.ts +1976 -0
- package/src/component/contentEntryMutations.ts +1223 -0
- package/src/component/contentEntryValidation.ts +707 -0
- package/src/component/contentLock.ts +550 -0
- package/src/component/contentTypeMigration.ts +1064 -0
- package/src/component/contentTypeMutations.ts +969 -0
- package/src/component/contentTypes.ts +346 -0
- package/src/component/convex.config.ts +44 -0
- package/src/component/documentTypes.ts +240 -0
- package/src/component/eventEmitter.ts +485 -0
- package/src/component/exportImport.ts +1169 -0
- package/src/component/index.ts +491 -0
- package/src/component/lib/deepReferenceResolver.ts +999 -0
- package/src/component/lib/errors.ts +816 -0
- package/src/component/lib/index.ts +145 -0
- package/src/component/lib/mediaReferenceResolver.ts +495 -0
- package/src/component/lib/metadataExtractor.ts +792 -0
- package/src/component/lib/mutationAuth.ts +199 -0
- package/src/component/lib/queries.ts +79 -0
- package/src/component/lib/ragContentChunker.ts +1371 -0
- package/src/component/lib/referenceResolver.ts +430 -0
- package/src/component/lib/slugGenerator.ts +262 -0
- package/src/component/lib/slugUniqueness.ts +333 -0
- package/src/component/lib/softDelete.ts +44 -0
- package/src/component/localeFallbackChain.ts +673 -0
- package/src/component/localeFields.ts +896 -0
- package/src/component/mediaAssetMutations.ts +725 -0
- package/src/component/mediaAssets.ts +932 -0
- package/src/component/mediaFolderMutations.ts +1046 -0
- package/src/component/mediaUploadMutations.ts +224 -0
- package/src/component/mediaVariantMutations.ts +900 -0
- package/src/component/mediaVariants.ts +793 -0
- package/src/component/ragContentIndexer.ts +1067 -0
- package/src/component/rateLimitHooks.ts +572 -0
- package/src/component/roles.ts +1360 -0
- package/src/component/scheduledPublish.ts +358 -0
- package/src/component/schema.ts +617 -0
- package/src/component/taxonomies.ts +949 -0
- package/src/component/taxonomyMutations.ts +1210 -0
- package/src/component/trash.ts +724 -0
- package/src/component/userContext.ts +898 -0
- package/src/component/validation.ts +1388 -0
- package/src/component/validators.ts +949 -0
- package/src/component/versionMutations.ts +392 -0
- package/src/component/webhookTrigger.ts +1922 -0
- package/src/react/index.ts +898 -0
- 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
|