From fdee6cdb40f02cd252d91cc925d9157eb5eb76d4 Mon Sep 17 00:00:00 2001 From: GalT <39020298+tatarco@users.noreply.github.com> Date: Tue, 26 Nov 2024 08:35:19 +0100 Subject: [PATCH] relaunch --- .gitignore | 7 - .speakeasy/gen.lock | 16 +- .speakeasy/gen.yaml | 2 +- .../speakeasy-modifications-overlay.yaml | 335 +- .../temp/a32d33/openapi/bundle/openapi.json | 1 + .speakeasy/temp/applied_hdbdDBZBfI.yaml | 8807 ++++++++++++ .speakeasy/temp/downloaded_HKVFJyjOtH.yaml | 9166 ++++++++++++ .speakeasy/temp/overlay_kQfMvHVybU.yaml | 8807 ++++++++++++ .speakeasy/workflow.lock | 12 +- FUNCTIONS.md | 2 - README.md | 27 +- USAGE.md | 11 +- docs/sdks/novu/README.md | 28 +- jsr.json | 2 +- package-lock.json | 4 +- package.json | 2 +- sources/code-samples.yaml | 8 +- sources/json-development.json | 2 +- sources/openapi.sdk.json | 11866 ++++------------ .../{cancelByTransactionId.ts => cancel.ts} | 2 +- src/lib/config.ts | 6 +- src/sdk/sdk.ts | 6 +- 22 files changed, 29378 insertions(+), 9741 deletions(-) create mode 100644 .speakeasy/temp/a32d33/openapi/bundle/openapi.json create mode 100644 .speakeasy/temp/applied_hdbdDBZBfI.yaml create mode 100644 .speakeasy/temp/downloaded_HKVFJyjOtH.yaml create mode 100644 .speakeasy/temp/overlay_kQfMvHVybU.yaml rename src/funcs/{cancelByTransactionId.ts => cancel.ts} (98%) diff --git a/.gitignore b/.gitignore index da4f0964..09c4b62a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,10 @@ -<<<<<<< Updated upstream /__tests__ -======= ->>>>>>> Stashed changes /funcs /core.* /esm /dist /.tshy /.tshy-* -<<<<<<< Updated upstream -======= -/__tests__ ->>>>>>> Stashed changes /models /models/errors /types diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 55f1c65a..e4a9c9a2 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,18 +1,18 @@ lockVersion: 2.0.0 id: 6bff3a53-3f0b-40b4-942f-ff70dc583ae5 management: - docChecksum: 94d6ad7aa34a4727c08897680b358b24 + docChecksum: 10932993b99f723bb4dec08261897258 docVersion: "1.0" - speakeasyVersion: 1.445.2 - generationVersion: 2.461.4 - releaseVersion: 0.0.1-alpha.21 - configChecksum: fabf13d55adfbfa964856669a7e51924 + speakeasyVersion: 1.446.1 + generationVersion: 2.462.1 + releaseVersion: 0.0.1-alpha.25 + configChecksum: 3e76faf756c7c8551645e6079f12b9af published: true features: typescript: additionalDependencies: 0.1.0 constsAndDefaults: 0.1.11 - core: 3.18.6 + core: 3.18.7 defaultEnabledRetries: 0.1.0 deprecations: 2.81.1 enumUnions: 0.1.0 @@ -30,7 +30,6 @@ features: responseFormat: 0.2.3 retries: 2.83.0 sdkHooks: 0.2.0 - tests: 0.7.0 unions: 2.85.8 generatedFiles: - .eslintrc.cjs @@ -321,7 +320,7 @@ generatedFiles: - jsr.json - package.json - src/core.ts - - src/funcs/cancelByTransactionId.ts + - src/funcs/cancel.ts - src/funcs/environmentsApiKeysList.ts - src/funcs/environmentsList.ts - src/funcs/environmentsRetrieve.ts @@ -998,3 +997,4 @@ examples: topicKey: "" requestBody: application/json: {"subscribers": ["", ""]} +generatedTests: {} diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 2f8511a1..fff16e97 100755 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -13,7 +13,7 @@ generation: oAuth2ClientCredentialsEnabled: false oAuth2PasswordEnabled: false typescript: - version: 0.0.1-alpha.21 + version: 0.0.1-alpha.25 additionalDependencies: dependencies: {} devDependencies: {} diff --git a/.speakeasy/speakeasy-modifications-overlay.yaml b/.speakeasy/speakeasy-modifications-overlay.yaml index b9e34a58..46aeb830 100644 --- a/.speakeasy/speakeasy-modifications-overlay.yaml +++ b/.speakeasy/speakeasy-modifications-overlay.yaml @@ -1,73 +1,73 @@ overlay: 1.0.0 info: title: Speakeasy Modifications - version: 0.0.5 + version: 0.0.6 x-speakeasy-metadata: after: "" before: "" type: speakeasy-modifications actions: - - target: $["paths"]["/v1/subscribers/{subscriberId}"]["delete"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/preferences"]["patch"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.SubscribersController_removeSubscriber() - after: sdk.subscribers.delete() + before: sdk.Subscribers.Preferences.updateGlobal() + after: sdk.subscribersPreferences.updateGlobal() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/notification-groups/{id}"]["get"] + - target: $["paths"]["/v1/notification-groups/{id}"]["delete"] x-speakeasy-metadata: type: method-name - before: sdk.Workflow groups.NotificationGroupsController_getNotificationGroup() - after: sdk.workflowGroups.get() + before: sdk.Workflow groups.NotificationGroupsController_deleteNotificationGroup() + after: sdk.workflowGroups.delete() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/notifications"]["get"] + - target: $["paths"]["/v1/events/trigger/{transactionId}"]["delete"] x-speakeasy-metadata: type: method-name - before: sdk.Notifications.NotificationsController_listNotifications() - after: sdk.notifications.list() - reviewed_at: 1732386050400 - created_at: 1732385969423 + before: sdk.Events.cancel() + after: sdk.events.cancelByTransactionId() + reviewed_at: 1732563929240 + created_at: 1732563888541 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/credentials"]["patch"] + - target: $["paths"]["/v1/integrations/webhook/provider/{providerOrIntegrationId}/status"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Credentials.append() - after: sdk.subscribers.credentials.append() + before: sdk.Integrations.Webhooks.IntegrationsController_getWebhookSupportStatus() + after: sdk.integrationsWebhooks.getStatus() reviewed_at: 1732386050400 - created_at: 1732385969423 + created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/topics"]["get"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/credentials/{providerId}/oauth"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Topics.TopicsController_listTopics() - after: sdk.topics.getAll() + before: sdk.Subscribers.Authentication.chatAccessOauth() + after: sdk.subscribers.authentication.handleOauth() reviewed_at: 1732386050400 - created_at: 1732385969424 + created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}"]["put"] + - target: $["paths"]["/v1/topics/{topicKey}/subscribers/{externalSubscriberId}"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.SubscribersController_updateSubscriber() - after: sdk.subscribers.update() + before: sdk.Topics.Subscribers.TopicsController_getTopicSubscriber() + after: sdk.topics.subscribers.check() reviewed_at: 1732386050400 - created_at: 1732385969423 + created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/integrations/{integrationId}"]["delete"] + - target: $["paths"]["/v1/topics/{topicKey}"]["delete"] x-speakeasy-metadata: type: method-name - before: sdk.Integrations.IntegrationsController_removeIntegration() - after: sdk.integrations.delete() + before: sdk.Topics.TopicsController_deleteTopic() + after: sdk.topics.delete() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/notifications/graph/stats"]["get"] + - target: $["paths"]["/v1/notifications/stats"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Notifications.Stats.graph() - after: sdk.notificationsStats.get() + before: sdk.Notifications.Stats.NotificationsController_getActivityStats() + after: sdk.notifications.stats.get() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true @@ -79,107 +79,99 @@ actions: reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/messages/mark-all"]["post"] - x-speakeasy-metadata: - type: method-name - before: sdk.Subscribers.Messages.markAll() - after: sdk.subscribersMessages.markAll() - reviewed_at: 1732386050400 - created_at: 1732385969424 - disabled: true - - target: $["paths"]["/v1/environments"]["get"] + - target: $["paths"]["/v1/integrations"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Environments.EnvironmentsControllerV1_listMyEnvironments() - after: sdk.environments.getAll() + before: sdk.Integrations.IntegrationsController_listIntegrations() + after: sdk.integrations.list() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/topics/{topicKey}"]["delete"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/preferences/{parameter}"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Topics.TopicsController_deleteTopic() - after: sdk.topics.delete() + before: sdk.Subscribers.Preferences.retrieveByLevel() + after: sdk.subscribers.preferences.getByLevel() reviewed_at: 1732386050400 - created_at: 1732385969423 + created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/topics"]["post"] + - target: $["paths"]["/v1/environments/me"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Topics.TopicsController_createTopic() - after: sdk.topics.create() + before: sdk.Environments.EnvironmentsControllerV1_getCurrentEnvironment() + after: sdk.environments.getCurrent() reviewed_at: 1732386050400 - created_at: 1732385969423 + created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/notifications/stats"]["get"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/notifications/feed"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Notifications.Stats.NotificationsController_getActivityStats() - after: sdk.notifications.stats.get() + before: sdk.Subscribers.Notifications.SubscribersController_getNotificationsFeed() + after: sdk.subscribers.notifications.getFeed() reviewed_at: 1732386050400 - created_at: 1732385969423 + created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}"]["get"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/preferences/{parameter}"]["patch"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.SubscribersController_getSubscriber() - after: sdk.subscribers.get() + before: sdk.Subscribers.Preferences.SubscribersController_updateSubscriberPreference() + after: sdk.subscribers.preferences.update() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/integrations"]["post"] + - target: $["paths"]["/v1/notification-groups/{id}"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Integrations.IntegrationsController_createIntegration() - after: sdk.integrations.create() + before: sdk.Workflow groups.NotificationGroupsController_getNotificationGroup() + after: sdk.workflowGroups.get() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/preferences"]["patch"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/credentials"]["patch"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Preferences.updateGlobal() - after: sdk.subscribersPreferences.updateGlobal() + before: sdk.Subscribers.Credentials.append() + after: sdk.subscribers.credentials.append() reviewed_at: 1732386050400 - created_at: 1732385969424 + created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/environments/api-keys"]["get"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/preferences"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Environments.ApiKeys.EnvironmentsControllerV1_listOrganizationApiKeys() - after: sdk.environments.apiKeys.list() + before: sdk.Subscribers.Preferences.SubscribersController_listSubscriberPreferences() + after: sdk.subscribers.preferences.get() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/execution-details"]["get"] + - target: $["paths"]["/v1/integrations/{integrationId}"]["put"] x-speakeasy-metadata: type: method-name - before: sdk.Execution Details.ExecutionDetailsController_getExecutionDetailsForNotification() - after: sdk.executionDetails.get() + before: sdk.Integrations.IntegrationsController_updateIntegrationById() + after: sdk.integrations.update() reviewed_at: 1732386050400 - created_at: 1732385969424 + created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/topics/{topicKey}"]["get"] + - target: $["paths"]["/v1/notification-groups/{id}"]["patch"] x-speakeasy-metadata: type: method-name - before: sdk.Topics.TopicsController_getTopic() - after: sdk.topics.get() + before: sdk.Workflow groups.NotificationGroupsController_updateNotificationGroup() + after: sdk.workflowGroups.update() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/notification-groups"]["post"] + - target: $["paths"]["/v1/environments"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Workflow groups.NotificationGroupsController_createNotificationGroup() - after: sdk.workflowGroups.create() + before: sdk.Environments.EnvironmentsControllerV1_listMyEnvironments() + after: sdk.environments.getAll() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/credentials/{providerId}"]["delete"] + - target: $["paths"]["/v1/notification-groups"]["post"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Credentials.SubscribersController_deleteSubscriberCredentials() - after: sdk.subscribers.credentials.delete() + before: sdk.Workflow groups.NotificationGroupsController_createNotificationGroup() + after: sdk.workflowGroups.create() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true @@ -191,78 +183,93 @@ actions: reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/integrations/{integrationId}"]["put"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/credentials"]["put"] x-speakeasy-metadata: type: method-name - before: sdk.Integrations.IntegrationsController_updateIntegrationById() - after: sdk.integrations.update() + before: sdk.Subscribers.Credentials.SubscribersController_updateSubscriberChannel() + after: sdk.subscribers.credentials.update() reviewed_at: 1732386050400 - created_at: 1732385969423 + created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/notification-groups"]["get"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/messages/mark-as"]["post"] x-speakeasy-metadata: type: method-name - before: sdk.Workflow groups.NotificationGroupsController_listNotificationGroups() - after: sdk.workflowGroups.list() + before: sdk.Subscribers.Messages.markAllAs() + after: sdk.subscribers.messages.mark() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/online-status"]["patch"] + - target: $["paths"]["/v1/integrations/{integrationId}/set-primary"]["post"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.properties.updateOnlineFlag() - after: sdk.subscribers.properties.updateOnlineStatus() + before: sdk.Integrations.setAsPrimary() + after: sdk.integrations.setPrimary() reviewed_at: 1732386050400 - created_at: 1732385969424 + created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/credentials/{providerId}/oauth/callback"]["get"] + - target: $["paths"]["/v1/notifications"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Authentication.chatAccessOauthCallBack() - after: sdk.subscribers.authentication.handleOauthCallback() + before: sdk.Notifications.NotificationsController_listNotifications() + after: sdk.notifications.list() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/integrations"]["get"] + - target: $["paths"]["/v1/notifications/graph/stats"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Integrations.IntegrationsController_listIntegrations() - after: sdk.integrations.list() + before: sdk.Notifications.Stats.graph() + after: sdk.notificationsStats.get() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/notification-groups/{id}"]["delete"] + - target: $["paths"]["/v1/notifications/{notificationId}"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Workflow groups.NotificationGroupsController_deleteNotificationGroup() - after: sdk.workflowGroups.delete() + before: sdk.Notifications.NotificationsController_getNotification() + after: sdk.notifications.get() + reviewed_at: 1732386050400 + created_at: 1732385969423 + disabled: true + - target: $["paths"]["/v1/topics/{topicKey}/subscribers/removal"]["post"] + x-speakeasy-metadata: + type: method-name + before: sdk.Topics.Subscribers.TopicsController_removeSubscribers() + after: sdk.topics.subscribers.remove() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/notification-groups/{id}"]["patch"] + - target: $["paths"]["/v1/subscribers/{subscriberId}"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Workflow groups.NotificationGroupsController_updateNotificationGroup() - after: sdk.workflowGroups.update() + before: sdk.Subscribers.SubscribersController_getSubscriber() + after: sdk.subscribers.get() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/events/trigger/{transactionId}"]["delete"] - update: - x-speakeasy-name-override: cancelByTransactionId + - target: $["paths"]["/v1/topics/{topicKey}"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Events.cancel() - after: sdk.events.cancelByTransactionId() - reviewed_at: 1732563929240 - created_at: 1732563888541 - - target: $["paths"]["/v1/integrations/webhook/provider/{providerOrIntegrationId}/status"]["get"] + before: sdk.Topics.TopicsController_getTopic() + after: sdk.topics.get() + reviewed_at: 1732386050400 + created_at: 1732385969423 + disabled: true + - target: $["paths"]["/v1/subscribers/{subscriberId}/credentials/{providerId}"]["delete"] x-speakeasy-metadata: type: method-name - before: sdk.Integrations.Webhooks.IntegrationsController_getWebhookSupportStatus() - after: sdk.integrationsWebhooks.getStatus() + before: sdk.Subscribers.Credentials.SubscribersController_deleteSubscriberCredentials() + after: sdk.subscribers.credentials.delete() reviewed_at: 1732386050400 - created_at: 1732385969424 + created_at: 1732385969423 + disabled: true + - target: $["paths"]["/v1/subscribers/{subscriberId}/credentials/{providerId}/oauth/callback"]["get"] + x-speakeasy-metadata: + type: method-name + before: sdk.Subscribers.Authentication.chatAccessOauthCallBack() + after: sdk.subscribers.authentication.handleOauthCallback() + reviewed_at: 1732386050400 + created_at: 1732385969423 disabled: true - target: $["paths"]["/v1/subscribers"]["get"] x-speakeasy-metadata: @@ -272,35 +279,35 @@ actions: reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/credentials/{providerId}/oauth"]["get"] + - target: $["paths"]["/v1/topics"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Authentication.chatAccessOauth() - after: sdk.subscribers.authentication.handleOauth() + before: sdk.Topics.TopicsController_listTopics() + after: sdk.topics.getAll() reviewed_at: 1732386050400 - created_at: 1732385969423 + created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/subscribers"]["post"] + - target: $["paths"]["/v1/subscribers/{subscriberId}"]["put"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.SubscribersController_createSubscriber() - after: sdk.subscribers.create() + before: sdk.Subscribers.SubscribersController_updateSubscriber() + after: sdk.subscribers.update() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/preferences/{parameter}"]["get"] + - target: $["paths"]["/v1/environments/api-keys"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Preferences.retrieveByLevel() - after: sdk.subscribers.preferences.getByLevel() + before: sdk.Environments.ApiKeys.EnvironmentsControllerV1_listOrganizationApiKeys() + after: sdk.environments.apiKeys.list() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/credentials"]["put"] + - target: $["paths"]["/v1/notification-groups"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Credentials.SubscribersController_updateSubscriberChannel() - after: sdk.subscribers.credentials.update() + before: sdk.Workflow groups.NotificationGroupsController_listNotificationGroups() + after: sdk.workflowGroups.list() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true @@ -312,91 +319,83 @@ actions: reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/preferences"]["get"] + - target: $["paths"]["/v1/messages/{messageId}"]["delete"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Preferences.SubscribersController_listSubscriberPreferences() - after: sdk.subscribers.preferences.get() + before: sdk.Messages.MessagesController_deleteMessage() + after: sdk.messages.delete() reviewed_at: 1732386050400 - created_at: 1732385969424 + created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}"]["post"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/messages/mark-all"]["post"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Messages.updateAsSeen() - after: sdk.subscribersMessages.updateAsSeen() + before: sdk.Subscribers.Messages.markAll() + after: sdk.subscribersMessages.markAll() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/topics/{topicKey}/subscribers/{externalSubscriberId}"]["get"] + - target: $["paths"]["/v1/topics"]["post"] x-speakeasy-metadata: type: method-name - before: sdk.Topics.Subscribers.TopicsController_getTopicSubscriber() - after: sdk.topics.subscribers.check() + before: sdk.Topics.TopicsController_createTopic() + after: sdk.topics.create() reviewed_at: 1732386050400 - created_at: 1732385969424 + created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/environments/me"]["get"] + - target: $["paths"]["/v1/execution-details"]["get"] x-speakeasy-metadata: type: method-name - before: sdk.Environments.EnvironmentsControllerV1_getCurrentEnvironment() - after: sdk.environments.getCurrent() + before: sdk.Execution Details.ExecutionDetailsController_getExecutionDetailsForNotification() + after: sdk.executionDetails.get() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/messages/mark-as"]["post"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/online-status"]["patch"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Messages.markAllAs() - after: sdk.subscribers.messages.mark() + before: sdk.Subscribers.properties.updateOnlineFlag() + after: sdk.subscribers.properties.updateOnlineStatus() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/integrations/{integrationId}/set-primary"]["post"] + - target: $["paths"]["/v1/subscribers/{subscriberId}"]["delete"] x-speakeasy-metadata: type: method-name - before: sdk.Integrations.setAsPrimary() - after: sdk.integrations.setPrimary() + before: sdk.Subscribers.SubscribersController_removeSubscriber() + after: sdk.subscribers.delete() reviewed_at: 1732386050400 - created_at: 1732385969423 + created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/notifications/feed"]["get"] + - target: $["paths"]["/v1/integrations"]["post"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Notifications.SubscribersController_getNotificationsFeed() - after: sdk.subscribers.notifications.getFeed() + before: sdk.Integrations.IntegrationsController_createIntegration() + after: sdk.integrations.create() reviewed_at: 1732386050400 created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/notifications/{notificationId}"]["get"] + - target: $["paths"]["/v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}"]["post"] x-speakeasy-metadata: type: method-name - before: sdk.Notifications.NotificationsController_getNotification() - after: sdk.notifications.get() + before: sdk.Subscribers.Messages.updateAsSeen() + after: sdk.subscribersMessages.updateAsSeen() reviewed_at: 1732386050400 - created_at: 1732385969423 + created_at: 1732385969424 disabled: true - - target: $["paths"]["/v1/messages/{messageId}"]["delete"] + - target: $["paths"]["/v1/integrations/{integrationId}"]["delete"] x-speakeasy-metadata: type: method-name - before: sdk.Messages.MessagesController_deleteMessage() - after: sdk.messages.delete() + before: sdk.Integrations.IntegrationsController_removeIntegration() + after: sdk.integrations.delete() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true - - target: $["paths"]["/v1/topics/{topicKey}/subscribers/removal"]["post"] - x-speakeasy-metadata: - type: method-name - before: sdk.Topics.Subscribers.TopicsController_removeSubscribers() - after: sdk.topics.subscribers.remove() - reviewed_at: 1732386050400 - created_at: 1732385969424 - disabled: true - - target: $["paths"]["/v1/subscribers/{subscriberId}/preferences/{parameter}"]["patch"] + - target: $["paths"]["/v1/subscribers"]["post"] x-speakeasy-metadata: type: method-name - before: sdk.Subscribers.Preferences.SubscribersController_updateSubscriberPreference() - after: sdk.subscribers.preferences.update() + before: sdk.Subscribers.SubscribersController_createSubscriber() + after: sdk.subscribers.create() reviewed_at: 1732386050400 created_at: 1732385969423 disabled: true diff --git a/.speakeasy/temp/a32d33/openapi/bundle/openapi.json b/.speakeasy/temp/a32d33/openapi/bundle/openapi.json new file mode 100644 index 00000000..079d0850 --- /dev/null +++ b/.speakeasy/temp/a32d33/openapi/bundle/openapi.json @@ -0,0 +1 @@ +{"openapi": "3.0.0", "paths": {"/v1/environments/me": {"get": {"operationId": "EnvironmentsControllerV1_getCurrentEnvironment", "summary": "Get current environment", "parameters": [], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EnvironmentResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Environments"], "security": [{"api-key": []}]}}, "/v1/environments": {"get": {"operationId": "EnvironmentsControllerV1_listMyEnvironments", "summary": "Get environments", "parameters": [], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/EnvironmentResponseDto"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Environments"], "security": [{"api-key": []}]}}, "/v1/environments/api-keys": {"get": {"operationId": "EnvironmentsControllerV1_listOrganizationApiKeys", "x-speakeasy-group": "Environments.ApiKeys", "summary": "Get api keys", "parameters": [], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ApiKey"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Environments"], "security": [{"api-key": []}]}}, "/v1/execution-details": {"get": {"operationId": "ExecutionDetailsController_getExecutionDetailsForNotification", "summary": "Get execution details", "parameters": [{"name": "notificationId", "required": true, "in": "query", "schema": {"type": "string"}}, {"name": "subscriberId", "required": true, "in": "query", "schema": {"type": "string"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ExecutionDetailsResponseDto"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Execution Details"], "security": [{"api-key": []}]}}, "/v1/events/trigger": {"post": {"operationId": "EventsController_trigger", "x-speakeasy-group": "", "x-speakeasy-usage-example": {"title": "Trigger Notification Event"}, "x-speakeasy-name-override": "trigger", "summary": "Trigger event", "description": "\n Trigger event is the main (and only) way to send notifications to subscribers. \n The trigger identifier is used to match the particular workflow associated with it. \n Additional information can be passed according the body interface below.\n ", "parameters": [], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TriggerEventRequestDto"}}}}, "responses": {"201": {"description": "Created", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TriggerEventResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Events"], "security": [{"api-key": []}]}}, "/v1/events/trigger/bulk": {"post": {"operationId": "EventsController_triggerBulk", "x-speakeasy-group": "", "x-speakeasy-usage-example": {"title": "Trigger Notification Events in Bulk"}, "x-speakeasy-name-override": "triggerBulk", "summary": "Bulk trigger event", "description": "\n Using this endpoint you can trigger multiple events at once, to avoid multiple calls to the API.\n The bulk API is limited to 100 events per request.\n ", "parameters": [], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkTriggerEventDto"}}}}, "responses": {"201": {"description": "Created", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/TriggerEventResponseDto"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Events"], "security": [{"api-key": []}]}}, "/v1/events/trigger/broadcast": {"post": {"operationId": "EventsController_broadcastEventToAll", "x-speakeasy-group": "", "x-speakeasy-usage-example": {"title": "Broadcast Event to All"}, "x-speakeasy-name-override": "triggerBroadcast", "summary": "Broadcast event to all", "description": "Trigger a broadcast event to all existing subscribers, could be used to send announcements, etc.\n\n In the future could be used to trigger events to a subset of subscribers based on defined filters.", "parameters": [], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TriggerEventToAllRequestDto"}}}}, "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TriggerEventResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Events"], "security": [{"api-key": []}]}}, "/v1/events/trigger/{transactionId}": {"delete": {"operationId": "EventsController_cancel", "x-speakeasy-group": "", "x-speakeasy-usage-example": {"title": "Cancel Triggered Event"}, "x-speakeasy-name-override": "cancelByTransactionId", "summary": "Cancel triggered event", "description": "\n Using a previously generated transactionId during the event trigger,\n will cancel any active or pending workflows. This is useful to cancel active digests, delays etc...\n ", "parameters": [{"name": "transactionId", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"200": {"headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "description": "", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DataBooleanDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Events"], "security": [{"api-key": []}]}}, "/v1/notifications": {"get": {"operationId": "NotificationsController_listNotifications", "summary": "Get notifications", "parameters": [{"name": "channels", "required": true, "in": "query", "schema": {"type": "array", "items": {"type": "string", "enum": ["in_app", "email", "sms", "chat", "push"]}}}, {"name": "templates", "required": true, "in": "query", "schema": {"type": "array", "items": {"type": "string"}}}, {"name": "emails", "required": true, "in": "query", "schema": {"type": "array", "items": {"type": "string"}}}, {"name": "search", "required": true, "in": "query", "deprecated": true, "schema": {"type": "string"}}, {"name": "subscriberIds", "required": true, "in": "query", "schema": {"type": "array", "items": {"type": "string"}}}, {"name": "page", "required": false, "in": "query", "schema": {"default": 0, "type": "number"}}, {"name": "transactionId", "required": false, "in": "query", "schema": {"type": "string"}}], "responses": {"200": {"headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "description": "", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ActivitiesResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Notifications"], "security": [{"api-key": []}]}}, "/v1/notifications/stats": {"get": {"operationId": "NotificationsController_getActivityStats", "x-speakeasy-group": "Notifications.Stats", "summary": "Get notification statistics", "parameters": [], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ActivityStatsResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Notifications"], "security": [{"api-key": []}]}}, "/v1/notifications/graph/stats": {"get": {"operationId": "NotificationsController_getActivityGraphStats", "x-speakeasy-name-override": "graph", "x-speakeasy-group": "Notifications.Stats", "summary": "Get notification graph statistics", "parameters": [{"name": "days", "required": false, "in": "query", "schema": {"type": "number"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ActivityGraphStatesResponse"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Notifications"], "security": [{"api-key": []}]}}, "/v1/notifications/{notificationId}": {"get": {"operationId": "NotificationsController_getNotification", "summary": "Get notification", "parameters": [{"name": "notificationId", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ActivityNotificationResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Notifications"], "security": [{"api-key": []}]}}, "/v1/notification-groups": {"post": {"operationId": "NotificationGroupsController_createNotificationGroup", "summary": "Create workflow group", "description": "workflow group was previously named notification group", "parameters": [], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateNotificationGroupRequestDto"}}}}, "responses": {"201": {"description": "Created", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotificationGroupResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Workflow groups"], "security": [{"api-key": []}]}, "get": {"operationId": "NotificationGroupsController_listNotificationGroups", "summary": "Get workflow groups", "description": "workflow group was previously named notification group", "parameters": [], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/NotificationGroupResponseDto"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Workflow groups"], "security": [{"api-key": []}]}}, "/v1/notification-groups/{id}": {"get": {"operationId": "NotificationGroupsController_getNotificationGroup", "summary": "Get workflow group", "description": "workflow group was previously named notification group", "parameters": [{"name": "id", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotificationGroupResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Workflow groups"], "security": [{"api-key": []}]}, "patch": {"operationId": "NotificationGroupsController_updateNotificationGroup", "summary": "Update workflow group", "description": "workflow group was previously named notification group", "parameters": [{"name": "id", "required": true, "in": "path", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateNotificationGroupRequestDto"}}}}, "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotificationGroupResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Workflow groups"], "security": [{"api-key": []}]}, "delete": {"operationId": "NotificationGroupsController_deleteNotificationGroup", "summary": "Delete workflow group", "description": "workflow group was previously named notification group", "parameters": [{"name": "id", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteNotificationGroupResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Workflow groups"], "security": [{"api-key": []}]}}, "/v1/integrations": {"get": {"operationId": "IntegrationsController_listIntegrations", "summary": "Get integrations", "description": "Return all the integrations the user has created for that organization. Review v.0.17.0 changelog for a breaking change", "parameters": [], "responses": {"200": {"description": "The list of integrations belonging to the organization that are successfully returned.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/IntegrationResponseDto"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Integrations"], "security": [{"api-key": []}]}, "post": {"operationId": "IntegrationsController_createIntegration", "summary": "Create integration", "description": "Create an integration for the current environment the user is based on the API key provided", "parameters": [], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateIntegrationRequestDto"}}}}, "responses": {"201": {"description": "Created", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IntegrationResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Integrations"], "security": [{"api-key": []}]}}, "/v1/integrations/active": {"get": {"operationId": "IntegrationsController_getActiveIntegrations", "x-speakeasy-name-override": "listActive", "summary": "Get active integrations", "description": "Return all the active integrations the user has created for that organization. Review v.0.17.0 changelog for a breaking change", "parameters": [], "responses": {"200": {"description": "The list of active integrations belonging to the organization that are successfully returned.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/IntegrationResponseDto"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Integrations"], "security": [{"api-key": []}]}}, "/v1/integrations/webhook/provider/{providerOrIntegrationId}/status": {"get": {"operationId": "IntegrationsController_getWebhookSupportStatus", "x-speakeasy-group": "Integrations.Webhooks", "summary": "Get webhook support status for provider", "description": "Return the status of the webhook for this provider, if it is supported or if it is not based on a boolean value", "parameters": [{"name": "providerOrIntegrationId", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"200": {"description": "The status of the webhook for the provider requested", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "boolean"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Integrations"], "security": [{"api-key": []}]}}, "/v1/integrations/{integrationId}": {"put": {"operationId": "IntegrationsController_updateIntegrationById", "summary": "Update integration", "parameters": [{"name": "integrationId", "required": true, "in": "path", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateIntegrationRequestDto"}}}}, "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IntegrationResponseDto"}}}}, "404": {"description": "The integration with the integrationId provided does not exist in the database.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Integrations"], "security": [{"api-key": []}]}, "delete": {"operationId": "IntegrationsController_removeIntegration", "summary": "Delete integration", "parameters": [{"name": "integrationId", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/IntegrationResponseDto"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Integrations"], "security": [{"api-key": []}]}}, "/v1/integrations/{integrationId}/set-primary": {"post": {"operationId": "IntegrationsController_setIntegrationAsPrimary", "x-speakeasy-name-override": "setAsPrimary", "summary": "Set integration as primary", "parameters": [{"name": "integrationId", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IntegrationResponseDto"}}}}, "404": {"description": "The integration with the integrationId provided does not exist in the database.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Integrations"], "security": [{"api-key": []}]}}, "/v1/subscribers": {"get": {"operationId": "SubscribersController_listSubscribers", "x-speakeasy-pagination": {"type": "offsetLimit", "inputs": [{"name": "page", "in": "parameters", "type": "page"}, {"name": "limit", "in": "parameters", "type": "limit"}], "outputs": {"results": "$.data.resultArray"}}, "summary": "Get subscribers", "description": "Returns a list of subscribers, could paginated using the `page` and `limit` query parameter", "parameters": [{"name": "page", "required": false, "in": "query", "schema": {"type": "number"}}, {"name": "limit", "required": false, "in": "query", "schema": {"maximum": 100, "default": 10, "type": "number"}}], "responses": {"200": {"headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "description": "", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/PaginatedResponseDto"}, {"properties": {"data": {"type": "array", "items": {"$ref": "#/components/schemas/SubscriberResponseDto"}}}}]}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}, "post": {"operationId": "SubscribersController_createSubscriber", "summary": "Create subscriber", "description": "Creates a subscriber entity, in the Novu platform. The subscriber will be later used to receive notifications, and access notification feeds. Communication credentials such as email, phone number, and 3 rd party credentials i.e slack tokens could be later associated to this entity.", "parameters": [], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateSubscriberRequestDto"}}}}, "responses": {"201": {"description": "Created", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SubscriberResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}": {"get": {"operationId": "SubscribersController_getSubscriber", "summary": "Get subscriber", "description": "Get subscriber by your internal id used to identify the subscriber", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}, {"name": "includeTopics", "required": false, "in": "query", "description": "Includes the topics associated with the subscriber", "schema": {"type": "string"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SubscriberResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}, "put": {"operationId": "SubscribersController_updateSubscriber", "summary": "Update subscriber", "description": "Used to update the subscriber entity with new information", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateSubscriberRequestDto"}}}}, "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SubscriberResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}, "delete": {"operationId": "SubscribersController_removeSubscriber", "summary": "Delete subscriber", "description": "Deletes a subscriber entity from the Novu platform", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteSubscriberResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/bulk": {"post": {"operationId": "SubscribersController_bulkCreateSubscribers", "x-speakeasy-name-override": "createBulk", "summary": "Bulk create subscribers", "description": "\n Using this endpoint you can create multiple subscribers at once, to avoid multiple calls to the API.\n The bulk API is limited to 500 subscribers per request.\n ", "parameters": [], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BulkSubscriberCreateDto"}}}}, "responses": {"201": {"description": ""}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/credentials": {"put": {"operationId": "SubscribersController_updateSubscriberChannel", "x-speakeasy-group": "Subscribers.Credentials", "summary": "Update subscriber credentials", "description": "Subscriber credentials associated to the delivery methods such as slack and push tokens.", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateSubscriberChannelRequestDto"}}}}, "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SubscriberResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}, "patch": {"operationId": "SubscribersController_modifySubscriberChannel", "x-speakeasy-name-override": "append", "x-speakeasy-group": "Subscribers.Credentials", "summary": "Modify subscriber credentials", "description": "Subscriber credentials associated to the delivery methods such as slack and push tokens.\n\n This endpoint appends provided credentials and deviceTokens to the existing ones.", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateSubscriberChannelRequestDto"}}}}, "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SubscriberResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/credentials/{providerId}": {"delete": {"operationId": "SubscribersController_deleteSubscriberCredentials", "x-speakeasy-group": "Subscribers.Credentials", "summary": "Delete subscriber credentials by providerId", "description": "Delete subscriber credentials such as slack and expo tokens.", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}, {"name": "providerId", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"204": {"headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "description": ""}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/online-status": {"patch": {"operationId": "SubscribersController_updateSubscriberOnlineFlag", "x-speakeasy-name-override": "updateOnlineFlag", "x-speakeasy-group": "Subscribers.properties", "summary": "Update subscriber online status", "description": "Used to update the subscriber isOnline flag.", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateSubscriberOnlineFlagRequestDto"}}}}, "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SubscriberResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/preferences": {"get": {"operationId": "SubscribersController_listSubscriberPreferences", "x-speakeasy-group": "Subscribers.Preferences", "summary": "Get subscriber preferences", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}, {"name": "includeInactiveChannels", "required": false, "in": "query", "description": "A flag which specifies if the inactive workflow channels should be included in the retrieved preferences. Default is true", "schema": {"type": "boolean"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/UpdateSubscriberPreferenceResponseDto"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}, "patch": {"operationId": "SubscribersController_updateSubscriberGlobalPreferences", "x-speakeasy-name-override": "updateGlobal", "x-speakeasy-group": "Subscribers.Preferences", "summary": "Update subscriber global preferences", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateSubscriberGlobalPreferencesRequestDto"}}}}, "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateSubscriberPreferenceResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/preferences/{parameter}": {"get": {"operationId": "SubscribersController_getSubscriberPreferenceByLevel", "x-speakeasy-name-override": "retrieveByLevel", "x-speakeasy-group": "Subscribers.Preferences", "summary": "Get subscriber preferences by level", "parameters": [{"name": "includeInactiveChannels", "required": false, "in": "query", "description": "A flag which specifies if the inactive workflow channels should be included in the retrieved preferences. Default is true", "schema": {"type": "boolean"}}, {"name": "parameter", "required": true, "in": "path", "description": "the preferences level to be retrieved (template / global) ", "schema": {"enum": ["global", "template"], "type": "string"}}, {"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GetSubscriberPreferencesResponseDto"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}, "patch": {"operationId": "SubscribersController_updateSubscriberPreference", "x-speakeasy-group": "Subscribers.Preferences", "summary": "Update subscriber preference", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}, {"name": "parameter", "required": true, "in": "path", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateSubscriberPreferenceRequestDto"}}}}, "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateSubscriberPreferenceResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/notifications/feed": {"get": {"operationId": "SubscribersController_getNotificationsFeed", "x-speakeasy-group": "Subscribers.Notifications", "summary": "Get in-app notification feed for a particular subscriber", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}, {"name": "page", "required": false, "in": "query", "schema": {"type": "number"}}, {"name": "limit", "required": false, "in": "query", "schema": {"maximum": 100, "default": 10, "type": "number"}}, {"name": "read", "required": false, "in": "query", "schema": {"type": "boolean"}}, {"name": "seen", "required": false, "in": "query", "schema": {"type": "boolean"}}, {"name": "payload", "required": false, "in": "query", "description": "Base64 encoded string of the partial payload JSON object", "example": "btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string like eyJmb28iOjEyM30=", "schema": {"type": "string"}}], "responses": {"200": {"headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "description": "", "content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/PaginatedResponseDto"}, {"properties": {"data": {"type": "array", "items": {"$ref": "#/components/schemas/FeedResponseDto"}}}}]}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/notifications/unseen": {"get": {"operationId": "SubscribersController_getUnseenCount", "x-speakeasy-name-override": "unseenCount", "x-speakeasy-group": "Subscribers.Notifications", "summary": "Get the unseen in-app notifications count for subscribers feed", "parameters": [{"name": "seen", "required": true, "in": "query", "schema": {"type": "boolean"}}, {"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}, {"name": "limit", "required": true, "in": "query", "schema": {"type": "number"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnseenCountResponse"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/messages/mark-as": {"post": {"operationId": "SubscribersController_markMessagesAs", "x-speakeasy-name-override": "markAllAs", "x-speakeasy-group": "Subscribers.Messages", "summary": "Mark a subscriber messages as seen, read, unseen or unread", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageMarkAsRequestDto"}}}}, "responses": {"201": {"description": "", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/MessageEntity"}}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/messages/mark-all": {"post": {"operationId": "SubscribersController_markAllUnreadAsRead", "x-speakeasy-name-override": "markAll", "x-speakeasy-group": "Subscribers.Messages", "summary": "Marks all the subscriber messages as read, unread, seen or unseen. Optionally you can pass feed id (or array) to mark messages of a particular feed.", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MarkAllMessageAsRequestDto"}}}}, "responses": {"201": {"description": "", "content": {"application/json": {"schema": {"type": "number"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}": {"post": {"operationId": "SubscribersController_markActionAsSeen", "x-speakeasy-name-override": "updateAsSeen", "x-speakeasy-group": "Subscribers.Messages", "summary": "Mark message action as seen", "parameters": [{"name": "messageId", "required": true, "in": "path", "schema": {"type": "string"}}, {"name": "type", "required": true, "in": "path", "schema": {}}, {"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MarkMessageActionAsSeenDto"}}}}, "responses": {"201": {"description": "Created", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MessageResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/credentials/{providerId}/oauth/callback": {"get": {"operationId": "SubscribersController_chatOauthCallback", "x-speakeasy-name-override": "chatAccessOauthCallBack", "x-speakeasy-group": "Subscribers.Authentication", "summary": "Handle providers oauth redirect", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}, {"name": "providerId", "required": true, "in": "path", "schema": {}}, {"name": "code", "required": true, "in": "query", "schema": {"type": "string"}}, {"name": "hmacHash", "required": true, "in": "query", "schema": {"type": "string"}}, {"name": "environmentId", "required": true, "in": "query", "schema": {"type": "string"}}, {"name": "integrationIdentifier", "required": false, "in": "query", "schema": {"type": "string"}}], "responses": {"200": {"description": "", "content": {"application/json": {"schema": {"type": "object"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/subscribers/{subscriberId}/credentials/{providerId}/oauth": {"get": {"operationId": "SubscribersController_chatAccessOauth", "x-speakeasy-name-override": "chatAccessOauth", "x-speakeasy-group": "Subscribers.Authentication", "summary": "Handle chat oauth", "parameters": [{"name": "subscriberId", "required": true, "in": "path", "schema": {"type": "string"}}, {"name": "providerId", "required": true, "in": "path", "schema": {}}, {"name": "hmacHash", "required": true, "in": "query", "schema": {"type": "string"}}, {"name": "environmentId", "required": true, "in": "query", "schema": {"type": "string"}}, {"name": "integrationIdentifier", "required": false, "in": "query", "schema": {"type": "string"}}], "responses": {"200": {"description": ""}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Subscribers"], "security": [{"api-key": []}]}}, "/v1/messages": {"get": {"operationId": "MessagesController_getMessages", "summary": "Get messages", "description": "Returns a list of messages, could paginate using the `page` query parameter", "parameters": [{"name": "channel", "required": false, "in": "query", "schema": {"enum": ["in_app", "email", "sms", "chat", "push"], "type": "string"}}, {"name": "subscriberId", "required": false, "in": "query", "schema": {"type": "string"}}, {"name": "transactionId", "required": false, "in": "query", "schema": {"type": "array", "items": {"type": "string"}}}, {"name": "page", "required": false, "in": "query", "schema": {"default": 0, "type": "number"}}, {"name": "limit", "required": false, "in": "query", "schema": {"default": 10, "type": "number"}}], "responses": {"200": {"headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "description": "", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ActivitiesResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Messages"], "security": [{"api-key": []}]}}, "/v1/messages/{messageId}": {"delete": {"operationId": "MessagesController_deleteMessage", "summary": "Delete message", "description": "Deletes a message entity from the Novu platform", "parameters": [{"name": "messageId", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteMessageResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Messages"], "security": [{"api-key": []}]}}, "/v1/messages/transaction/{transactionId}": {"delete": {"operationId": "MessagesController_deleteMessagesByTransactionId", "x-speakeasy-name-override": "deleteByTransactionId", "summary": "Delete messages by transactionId", "description": "Deletes messages entity from the Novu platform using TransactionId of message", "parameters": [{"name": "channel", "required": false, "in": "query", "description": "The channel of the message to be deleted", "schema": {"enum": ["in_app", "email", "sms", "chat", "push"], "type": "string"}}, {"name": "transactionId", "required": true, "in": "path", "schema": {"type": "string"}}], "responses": {"204": {"headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "description": ""}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Messages"], "security": [{"api-key": []}]}}, "/v1/topics": {"post": {"operationId": "TopicsController_createTopic", "summary": "Topic creation", "description": "Create a topic", "parameters": [], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateTopicRequestDto"}}}}, "responses": {"201": {"description": "Created", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateTopicResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Topics"], "security": [{"api-key": []}]}, "get": {"operationId": "TopicsController_listTopics", "summary": "Filter topics", "description": "Returns a list of topics that can be paginated using the `page` query parameter and filtered by the topic key with the `key` query parameter", "parameters": [{"name": "page", "required": false, "in": "query", "description": "Number of page for the pagination", "schema": {"minimum": 0, "default": 0, "type": "number"}}, {"name": "pageSize", "required": false, "in": "query", "description": "Size of page for the pagination", "schema": {"minimum": 0, "default": 10, "type": "number"}}, {"name": "key", "required": false, "in": "query", "description": "Topic key", "schema": {"type": "string"}}], "responses": {"200": {"headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "description": "", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FilterTopicsResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Topics"], "security": [{"api-key": []}]}}, "/v1/topics/{topicKey}/subscribers": {"post": {"operationId": "TopicsController_addSubscribers", "x-speakeasy-name-override": "assign", "x-speakeasy-group": "Topics.Subscribers", "summary": "Subscribers addition", "description": "Add subscribers to a topic by key", "parameters": [{"name": "topicKey", "required": true, "in": "path", "description": "The topic key", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddSubscribersRequestDto"}}}}, "responses": {"204": {"headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "description": ""}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Topics"], "security": [{"api-key": []}]}}, "/v1/topics/{topicKey}/subscribers/{externalSubscriberId}": {"get": {"operationId": "TopicsController_getTopicSubscriber", "x-speakeasy-group": "Topics.Subscribers", "summary": "Check topic subscriber", "description": "Check if a subscriber belongs to a certain topic", "parameters": [{"name": "externalSubscriberId", "required": true, "in": "path", "description": "The external subscriber id", "schema": {"type": "string"}}, {"name": "topicKey", "required": true, "in": "path", "description": "The topic key", "schema": {"type": "string"}}], "responses": {"200": {"description": "", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TopicSubscriberDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Topics"], "security": [{"api-key": []}]}}, "/v1/topics/{topicKey}/subscribers/removal": {"post": {"operationId": "TopicsController_removeSubscribers", "x-speakeasy-group": "Topics.Subscribers", "summary": "Subscribers removal", "description": "Remove subscribers from a topic", "parameters": [{"name": "topicKey", "required": true, "in": "path", "description": "The topic key", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RemoveSubscribersRequestDto"}}}}, "responses": {"204": {"headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "description": ""}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Topics"], "security": [{"api-key": []}]}}, "/v1/topics/{topicKey}": {"delete": {"operationId": "TopicsController_deleteTopic", "summary": "Delete topic", "description": "Delete a topic by its topic key if it has no subscribers", "parameters": [{"name": "topicKey", "required": true, "in": "path", "description": "The topic key", "schema": {"type": "string"}}], "responses": {"204": {"description": "The topic has been deleted correctly", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}}, "404": {"description": "The topic with the key provided does not exist in the database so it can not be deleted.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}}, "409": {"description": "The topic you are trying to delete has subscribers assigned to it. Delete the subscribers before deleting the topic.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Topics"], "security": [{"api-key": []}]}, "get": {"operationId": "TopicsController_getTopic", "summary": "Get topic", "description": "Get a topic by its topic key", "parameters": [{"name": "topicKey", "required": true, "in": "path", "description": "The topic key", "schema": {"type": "string"}}], "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetTopicResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Topics"], "security": [{"api-key": []}]}, "patch": {"operationId": "TopicsController_renameTopic", "x-speakeasy-name-override": "rename", "summary": "Rename a topic", "description": "Rename a topic by providing a new name", "parameters": [{"name": "topicKey", "required": true, "in": "path", "description": "The topic key", "schema": {"type": "string"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RenameTopicRequestDto"}}}}, "responses": {"200": {"description": "Ok", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}}, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RenameTopicResponseDto"}}}}, "409": {"description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}, "Link": {"$ref": "#/components/headers/Link"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second"}}}}, "429": {"description": "The client has sent too many requests in a given amount of time. ", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "API rate limit exceeded"}}}}, "503": {"description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", "headers": {"Content-Type": {"$ref": "#/components/headers/Content-Type"}, "RateLimit-Limit": {"$ref": "#/components/headers/RateLimit-Limit"}, "RateLimit-Remaining": {"$ref": "#/components/headers/RateLimit-Remaining"}, "RateLimit-Reset": {"$ref": "#/components/headers/RateLimit-Reset"}, "RateLimit-Policy": {"$ref": "#/components/headers/RateLimit-Policy"}, "Idempotency-Key": {"$ref": "#/components/headers/Idempotency-Key"}, "Idempotency-Replay": {"$ref": "#/components/headers/Idempotency-Replay"}, "Retry-After": {"$ref": "#/components/headers/Retry-After"}}, "content": {"application/json": {"schema": {"type": "string", "example": "Please wait some time, then try again."}}}}}, "tags": ["Topics"], "security": [{"api-key": []}]}}}, "info": {"title": "Novu API", "description": "Novu REST API. Please see https://docs.novu.co/api-reference for more details.", "version": "1.0", "contact": {"name": "Novu Support", "url": "https://discord.gg/novu", "email": "support@novu.co"}, "termsOfService": "https://novu.co/terms", "license": {"name": "MIT", "url": "https://opensource.org/license/mit"}}, "tags": [{"name": "Events", "description": "Events represent a change in state of a subscriber. They are used to trigger workflows, and enable you to send notifications to subscribers based on their actions.", "externalDocs": {"url": "https://docs.novu.co/workflows"}}, {"name": "Subscribers", "description": "A subscriber in Novu represents someone who should receive a message. A subscriber’s profile information contains important attributes about the subscriber that will be used in messages (name, email). The subscriber object can contain other key-value pairs that can be used to further personalize your messages.", "externalDocs": {"url": "https://docs.novu.co/subscribers/subscribers"}}, {"name": "Topics", "description": "Topics are a way to group subscribers together so that they can be notified of events at once. A topic is identified by a custom key. This can be helpful for things like sending out marketing emails or notifying users of new features. Topics can also be used to send notifications to the subscribers who have been grouped together based on their interests, location, activities and much more.", "externalDocs": {"url": "https://docs.novu.co/subscribers/topics"}}, {"name": "Notification", "description": "A notification conveys information from source to recipient, triggered by a workflow acting as a message blueprint. Notifications can be individual or bundled as digest for user-friendliness.", "externalDocs": {"url": "https://docs.novu.co/getting-started/introduction"}}, {"name": "Integrations", "description": "With the help of the Integration Store, you can easily integrate your favorite delivery provider. During the runtime of the API, the Integrations Store is responsible for storing the configurations of all the providers.", "externalDocs": {"url": "https://docs.novu.co/channels-and-providers/integration-store"}}, {"name": "Layouts", "description": "Novu allows the creation of layouts - a specific HTML design or structure to wrap content of email notifications. Layouts can be manipulated and assigned to new or existing workflows within the Novu platform, allowing users to create, manage, and assign these layouts to workflows, so they can be reused to structure the appearance of notifications sent through the platform.", "externalDocs": {"url": "https://docs.novu.co/content-creation-design/layouts"}}, {"name": "Workflows", "description": "All notifications are sent via a workflow. Each workflow acts as a container for the logic and blueprint that are associated with a type of notification in your system.", "externalDocs": {"url": "https://docs.novu.co/workflows"}}, {"name": "Notification Templates", "description": "Deprecated. Use Workflows (/workflows) instead, which provide the same functionality under a new name."}, {"name": "Workflow groups", "description": "Workflow groups are used to organize workflows into logical groups."}, {"name": "Changes", "description": "Changes represent a change in state of an environment. They are analagous to a pending pull request in git, enabling you to test changes before they are applied to your environment and atomically apply them when you are ready.", "externalDocs": {"url": "https://docs.novu.co/platform/environments#promoting-pending-changes-to-production"}}, {"name": "Environments", "description": "Novu uses the concept of environments to ensure logical separation of your data and configuration. This means that subscribers, and preferences created in one environment are never accessible to another.", "externalDocs": {"url": "https://docs.novu.co/platform/environments"}}, {"name": "Inbound Parse", "description": "Inbound Webhook is a feature that allows processing of incoming emails for a domain or subdomain. The feature parses the contents of the email and POSTs the information to a specified URL in a multipart/form-data format.", "externalDocs": {"url": "https://docs.novu.co/platform/inbound-parse-webhook"}}, {"name": "Feeds", "description": "Novu provides a notification activity feed that monitors every outgoing message associated with its relevant metadata. This can be used to monitor activity and discover potential issues with a specific provider or a channel type.", "externalDocs": {"url": "https://docs.novu.co/activity-feed"}}, {"name": "Tenants", "description": "A tenant represents a group of users. As a developer, when your apps have organizations, they are referred to as tenants. Tenants in Novu provides the ability to tailor specific notification experiences to users of different groups or organizations.", "externalDocs": {"url": "https://docs.novu.co/tenants"}}, {"name": "Messages", "description": "A message in Novu represents a notification delivered to a recipient on a particular channel. Messages contain information about the request that triggered its delivery, a view of the data sent to the recipient, and a timeline of its lifecycle events. Learn more about messages.", "externalDocs": {"url": "https://docs.novu.co/workflows/messages"}}, {"name": "Organizations", "description": "An organization serves as a separate entity within your Novu account. Each organization you create has its own separate integration store, workflows, subscribers, and API keys. This separation of resources allows you to manage multi-tenant environments and separate domains within a single account.", "externalDocs": {"url": "https://docs.novu.co/platform/organizations"}}, {"name": "Execution Details", "description": "Execution details are used to track the execution of a workflow. They provided detailed information on the execution of a workflow, including the status of each step, the input and output of each step, and the overall status of the execution.", "externalDocs": {"url": "https://docs.novu.co/activity-feed"}}], "servers": [{"url": "https://api.novu.co"}, {"url": "https://eu.api.novu.co"}], "components": {"securitySchemes": {"api-key": {"type": "apiKey", "in": "header", "name": "Authorization", "description": "API key authentication. Allowed headers-- \"Authorization: ApiKey \"."}}, "schemas": {"DataWrapperDto": {"type": "object", "properties": {"data": {"type": "object"}}, "required": ["data"]}, "EnvironmentResponseDto": {"type": "object", "properties": {"_id": {"type": "string"}, "name": {"type": "string"}, "_organizationId": {"type": "string"}, "identifier": {"type": "string"}, "apiKeys": {"type": "array", "items": {"type": "string"}}, "_parentId": {"type": "string"}, "slug": {"type": "string"}}, "required": ["name", "_organizationId", "identifier", "_parentId"]}, "ApiKey": {"type": "object", "properties": {"key": {"type": "string"}, "_userId": {"type": "string"}}, "required": ["key", "_userId"]}, "ExecutionDetailsResponseDto": {"type": "object", "properties": {"_id": {"type": "string"}, "_organizationId": {"type": "string"}, "_jobId": {"type": "string"}, "_environmentId": {"type": "string"}, "_notificationId": {"type": "string"}, "_notificationTemplateId": {"type": "string"}, "_subscriberId": {"type": "string"}, "_messageId": {"type": "string"}, "providerId": {"type": "string"}, "transactionId": {"type": "string"}, "channel": {"type": "string", "enum": ["in_app", "email", "sms", "chat", "push", "digest", "trigger", "delay", "custom"]}, "detail": {"type": "string"}, "source": {"type": "string", "enum": ["Credentials", "Internal", "Payload", "Webhook"]}, "status": {"type": "string", "enum": ["Success", "Warning", "Failed", "Pending", "Queued", "ReadConfirmation"]}, "isTest": {"type": "boolean"}, "isRetry": {"type": "boolean"}, "createdAt": {"type": "string"}}, "required": ["_organizationId", "_jobId", "_environmentId", "_notificationId", "_notificationTemplateId", "_subscriberId", "transactionId", "channel", "detail", "source", "status", "isTest", "isRetry"]}, "TriggerEventResponseDto": {"type": "object", "properties": {"acknowledged": {"type": "boolean", "description": "If trigger was acknowledged or not"}, "status": {"enum": ["error", "trigger_not_active", "no_workflow_active_steps_defined", "no_workflow_steps_defined", "processed", "subscriber_id_missing", "no_tenant_found"], "type": "string", "description": "Status for trigger"}, "error": {"description": "In case of an error, this field will contain the error message", "type": "array", "items": {"type": "string"}}, "transactionId": {"type": "string", "description": "Transaction id for trigger"}}, "required": ["acknowledged", "status"]}, "TopicPayloadDto": {"type": "object", "properties": {"topicKey": {"type": "string"}, "type": {"enum": ["Subscriber", "Topic"], "type": "string", "example": "Topic"}}, "required": ["topicKey", "type"]}, "TenantPayloadDto": {"type": "object", "properties": {"identifier": {"type": "string"}, "name": {"type": "string"}, "data": {"type": "object"}}}, "SubscriberPayloadDto": {"type": "object", "properties": {"subscriberId": {"type": "string", "description": "The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems"}, "email": {"type": "string"}, "firstName": {"type": "string"}, "lastName": {"type": "string"}, "phone": {"type": "string"}, "avatar": {"type": "string", "description": "An http url to the profile image of your subscriber"}, "locale": {"type": "string"}, "data": {"type": "object"}, "channels": {"type": "array", "items": {"type": "string"}}}, "required": ["subscriberId"]}, "TriggerEventRequestDto": {"type": "object", "properties": {"name": {"type": "string", "description": "The trigger identifier of the workflow you wish to send. This identifier can be found on the workflow page.", "example": "workflow_identifier"}, "payload": {"type": "object", "description": "The payload object is used to pass additional custom information that could be used to render the workflow, or perform routing rules based on it. \n This data will also be available when fetching the notifications feed from the API to display certain parts of the UI.", "example": {"comment_id": "string", "post": {"text": "string"}}}, "overrides": {"type": "object", "description": "This could be used to override provider specific configurations", "example": {"fcm": {"data": {"key": "value"}}}}, "to": {"type": "array", "description": "The recipients list of people who will receive the notification.", "items": {"oneOf": [{"$ref": "#/components/schemas/SubscriberPayloadDto"}, {"type": "string", "description": "Unique identifier of a subscriber in your systems", "example": "SUBSCRIBER_ID"}, {"$ref": "#/components/schemas/TopicPayloadDto"}]}}, "transactionId": {"type": "string", "description": "A unique identifier for this transaction, we will generated a UUID if not provided."}, "actor": {"description": "It is used to display the Avatar of the provided actor's subscriber id or actor object.\n If a new actor object is provided, we will create a new subscriber in our system\n ", "oneOf": [{"type": "string", "description": "Unique identifier of a subscriber in your systems"}, {"$ref": "#/components/schemas/SubscriberPayloadDto"}]}, "tenant": {"description": "It is used to specify a tenant context during trigger event.\n Existing tenants will be updated with the provided details.\n ", "oneOf": [{"type": "string", "description": "Unique identifier of a tenant in your system"}, {"$ref": "#/components/schemas/TenantPayloadDto"}]}, "bridgeUrl": {"type": "string"}, "controls": {"type": "object"}}, "required": ["name", "to"]}, "BulkTriggerEventDto": {"type": "object", "properties": {"events": {"type": "array", "items": {"$ref": "#/components/schemas/TriggerEventRequestDto"}}}, "required": ["events"]}, "TriggerEventToAllRequestDto": {"type": "object", "properties": {"name": {"type": "string", "description": "The trigger identifier associated for the template you wish to send. This identifier can be found on the template page."}, "payload": {"type": "object", "description": "The payload object is used to pass additional custom information that could be used to render the template, or perform routing rules based on it. \n This data will also be available when fetching the notifications feed from the API to display certain parts of the UI.", "example": {"comment_id": "string", "post": {"text": "string"}}}, "overrides": {"type": "object", "description": "This could be used to override provider specific configurations", "example": {"fcm": {"data": {"key": "value"}}}}, "transactionId": {"type": "string", "description": "A unique identifier for this transaction, we will generated a UUID if not provided."}, "actor": {"description": "It is used to display the Avatar of the provided actor's subscriber id or actor object.\n If a new actor object is provided, we will create a new subscriber in our system\n ", "oneOf": [{"type": "string", "description": "Unique identifier of a subscriber in your systems"}, {"$ref": "#/components/schemas/SubscriberPayloadDto"}]}, "tenant": {"description": "It is used to specify a tenant context during trigger event.\n If a new tenant object is provided, we will create a new tenant.\n ", "oneOf": [{"type": "string", "description": "Unique identifier of a tenant in your system"}, {"$ref": "#/components/schemas/TenantPayloadDto"}]}}, "required": ["name", "payload"]}, "DataBooleanDto": {"type": "object", "properties": {"data": {"type": "boolean"}}, "required": ["data"]}, "ActivitiesResponseDto": {"type": "object", "properties": {"hasMore": {"type": "boolean"}, "data": {"type": "array", "items": {"type": "string"}}, "pageSize": {"type": "number"}, "page": {"type": "number"}}, "required": ["hasMore", "data", "pageSize", "page"]}, "ActivityStatsResponseDto": {"type": "object", "properties": {"weeklySent": {"type": "number"}, "monthlySent": {"type": "number"}}, "required": ["weeklySent", "monthlySent"]}, "ActivityGraphStatesResponse": {"type": "object", "properties": {"_id": {"type": "string"}, "count": {"type": "number"}, "templates": {"type": "array", "items": {"type": "string"}}, "channels": {"type": "array", "items": {"type": "string", "enum": ["in_app", "email", "sms", "chat", "push"]}}}, "required": ["_id", "count", "templates", "channels"]}, "ActivityNotificationSubscriberResponseDto": {"type": "object", "properties": {"firstName": {"type": "string"}, "_id": {"type": "string"}, "lastName": {"type": "string"}, "email": {"type": "string"}, "phone": {"type": "string"}}, "required": ["_id"]}, "ActivityNotificationTemplateResponseDto": {"type": "object", "properties": {"_id": {"type": "string"}, "name": {"type": "string"}, "triggers": {"type": "array", "items": {"type": "string"}}}, "required": ["name", "triggers"]}, "ActivityNotificationResponseDto": {"type": "object", "properties": {"_id": {"type": "string"}, "_environmentId": {"type": "string"}, "_organizationId": {"type": "string"}, "transactionId": {"type": "string"}, "createdAt": {"type": "string"}, "channels": {"type": "string", "items": {"type": "string", "enum": ["in_app", "email", "sms", "chat", "push", "digest", "trigger", "delay", "custom"]}, "enum": ["in_app", "email", "sms", "chat", "push", "digest", "trigger", "delay", "custom"]}, "subscriber": {"$ref": "#/components/schemas/ActivityNotificationSubscriberResponseDto"}, "template": {"$ref": "#/components/schemas/ActivityNotificationTemplateResponseDto"}, "jobs": {"type": "array", "items": {"type": "string"}}}, "required": ["_environmentId", "_organizationId", "transactionId"]}, "NotificationGroupResponseDto": {"type": "object", "properties": {"_id": {"type": "string"}, "name": {"type": "string"}, "_environmentId": {"type": "string"}, "_organizationId": {"type": "string"}, "_parentId": {"type": "string"}}, "required": ["name", "_environmentId", "_organizationId"]}, "CreateNotificationGroupRequestDto": {"type": "object", "properties": {"name": {"type": "string"}}, "required": ["name"]}, "DeleteNotificationGroupResponseDto": {"type": "object", "properties": {"acknowledged": {"type": "boolean", "description": "A boolean stating the success of the action"}, "status": {"type": "string", "description": "The status enum for the performed action", "enum": ["deleted"]}}, "required": ["acknowledged", "status"]}, "CredentialsDto": {"type": "object", "properties": {"apiKey": {"type": "string"}, "user": {"type": "string"}, "secretKey": {"type": "string"}, "domain": {"type": "string"}, "password": {"type": "string"}, "host": {"type": "string"}, "port": {"type": "string"}, "secure": {"type": "boolean"}, "region": {"type": "string"}, "accountSid": {"type": "string"}, "messageProfileId": {"type": "string"}, "token": {"type": "string"}, "from": {"type": "string"}, "senderName": {"type": "string"}, "projectName": {"type": "string"}, "applicationId": {"type": "string"}, "clientId": {"type": "string"}, "requireTls": {"type": "boolean"}, "ignoreTls": {"type": "boolean"}, "tlsOptions": {"type": "object"}, "baseUrl": {"type": "string"}, "webhookUrl": {"type": "string"}, "redirectUrl": {"type": "string"}, "hmac": {"type": "boolean"}, "serviceAccount": {"type": "string"}, "ipPoolName": {"type": "string"}, "apiKeyRequestHeader": {"type": "string"}, "secretKeyRequestHeader": {"type": "string"}, "idPath": {"type": "string"}, "datePath": {"type": "string"}, "apiToken": {"type": "string"}, "authenticateByToken": {"type": "boolean"}, "authenticationTokenKey": {"type": "string"}, "instanceId": {"type": "string"}, "alertUid": {"type": "string"}, "title": {"type": "string"}, "imageUrl": {"type": "string"}, "state": {"type": "string"}, "externalLink": {"type": "string"}, "channelId": {"type": "string"}, "phoneNumberIdentification": {"type": "string"}, "accessKey": {"type": "string"}}}, "FieldFilterPart": {"type": "object", "properties": {"field": {"type": "string"}, "value": {"type": "string"}, "operator": {"type": "string", "enum": ["LARGER", "SMALLER", "LARGER_EQUAL", "SMALLER_EQUAL", "EQUAL", "NOT_EQUAL", "ALL_IN", "ANY_IN", "NOT_IN", "BETWEEN", "NOT_BETWEEN", "LIKE", "NOT_LIKE", "IN"]}, "on": {"type": "string", "enum": ["subscriber", "payload"]}}, "required": ["field", "value", "operator", "on"]}, "StepFilter": {"type": "object", "properties": {"isNegated": {"type": "boolean"}, "type": {"type": "string", "enum": ["BOOLEAN", "TEXT", "DATE", "NUMBER", "STATEMENT", "LIST", "MULTI_LIST", "GROUP"]}, "value": {"type": "string", "enum": ["AND", "OR"]}, "children": {"type": "array", "items": {"$ref": "#/components/schemas/FieldFilterPart"}}}, "required": ["isNegated", "type", "value", "children"]}, "IntegrationResponseDto": {"type": "object", "properties": {"_id": {"type": "string"}, "_environmentId": {"type": "string"}, "_organizationId": {"type": "string"}, "name": {"type": "string"}, "identifier": {"type": "string"}, "providerId": {"type": "string"}, "channel": {"enum": ["in_app", "email", "sms", "chat", "push"], "type": "string"}, "credentials": {"$ref": "#/components/schemas/CredentialsDto"}, "active": {"type": "boolean"}, "deleted": {"type": "boolean"}, "deletedAt": {"type": "string"}, "deletedBy": {"type": "string"}, "primary": {"type": "boolean"}, "conditions": {"type": "array", "items": {"$ref": "#/components/schemas/StepFilter"}}}, "required": ["_environmentId", "_organizationId", "name", "identifier", "providerId", "channel", "credentials", "active", "deleted", "deletedAt", "deletedBy", "primary"]}, "CreateIntegrationRequestDto": {"type": "object", "properties": {"name": {"type": "string"}, "identifier": {"type": "string"}, "_environmentId": {"type": "string"}, "providerId": {"type": "string"}, "channel": {"enum": ["in_app", "email", "sms", "chat", "push"], "type": "string"}, "credentials": {"$ref": "#/components/schemas/CredentialsDto"}, "active": {"type": "boolean", "description": "If the integration is active the validation on the credentials field will run"}, "check": {"type": "boolean"}, "conditions": {"type": "array", "items": {"$ref": "#/components/schemas/StepFilter"}}}, "required": ["providerId", "channel"]}, "UpdateIntegrationRequestDto": {"type": "object", "properties": {"name": {"type": "string"}, "identifier": {"type": "string"}, "_environmentId": {"type": "string"}, "active": {"type": "boolean", "description": "If the integration is active the validation on the credentials field will run"}, "credentials": {"$ref": "#/components/schemas/CredentialsDto"}, "removeNovuBranding": {"type": "boolean", "description": "If true, the Novu branding will be removed from the Inbox component"}, "check": {"type": "boolean"}, "conditions": {"type": "array", "items": {"$ref": "#/components/schemas/StepFilter"}}}}, "PaginatedResponseDto": {"type": "object", "properties": {"page": {"type": "number", "description": "The current page of the paginated response"}, "hasMore": {"type": "boolean", "description": "Does the list have more items to fetch"}, "pageSize": {"type": "number", "description": "Number of items on each page"}, "data": {"description": "The list of items matching the query", "type": "array", "items": {"type": "object"}}}, "required": ["page", "hasMore", "pageSize", "data"]}, "ChannelCredentials": {"type": "object", "properties": {"webhookUrl": {"type": "string", "description": "Webhook url used by chat app integrations. The webhook should be obtained from the chat app provider."}, "channel": {"type": "string", "description": "Channel specification for Mattermost chat notifications"}, "deviceTokens": {"description": "Contains an array of the subscriber device tokens for a given provider. Used on Push integrations", "type": "array", "items": {"type": "string"}}, "alertUid": {"type": "string", "description": "alert_uid for grafana on-call webhook payload"}, "title": {"type": "string", "description": "title to be used with grafana on call webhook"}, "imageUrl": {"type": "string", "description": "image_url property fo grafana on call webhook"}, "state": {"type": "string", "description": "state property fo grafana on call webhook"}, "externalUrl": {"type": "string", "description": "link_to_upstream_details property fo grafana on call webhook"}}, "required": ["webhookUrl"]}, "ChannelSettings": {"type": "object", "properties": {"providerId": {"type": "string", "enum": ["slack", "discord", "msteams", "mattermost", "ryver", "zulip", "grafana-on-call", "getstream", "rocket-chat", "whatsapp-business", "fcm", "apns", "expo", "one-signal", "pushpad", "push-webhook", "pusher-beams"], "description": "The provider identifier for the credentials"}, "integrationIdentifier": {"type": "string", "description": "The integration identifier"}, "credentials": {"description": "Credentials payload for the specified provider", "allOf": [{"$ref": "#/components/schemas/ChannelCredentials"}]}, "_integrationId": {"type": "string", "description": "Id of the integration that is used for this channel"}}, "required": ["providerId", "credentials", "_integrationId"]}, "SubscriberResponseDto": {"type": "object", "properties": {"_id": {"type": "string", "description": "The internal id novu generated for your subscriber, this is not the subscriberId matching your query. See `subscriberId` for that"}, "firstName": {"type": "string"}, "lastName": {"type": "string"}, "email": {"type": "string"}, "phone": {"type": "string"}, "avatar": {"type": "string"}, "locale": {"type": "string"}, "subscriberId": {"type": "string", "description": "The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems"}, "channels": {"description": "Channels settings for subscriber", "type": "array", "items": {"$ref": "#/components/schemas/ChannelSettings"}}, "topics": {"description": "Topics that subscriber belongs to", "type": "array", "items": {"type": "string"}}, "isOnline": {"type": "boolean"}, "lastOnlineAt": {"type": "string"}, "_organizationId": {"type": "string"}, "_environmentId": {"type": "string"}, "deleted": {"type": "boolean"}, "createdAt": {"type": "string"}, "updatedAt": {"type": "string"}, "__v": {"type": "number"}}, "required": ["subscriberId", "_organizationId", "_environmentId", "deleted", "createdAt", "updatedAt"]}, "CreateSubscriberRequestDto": {"type": "object", "properties": {"subscriberId": {"type": "string", "description": "The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems"}, "email": {"type": "string"}, "firstName": {"type": "string"}, "lastName": {"type": "string"}, "phone": {"type": "string"}, "avatar": {"type": "string", "description": "An http url to the profile image of your subscriber"}, "locale": {"type": "string"}, "data": {"type": "object"}, "channels": {"type": "array", "items": {"type": "string"}}}, "required": ["subscriberId"]}, "BulkSubscriberCreateDto": {"type": "object", "properties": {"subscribers": {"type": "array", "items": {"type": "string"}}}, "required": ["subscribers"]}, "UpdateSubscriberRequestDto": {"type": "object", "properties": {"email": {"type": "string"}, "firstName": {"type": "string"}, "lastName": {"type": "string"}, "phone": {"type": "string"}, "avatar": {"type": "string"}, "locale": {"type": "string"}, "data": {"type": "object"}, "channels": {"type": "array", "items": {"type": "string"}}}}, "UpdateSubscriberChannelRequestDto": {"type": "object", "properties": {"providerId": {"type": "string", "enum": ["slack", "discord", "msteams", "mattermost", "ryver", "zulip", "grafana-on-call", "getstream", "rocket-chat", "whatsapp-business", "fcm", "apns", "expo", "one-signal", "pushpad", "push-webhook", "pusher-beams"], "description": "The provider identifier for the credentials"}, "integrationIdentifier": {"type": "string", "description": "The integration identifier"}, "credentials": {"description": "Credentials payload for the specified provider", "allOf": [{"$ref": "#/components/schemas/ChannelCredentials"}]}}, "required": ["providerId", "credentials"]}, "UpdateSubscriberOnlineFlagRequestDto": {"type": "object", "properties": {"isOnline": {"type": "boolean"}}, "required": ["isOnline"]}, "DeleteSubscriberResponseDto": {"type": "object", "properties": {"acknowledged": {"type": "boolean", "description": "A boolean stating the success of the action"}, "status": {"type": "string", "description": "The status enum for the performed action", "enum": ["deleted"]}}, "required": ["acknowledged", "status"]}, "TemplateResponse": {"type": "object", "properties": {"_id": {"type": "string", "description": "Unique identifier of the workflow"}, "name": {"type": "string", "description": "Name of the workflow"}, "critical": {"type": "boolean", "description": "Critical templates will always be delivered to the end user and should be hidden from the subscriber preferences screen"}, "triggers": {"description": "Triggers are the events that will trigger the workflow.", "type": "array", "items": {"type": "string"}}}, "required": ["_id", "name", "critical", "triggers"]}, "PreferenceChannels": {"type": "object", "properties": {"email": {"type": "boolean"}, "sms": {"type": "boolean"}, "in_app": {"type": "boolean"}, "chat": {"type": "boolean"}, "push": {"type": "boolean"}}}, "Preference": {"type": "object", "properties": {"enabled": {"type": "boolean", "description": "Sets if the workflow is fully enabled for all channels or not for the subscriber."}, "channels": {"description": "Subscriber preferences for the different channels regarding this workflow", "allOf": [{"$ref": "#/components/schemas/PreferenceChannels"}]}}, "required": ["enabled", "channels"]}, "UpdateSubscriberPreferenceResponseDto": {"type": "object", "properties": {"template": {"description": "The workflow information and if it is critical or not", "allOf": [{"$ref": "#/components/schemas/TemplateResponse"}]}, "preference": {"description": "The preferences of the subscriber regarding the related workflow", "allOf": [{"$ref": "#/components/schemas/Preference"}]}}, "required": ["template", "preference"]}, "GetSubscriberPreferencesResponseDto": {"type": "object", "properties": {"template": {"description": "The workflow information and if it is critical or not", "allOf": [{"$ref": "#/components/schemas/TemplateResponse"}]}, "preference": {"description": "The preferences of the subscriber regarding the related workflow", "allOf": [{"$ref": "#/components/schemas/Preference"}]}}, "required": ["preference"]}, "ChannelPreference": {"type": "object", "properties": {"type": {"type": "string", "enum": ["in_app", "email", "sms", "chat", "push"], "description": "The type of channel that is enabled or not"}, "enabled": {"type": "boolean", "description": "If channel is enabled or not"}}, "required": ["type", "enabled"]}, "UpdateSubscriberPreferenceRequestDto": {"type": "object", "properties": {"channel": {"description": "The subscriber preferences for every ChannelTypeEnum for the workflow assigned.", "allOf": [{"$ref": "#/components/schemas/ChannelPreference"}]}, "enabled": {"type": "boolean", "description": "Sets if the workflow is fully enabled for all channels or not for the subscriber."}}}, "UpdateSubscriberGlobalPreferencesRequestDto": {"type": "object", "properties": {"enabled": {"type": "boolean", "description": "Enable or disable the subscriber global preferences."}, "preferences": {"description": "The subscriber global preferences for every ChannelTypeEnum.", "type": "array", "items": {"$ref": "#/components/schemas/ChannelPreference"}}}}, "FeedResponseDto": {"type": "object", "properties": {"totalCount": {"type": "number"}, "hasMore": {"type": "boolean"}, "data": {"type": "array", "items": {"type": "string"}}, "pageSize": {"type": "number"}, "page": {"type": "number"}}, "required": ["hasMore", "data", "pageSize", "page"]}, "UnseenCountResponse": {"type": "object", "properties": {"count": {"type": "number"}}, "required": ["count"]}, "MessageMarkAsRequestDto": {"type": "object", "properties": {"messageId": {"oneOf": [{"type": "string"}, {"type": "array", "items": {"type": "string"}}]}, "markAs": {"enum": ["read", "seen", "unread", "unseen"], "type": "string"}}, "required": ["messageId", "markAs"]}, "MessageEntity": {"type": "object", "properties": {}}, "MarkAllMessageAsRequestDto": {"type": "object", "properties": {"feedIdentifier": {"oneOf": [{"type": "string"}, {"type": "array", "items": {"type": "string"}}], "description": "Optional feed identifier or array of feed identifiers"}, "markAs": {"enum": ["read", "seen", "unread", "unseen"], "type": "string", "description": "Mark all subscriber messages as read, unread, seen or unseen"}}, "required": ["markAs"]}, "EmailBlockStyles": {"type": "object", "properties": {"textAlign": {"type": "string", "enum": ["center", "left", "right"]}}, "required": ["textAlign"]}, "EmailBlock": {"type": "object", "properties": {"type": {"enum": ["button", "text"], "type": "string"}, "content": {"type": "string"}, "url": {"type": "string"}, "styles": {"$ref": "#/components/schemas/EmailBlockStyles"}}, "required": ["type", "content"]}, "MessageCTAData": {"type": "object", "properties": {"url": {"type": "string"}}}, "MessageButton": {"type": "object", "properties": {"type": {"type": "string", "enum": ["primary", "secondary"]}, "content": {"type": "string"}, "resultContent": {"type": "string"}}, "required": ["type", "content"]}, "MessageActionResult": {"type": "object", "properties": {"payload": {"type": "object"}, "type": {"type": "string", "enum": ["primary", "secondary"]}}}, "MessageAction": {"type": "object", "properties": {"status": {"type": "string", "enum": ["pending", "done"]}, "buttons": {"type": "array", "items": {"$ref": "#/components/schemas/MessageButton"}}, "result": {"$ref": "#/components/schemas/MessageActionResult"}}}, "MessageCTA": {"type": "object", "properties": {"type": {"type": "string", "enum": ["redirect"]}, "data": {"$ref": "#/components/schemas/MessageCTAData"}, "action": {"$ref": "#/components/schemas/MessageAction"}}, "required": ["data"]}, "NotificationGroup": {"type": "object", "properties": {"_id": {"type": "string"}, "name": {"type": "string"}, "_environmentId": {"type": "string"}, "_organizationId": {"type": "string"}, "_parentId": {"type": "string"}}, "required": ["name", "_environmentId", "_organizationId"]}, "DigestRegularMetadata": {"type": "object", "properties": {"amount": {"type": "number"}, "unit": {"type": "string", "enum": ["seconds", "minutes", "hours", "days", "weeks", "months"]}, "digestKey": {"type": "string"}, "type": {"type": "string", "enum": ["regular", "backoff"]}, "backoff": {"type": "boolean"}, "backoffAmount": {"type": "number"}, "backoffUnit": {"type": "string", "enum": ["seconds", "minutes", "hours", "days", "weeks", "months"]}, "updateMode": {"type": "boolean"}}, "required": ["type"]}, "TimedConfig": {"type": "object", "properties": {"atTime": {"type": "string"}, "weekDays": {"type": "array", "items": {"type": "string", "enum": ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]}}, "monthDays": {"type": "array", "items": {"type": "string"}}, "ordinal": {"type": "string", "enum": ["1", "2", "3", "4", "5", "last"]}, "ordinalValue": {"type": "string", "enum": ["day", "weekday", "weekend", "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"]}, "monthlyType": {"type": "string", "enum": ["each", "on"]}}}, "DigestTimedMetadata": {"type": "object", "properties": {"amount": {"type": "number"}, "unit": {"type": "string", "enum": ["seconds", "minutes", "hours", "days", "weeks", "months"]}, "digestKey": {"type": "string"}, "type": {"type": "string", "enum": ["timed"]}, "timed": {"$ref": "#/components/schemas/TimedConfig"}}, "required": ["type"]}, "DelayRegularMetadata": {"type": "object", "properties": {"amount": {"type": "number"}, "unit": {"type": "string", "enum": ["seconds", "minutes", "hours", "days", "weeks", "months"]}, "type": {"type": "string", "enum": ["regular"]}}, "required": ["type"]}, "DelayScheduledMetadata": {"type": "object", "properties": {"type": {"type": "string", "enum": ["scheduled"]}, "delayPath": {"type": "string"}}, "required": ["type", "delayPath"]}, "MessageTemplate": {"type": "object", "properties": {}}, "NotificationStepVariant": {"type": "object", "properties": {"_id": {"type": "string"}, "uuid": {"type": "string"}, "name": {"type": "string"}, "_templateId": {"type": "string"}, "active": {"type": "boolean"}, "shouldStopOnFail": {"type": "boolean"}, "template": {"$ref": "#/components/schemas/MessageTemplate"}, "filters": {"type": "array", "items": {"$ref": "#/components/schemas/StepFilter"}}, "_parentId": {"type": "object"}, "metadata": {"oneOf": [{"$ref": "#/components/schemas/DigestRegularMetadata"}, {"$ref": "#/components/schemas/DigestTimedMetadata"}, {"$ref": "#/components/schemas/DelayRegularMetadata"}, {"$ref": "#/components/schemas/DelayScheduledMetadata"}]}, "replyCallback": {"type": "object"}}}, "NotificationStep": {"type": "object", "properties": {"_id": {"type": "string"}, "uuid": {"type": "string"}, "name": {"type": "string"}, "_templateId": {"type": "string"}, "active": {"type": "boolean"}, "shouldStopOnFail": {"type": "boolean"}, "template": {"$ref": "#/components/schemas/MessageTemplate"}, "filters": {"type": "array", "items": {"$ref": "#/components/schemas/StepFilter"}}, "_parentId": {"type": "object"}, "metadata": {"oneOf": [{"$ref": "#/components/schemas/DigestRegularMetadata"}, {"$ref": "#/components/schemas/DigestTimedMetadata"}, {"$ref": "#/components/schemas/DelayRegularMetadata"}, {"$ref": "#/components/schemas/DelayScheduledMetadata"}]}, "replyCallback": {"type": "object"}, "variants": {"$ref": "#/components/schemas/NotificationStepVariant"}}}, "NotificationTriggerVariable": {"type": "object", "properties": {"name": {"type": "string"}}, "required": ["name"]}, "NotificationTrigger": {"type": "object", "properties": {"type": {"type": "string", "enum": ["event"]}, "identifier": {"type": "string"}, "variables": {"type": "array", "items": {"$ref": "#/components/schemas/NotificationTriggerVariable"}}, "subscriberVariables": {"type": "array", "items": {"$ref": "#/components/schemas/NotificationTriggerVariable"}}}, "required": ["type", "identifier", "variables"]}, "WorkflowResponse": {"type": "object", "properties": {"_id": {"type": "string"}, "name": {"type": "string"}, "description": {"type": "string"}, "active": {"type": "boolean"}, "draft": {"type": "boolean"}, "preferenceSettings": {"$ref": "#/components/schemas/PreferenceChannels"}, "critical": {"type": "boolean"}, "tags": {"type": "array", "items": {"type": "string"}}, "steps": {"type": "array", "items": {"$ref": "#/components/schemas/NotificationStep"}}, "_organizationId": {"type": "string"}, "_creatorId": {"type": "string"}, "_environmentId": {"type": "string"}, "triggers": {"type": "array", "items": {"$ref": "#/components/schemas/NotificationTrigger"}}, "_notificationGroupId": {"type": "string"}, "_parentId": {"type": "string"}, "deleted": {"type": "boolean"}, "deletedAt": {"type": "string"}, "deletedBy": {"type": "string"}, "notificationGroup": {"$ref": "#/components/schemas/NotificationGroup"}, "data": {"type": "object"}, "workflowIntegrationStatus": {"type": "object"}}, "required": ["name", "description", "active", "draft", "preferenceSettings", "critical", "tags", "steps", "_organizationId", "_creatorId", "_environmentId", "triggers", "_notificationGroupId", "deleted", "deletedAt", "deletedBy"]}, "MessageResponseDto": {"type": "object", "properties": {"_id": {"type": "string"}, "_templateId": {"type": "string"}, "_environmentId": {"type": "string"}, "_messageTemplateId": {"type": "string"}, "_organizationId": {"type": "string"}, "_notificationId": {"type": "string"}, "_subscriberId": {"type": "string"}, "subscriber": {"$ref": "#/components/schemas/SubscriberResponseDto"}, "template": {"$ref": "#/components/schemas/WorkflowResponse"}, "templateIdentifier": {"type": "string"}, "createdAt": {"type": "string"}, "lastSeenDate": {"type": "string"}, "lastReadDate": {"type": "string"}, "content": {"oneOf": [{"$ref": "#/components/schemas/EmailBlock"}, {"type": "string"}]}, "transactionId": {"type": "string"}, "subject": {"type": "string"}, "channel": {"enum": ["in_app", "email", "sms", "chat", "push"], "type": "string"}, "read": {"type": "boolean"}, "seen": {"type": "boolean"}, "email": {"type": "string"}, "phone": {"type": "string"}, "directWebhookUrl": {"type": "string"}, "providerId": {"type": "string"}, "deviceTokens": {"type": "array", "items": {"type": "string"}}, "title": {"type": "string"}, "cta": {"$ref": "#/components/schemas/MessageCTA"}, "_feedId": {"type": "object", "nullable": true}, "status": {"type": "string", "enum": ["sent", "error", "warning"]}, "errorId": {"type": "string"}, "errorText": {"type": "string"}, "payload": {"type": "object", "description": "The payload that was used to send the notification trigger"}, "overrides": {"type": "object", "description": "Provider specific overrides used when triggering the notification"}}, "required": ["_templateId", "_environmentId", "_messageTemplateId", "_organizationId", "_notificationId", "_subscriberId", "createdAt", "content", "transactionId", "channel", "read", "seen", "cta", "status", "errorId", "errorText", "payload", "overrides"]}, "MarkMessageActionAsSeenDto": {"type": "object", "properties": {"status": {"enum": ["pending", "done"], "type": "string", "description": "Message action status"}, "payload": {"type": "object", "description": "Message action payload"}}, "required": ["status"]}, "DeleteMessageResponseDto": {"type": "object", "properties": {"acknowledged": {"type": "boolean", "description": "A boolean stating the success of the action"}, "status": {"type": "string", "description": "The status enum for the performed action", "enum": ["deleted"]}}, "required": ["acknowledged", "status"]}, "CreateTopicResponseDto": {"type": "object", "properties": {"_id": {"type": "string", "description": "The unique identifier for the Topic created."}, "key": {"type": "string", "description": "User defined custom key and provided by the user that will be an unique identifier for the Topic created."}}, "required": ["key"]}, "CreateTopicRequestDto": {"type": "object", "properties": {"key": {"type": "string", "description": "User defined custom key and provided by the user that will be an unique identifier for the Topic created."}, "name": {"type": "string", "description": "User defined custom name and provided by the user that will name the Topic created."}}, "required": ["key", "name"]}, "AddSubscribersRequestDto": {"type": "object", "properties": {"subscribers": {"description": "List of subscriber identifiers that will be associated to the topic", "type": "array", "items": {"type": "string"}}}, "required": ["subscribers"]}, "TopicSubscriberDto": {"type": "object", "properties": {"_organizationId": {"type": "string"}, "_environmentId": {"type": "string"}, "_subscriberId": {"type": "string"}, "_topicId": {"type": "string"}, "topicKey": {"type": "string"}, "externalSubscriberId": {"type": "string"}}, "required": ["_organizationId", "_environmentId", "_subscriberId", "_topicId", "topicKey", "externalSubscriberId"]}, "RemoveSubscribersRequestDto": {"type": "object", "properties": {"subscribers": {"description": "List of subscriber identifiers that will be removed to the topic", "type": "array", "items": {"type": "string"}}}, "required": ["subscribers"]}, "TopicDto": {"type": "object", "properties": {"_id": {"type": "string"}, "_organizationId": {"type": "string"}, "_environmentId": {"type": "string"}, "key": {"type": "string"}, "name": {"type": "string"}, "subscribers": {"type": "array", "items": {"type": "string"}}}, "required": ["_organizationId", "_environmentId", "key", "name", "subscribers"]}, "FilterTopicsResponseDto": {"type": "object", "properties": {"data": {"type": "array", "items": {"$ref": "#/components/schemas/TopicDto"}}, "page": {"type": "number"}, "pageSize": {"type": "number"}, "totalCount": {"type": "number"}}, "required": ["data", "page", "pageSize", "totalCount"]}, "GetTopicResponseDto": {"type": "object", "properties": {"_id": {"type": "string"}, "_organizationId": {"type": "string"}, "_environmentId": {"type": "string"}, "key": {"type": "string"}, "name": {"type": "string"}, "subscribers": {"type": "array", "items": {"type": "string"}}}, "required": ["_organizationId", "_environmentId", "key", "name", "subscribers"]}, "RenameTopicResponseDto": {"type": "object", "properties": {"_id": {"type": "string"}, "_organizationId": {"type": "string"}, "_environmentId": {"type": "string"}, "key": {"type": "string"}, "name": {"type": "string"}, "subscribers": {"type": "array", "items": {"type": "string"}}}, "required": ["_organizationId", "_environmentId", "key", "name", "subscribers"]}, "RenameTopicRequestDto": {"type": "object", "properties": {"name": {"type": "string", "description": "User defined custom name and provided by the user to rename the topic."}}, "required": ["name"]}, "GeneratePreviewResponseDto": {"type": "object", "properties": {}}}, "headers": {"Content-Type": {"required": true, "description": "The MIME type of the response body.", "schema": {"type": "string"}, "example": "application/json"}, "RateLimit-Limit": {"required": false, "description": "The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled.", "schema": {"type": "string"}, "example": "100"}, "RateLimit-Remaining": {"required": false, "description": "The number of requests remaining until the next window.", "schema": {"type": "string"}, "example": "93"}, "RateLimit-Reset": {"required": false, "description": "The remaining seconds until a request of the same cost will be refreshed.", "schema": {"type": "string"}, "example": "8"}, "RateLimit-Policy": {"required": false, "description": "The rate limit policy that was used to evaluate the request.", "schema": {"type": "string"}, "example": "100;w=1;burst=110;comment=\"token bucket\";category=\"trigger\";cost=\"single\""}, "Retry-After": {"required": false, "description": "The number of seconds after which the client may retry the request that was previously rejected.", "schema": {"type": "string"}, "example": "8"}, "Idempotency-Key": {"required": false, "description": "The idempotency key used to evaluate the request.", "schema": {"type": "string"}, "example": "8"}, "Idempotency-Replay": {"required": false, "description": "Whether the request was a replay of a previous request.", "schema": {"type": "string"}, "example": "true"}, "Link": {"required": false, "description": "A link to the documentation.", "schema": {"type": "string"}, "example": "https://docs.novu.co/"}}}, "externalDocs": {"description": "Novu Documentation", "url": "https://docs.novu.co"}, "x-speakeasy-name-override": [{"operationId": "^.*get.*", "methodNameOverride": "retrieve"}, {"operationId": "^.*retrieve.*", "methodNameOverride": "retrieve"}, {"operationId": "^.*create.*", "methodNameOverride": "create"}, {"operationId": "^.*update.*", "methodNameOverride": "update"}, {"operationId": "^.*list.*", "methodNameOverride": "list"}, {"operationId": "^.*delete.*", "methodNameOverride": "delete"}, {"operationId": "^.*remove.*", "methodNameOverride": "delete"}], "x-speakeasy-retries": {"strategy": "backoff", "backoff": {"initialInterval": 500, "maxInterval": 30000, "maxElapsedTime": 3600000, "exponent": 1.5}, "statusCodes": ["408", "409", "429", "5XX"], "retryConnectionErrors": true}} diff --git a/.speakeasy/temp/applied_hdbdDBZBfI.yaml b/.speakeasy/temp/applied_hdbdDBZBfI.yaml new file mode 100644 index 00000000..aad4f49e --- /dev/null +++ b/.speakeasy/temp/applied_hdbdDBZBfI.yaml @@ -0,0 +1,8807 @@ +openapi: 3.0.0 +paths: + /v1/environments/me: + get: + operationId: EnvironmentsControllerV1_getCurrentEnvironment + summary: Get current environment + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/EnvironmentResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Environments + security: + - api-key: [] + /v1/environments: + get: + operationId: EnvironmentsControllerV1_listMyEnvironments + summary: Get environments + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/EnvironmentResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Environments + security: + - api-key: [] + /v1/environments/api-keys: + get: + operationId: EnvironmentsControllerV1_listOrganizationApiKeys + x-speakeasy-group: Environments.ApiKeys + summary: Get api keys + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApiKey' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Environments + security: + - api-key: [] + /v1/execution-details: + get: + operationId: ExecutionDetailsController_getExecutionDetailsForNotification + summary: Get execution details + parameters: + - name: notificationId + required: true + in: query + schema: + type: string + - name: subscriberId + required: true + in: query + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ExecutionDetailsResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Execution Details + security: + - api-key: [] + /v1/events/trigger: + post: + operationId: EventsController_trigger + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Trigger Notification Event + x-speakeasy-name-override: trigger + summary: Trigger event + description: "\n Trigger event is the main (and only) way to send notifications to subscribers. \n The trigger identifier is used to match the particular workflow associated with it. \n Additional information can be passed according the body interface below.\n " + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/events/trigger/bulk: + post: + operationId: EventsController_triggerBulk + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Trigger Notification Events in Bulk + x-speakeasy-name-override: triggerBulk + summary: Bulk trigger event + description: "\n Using this endpoint you can trigger multiple events at once, to avoid multiple calls to the API.\n The bulk API is limited to 100 events per request.\n " + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BulkTriggerEventDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TriggerEventResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/events/trigger/broadcast: + post: + operationId: EventsController_broadcastEventToAll + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Broadcast Event to All + x-speakeasy-name-override: triggerBroadcast + summary: Broadcast event to all + description: >- + Trigger a broadcast event to all existing subscribers, could be used to send announcements, etc. + + In the future could be used to trigger events to a subset of subscribers based on defined filters. + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventToAllRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/events/trigger/{transactionId}: + delete: + operationId: EventsController_cancel + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Cancel Triggered Event + x-speakeasy-name-override: cancel + summary: Cancel triggered event + description: "\n Using a previously generated transactionId during the event trigger,\n will cancel any active or pending workflows. This is useful to cancel active digests, delays etc...\n " + parameters: + - name: transactionId + required: true + in: path + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DataBooleanDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/notifications: + get: + operationId: NotificationsController_listNotifications + summary: Get notifications + parameters: + - name: channels + required: true + in: query + schema: + type: array + items: + type: string + enum: + - in_app + - email + - sms + - chat + - push + - name: templates + required: true + in: query + schema: + type: array + items: + type: string + - name: emails + required: true + in: query + schema: + type: array + items: + type: string + - name: search + required: true + in: query + deprecated: true + schema: + type: string + - name: subscriberIds + required: true + in: query + schema: + type: array + items: + type: string + - name: page + required: false + in: query + schema: + default: 0 + type: number + - name: transactionId + required: false + in: query + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivitiesResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notifications/stats: + get: + operationId: NotificationsController_getActivityStats + x-speakeasy-group: Notifications.Stats + summary: Get notification statistics + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivityStatsResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notifications/graph/stats: + get: + operationId: NotificationsController_getActivityGraphStats + x-speakeasy-name-override: graph + x-speakeasy-group: Notifications.Stats + summary: Get notification graph statistics + parameters: + - name: days + required: false + in: query + schema: + type: number + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ActivityGraphStatesResponse' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notifications/{notificationId}: + get: + operationId: NotificationsController_getNotification + summary: Get notification + parameters: + - name: notificationId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivityNotificationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notification-groups: + post: + operationId: NotificationGroupsController_createNotificationGroup + summary: Create workflow group + description: workflow group was previously named notification group + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNotificationGroupRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + get: + operationId: NotificationGroupsController_listNotificationGroups + summary: Get workflow groups + description: workflow group was previously named notification group + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + /v1/notification-groups/{id}: + get: + operationId: NotificationGroupsController_getNotificationGroup + summary: Get workflow group + description: workflow group was previously named notification group + parameters: + - name: id + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + patch: + operationId: NotificationGroupsController_updateNotificationGroup + summary: Update workflow group + description: workflow group was previously named notification group + parameters: + - name: id + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNotificationGroupRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + delete: + operationId: NotificationGroupsController_deleteNotificationGroup + summary: Delete workflow group + description: workflow group was previously named notification group + parameters: + - name: id + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteNotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + /v1/integrations: + get: + operationId: IntegrationsController_listIntegrations + summary: Get integrations + description: >- + Return all the integrations the user has created for that organization. Review v.0.17.0 changelog for a breaking change + parameters: [] + responses: + '200': + description: >- + The list of integrations belonging to the organization that are successfully returned. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + post: + operationId: IntegrationsController_createIntegration + summary: Create integration + description: >- + Create an integration for the current environment the user is based on the API key provided + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIntegrationRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/active: + get: + operationId: IntegrationsController_getActiveIntegrations + x-speakeasy-name-override: listActive + summary: Get active integrations + description: >- + Return all the active integrations the user has created for that organization. Review v.0.17.0 changelog for a breaking change + parameters: [] + responses: + '200': + description: >- + The list of active integrations belonging to the organization that are successfully returned. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/webhook/provider/{providerOrIntegrationId}/status: + get: + operationId: IntegrationsController_getWebhookSupportStatus + x-speakeasy-group: Integrations.Webhooks + summary: Get webhook support status for provider + description: >- + Return the status of the webhook for this provider, if it is supported or if it is not based on a boolean value + parameters: + - name: providerOrIntegrationId + required: true + in: path + schema: + type: string + responses: + '200': + description: The status of the webhook for the provider requested + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: boolean + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/{integrationId}: + put: + operationId: IntegrationsController_updateIntegrationById + summary: Update integration + parameters: + - name: integrationId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateIntegrationRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseDto' + '404': + description: >- + The integration with the integrationId provided does not exist in the database. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + delete: + operationId: IntegrationsController_removeIntegration + summary: Delete integration + parameters: + - name: integrationId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/{integrationId}/set-primary: + post: + operationId: IntegrationsController_setIntegrationAsPrimary + x-speakeasy-name-override: setAsPrimary + summary: Set integration as primary + parameters: + - name: integrationId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseDto' + '404': + description: >- + The integration with the integrationId provided does not exist in the database. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/subscribers: + get: + operationId: SubscribersController_listSubscribers + x-speakeasy-pagination: + type: offsetLimit + inputs: + - name: page + in: parameters + type: page + - name: limit + in: parameters + type: limit + outputs: + results: $.data.resultArray + summary: Get subscribers + description: >- + Returns a list of subscribers, could paginated using the `page` and `limit` query parameter + parameters: + - name: page + required: false + in: query + schema: + type: number + - name: limit + required: false + in: query + schema: + maximum: 100 + default: 10 + type: number + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/PaginatedResponseDto' + - properties: + data: + type: array + items: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + post: + operationId: SubscribersController_createSubscriber + summary: Create subscriber + description: >- + Creates a subscriber entity, in the Novu platform. The subscriber will be later used to receive notifications, and access notification feeds. Communication credentials such as email, phone number, and 3 rd party credentials i.e slack tokens could be later associated to this entity. + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSubscriberRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}: + get: + operationId: SubscribersController_getSubscriber + summary: Get subscriber + description: Get subscriber by your internal id used to identify the subscriber + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: includeTopics + required: false + in: query + description: Includes the topics associated with the subscriber + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + put: + operationId: SubscribersController_updateSubscriber + summary: Update subscriber + description: Used to update the subscriber entity with new information + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + delete: + operationId: SubscribersController_removeSubscriber + summary: Delete subscriber + description: Deletes a subscriber entity from the Novu platform + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteSubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/bulk: + post: + operationId: SubscribersController_bulkCreateSubscribers + x-speakeasy-name-override: createBulk + summary: Bulk create subscribers + description: "\n Using this endpoint you can create multiple subscribers at once, to avoid multiple calls to the API.\n The bulk API is limited to 500 subscribers per request.\n " + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSubscriberCreateDto' + responses: + '201': + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials: + put: + operationId: SubscribersController_updateSubscriberChannel + x-speakeasy-group: Subscribers.Credentials + summary: Update subscriber credentials + description: >- + Subscriber credentials associated to the delivery methods such as slack and push tokens. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberChannelRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + patch: + operationId: SubscribersController_modifySubscriberChannel + x-speakeasy-name-override: append + x-speakeasy-group: Subscribers.Credentials + summary: Modify subscriber credentials + description: >- + Subscriber credentials associated to the delivery methods such as slack and push tokens. + + This endpoint appends provided credentials and deviceTokens to the existing ones. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberChannelRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials/{providerId}: + delete: + operationId: SubscribersController_deleteSubscriberCredentials + x-speakeasy-group: Subscribers.Credentials + summary: Delete subscriber credentials by providerId + description: Delete subscriber credentials such as slack and expo tokens. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: providerId + required: true + in: path + schema: + type: string + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/online-status: + patch: + operationId: SubscribersController_updateSubscriberOnlineFlag + x-speakeasy-name-override: updateOnlineFlag + x-speakeasy-group: Subscribers.properties + summary: Update subscriber online status + description: Used to update the subscriber isOnline flag. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberOnlineFlagRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/preferences: + get: + operationId: SubscribersController_listSubscriberPreferences + x-speakeasy-group: Subscribers.Preferences + summary: Get subscriber preferences + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: includeInactiveChannels + required: false + in: query + description: >- + A flag which specifies if the inactive workflow channels should be included in the retrieved preferences. Default is true + schema: + type: boolean + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/UpdateSubscriberPreferenceResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + patch: + operationId: SubscribersController_updateSubscriberGlobalPreferences + x-speakeasy-name-override: updateGlobal + x-speakeasy-group: Subscribers.Preferences + summary: Update subscriber global preferences + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberGlobalPreferencesRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberPreferenceResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/preferences/{parameter}: + get: + operationId: SubscribersController_getSubscriberPreferenceByLevel + x-speakeasy-name-override: retrieveByLevel + x-speakeasy-group: Subscribers.Preferences + summary: Get subscriber preferences by level + parameters: + - name: includeInactiveChannels + required: false + in: query + description: >- + A flag which specifies if the inactive workflow channels should be included in the retrieved preferences. Default is true + schema: + type: boolean + - name: parameter + required: true + in: path + description: 'the preferences level to be retrieved (template / global) ' + schema: + enum: + - global + - template + type: string + - name: subscriberId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/GetSubscriberPreferencesResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + patch: + operationId: SubscribersController_updateSubscriberPreference + x-speakeasy-group: Subscribers.Preferences + summary: Update subscriber preference + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: parameter + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberPreferenceRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberPreferenceResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/notifications/feed: + get: + operationId: SubscribersController_getNotificationsFeed + x-speakeasy-group: Subscribers.Notifications + summary: Get in-app notification feed for a particular subscriber + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: page + required: false + in: query + schema: + type: number + - name: limit + required: false + in: query + schema: + maximum: 100 + default: 10 + type: number + - name: read + required: false + in: query + schema: + type: boolean + - name: seen + required: false + in: query + schema: + type: boolean + - name: payload + required: false + in: query + description: Base64 encoded string of the partial payload JSON object + example: >- + btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string like eyJmb28iOjEyM30= + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/PaginatedResponseDto' + - properties: + data: + type: array + items: + $ref: '#/components/schemas/FeedResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/notifications/unseen: + get: + operationId: SubscribersController_getUnseenCount + x-speakeasy-name-override: unseenCount + x-speakeasy-group: Subscribers.Notifications + summary: Get the unseen in-app notifications count for subscribers feed + parameters: + - name: seen + required: true + in: query + schema: + type: boolean + - name: subscriberId + required: true + in: path + schema: + type: string + - name: limit + required: true + in: query + schema: + type: number + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/UnseenCountResponse' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/messages/mark-as: + post: + operationId: SubscribersController_markMessagesAs + x-speakeasy-name-override: markAllAs + x-speakeasy-group: Subscribers.Messages + summary: Mark a subscriber messages as seen, read, unseen or unread + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MessageMarkAsRequestDto' + responses: + '201': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MessageEntity' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/messages/mark-all: + post: + operationId: SubscribersController_markAllUnreadAsRead + x-speakeasy-name-override: markAll + x-speakeasy-group: Subscribers.Messages + summary: >- + Marks all the subscriber messages as read, unread, seen or unseen. Optionally you can pass feed id (or array) to mark messages of a particular feed. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MarkAllMessageAsRequestDto' + responses: + '201': + description: '' + content: + application/json: + schema: + type: number + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}: + post: + operationId: SubscribersController_markActionAsSeen + x-speakeasy-name-override: updateAsSeen + x-speakeasy-group: Subscribers.Messages + summary: Mark message action as seen + parameters: + - name: messageId + required: true + in: path + schema: + type: string + - name: type + required: true + in: path + schema: {} + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MarkMessageActionAsSeenDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials/{providerId}/oauth/callback: + get: + operationId: SubscribersController_chatOauthCallback + x-speakeasy-name-override: chatAccessOauthCallBack + x-speakeasy-group: Subscribers.Authentication + summary: Handle providers oauth redirect + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: providerId + required: true + in: path + schema: {} + - name: code + required: true + in: query + schema: + type: string + - name: hmacHash + required: true + in: query + schema: + type: string + - name: environmentId + required: true + in: query + schema: + type: string + - name: integrationIdentifier + required: false + in: query + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + type: object + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials/{providerId}/oauth: + get: + operationId: SubscribersController_chatAccessOauth + x-speakeasy-name-override: chatAccessOauth + x-speakeasy-group: Subscribers.Authentication + summary: Handle chat oauth + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: providerId + required: true + in: path + schema: {} + - name: hmacHash + required: true + in: query + schema: + type: string + - name: environmentId + required: true + in: query + schema: + type: string + - name: integrationIdentifier + required: false + in: query + schema: + type: string + responses: + '200': + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/messages: + get: + operationId: MessagesController_getMessages + summary: Get messages + description: >- + Returns a list of messages, could paginate using the `page` query parameter + parameters: + - name: channel + required: false + in: query + schema: + enum: + - in_app + - email + - sms + - chat + - push + type: string + - name: subscriberId + required: false + in: query + schema: + type: string + - name: transactionId + required: false + in: query + schema: + type: array + items: + type: string + - name: page + required: false + in: query + schema: + default: 0 + type: number + - name: limit + required: false + in: query + schema: + default: 10 + type: number + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivitiesResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Messages + security: + - api-key: [] + /v1/messages/{messageId}: + delete: + operationId: MessagesController_deleteMessage + summary: Delete message + description: Deletes a message entity from the Novu platform + parameters: + - name: messageId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteMessageResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Messages + security: + - api-key: [] + /v1/messages/transaction/{transactionId}: + delete: + operationId: MessagesController_deleteMessagesByTransactionId + x-speakeasy-name-override: deleteByTransactionId + summary: Delete messages by transactionId + description: >- + Deletes messages entity from the Novu platform using TransactionId of message + parameters: + - name: channel + required: false + in: query + description: The channel of the message to be deleted + schema: + enum: + - in_app + - email + - sms + - chat + - push + type: string + - name: transactionId + required: true + in: path + schema: + type: string + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Messages + security: + - api-key: [] + /v1/topics: + post: + operationId: TopicsController_createTopic + summary: Topic creation + description: Create a topic + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTopicRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTopicResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + get: + operationId: TopicsController_listTopics + summary: Filter topics + description: >- + Returns a list of topics that can be paginated using the `page` query parameter and filtered by the topic key with the `key` query parameter + parameters: + - name: page + required: false + in: query + description: Number of page for the pagination + schema: + minimum: 0 + default: 0 + type: number + - name: pageSize + required: false + in: query + description: Size of page for the pagination + schema: + minimum: 0 + default: 10 + type: number + - name: key + required: false + in: query + description: Topic key + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/FilterTopicsResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}/subscribers: + post: + operationId: TopicsController_addSubscribers + x-speakeasy-name-override: assign + x-speakeasy-group: Topics.Subscribers + summary: Subscribers addition + description: Add subscribers to a topic by key + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AddSubscribersRequestDto' + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}/subscribers/{externalSubscriberId}: + get: + operationId: TopicsController_getTopicSubscriber + x-speakeasy-group: Topics.Subscribers + summary: Check topic subscriber + description: Check if a subscriber belongs to a certain topic + parameters: + - name: externalSubscriberId + required: true + in: path + description: The external subscriber id + schema: + type: string + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TopicSubscriberDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}/subscribers/removal: + post: + operationId: TopicsController_removeSubscribers + x-speakeasy-group: Topics.Subscribers + summary: Subscribers removal + description: Remove subscribers from a topic + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveSubscribersRequestDto' + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}: + delete: + operationId: TopicsController_deleteTopic + summary: Delete topic + description: Delete a topic by its topic key if it has no subscribers + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + responses: + '204': + description: The topic has been deleted correctly + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '404': + description: >- + The topic with the key provided does not exist in the database so it can not be deleted. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '409': + description: >- + The topic you are trying to delete has subscribers assigned to it. Delete the subscribers before deleting the topic. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + get: + operationId: TopicsController_getTopic + summary: Get topic + description: Get a topic by its topic key + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/GetTopicResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + patch: + operationId: TopicsController_renameTopic + x-speakeasy-name-override: rename + summary: Rename a topic + description: Rename a topic by providing a new name + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RenameTopicRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/RenameTopicResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] +info: + title: Novu API + description: >- + Novu REST API. Please see https://docs.novu.co/api-reference for more details. + version: '1.0' + contact: + name: Novu Support + url: https://discord.gg/novu + email: support@novu.co + termsOfService: https://novu.co/terms + license: + name: MIT + url: https://opensource.org/license/mit +tags: + - name: Events + description: >- + Events represent a change in state of a subscriber. They are used to trigger workflows, and enable you to send notifications to subscribers based on their actions. + externalDocs: + url: https://docs.novu.co/workflows + - name: Subscribers + description: >- + A subscriber in Novu represents someone who should receive a message. A subscriber’s profile information contains important attributes about the subscriber that will be used in messages (name, email). The subscriber object can contain other key-value pairs that can be used to further personalize your messages. + externalDocs: + url: https://docs.novu.co/subscribers/subscribers + - name: Topics + description: >- + Topics are a way to group subscribers together so that they can be notified of events at once. A topic is identified by a custom key. This can be helpful for things like sending out marketing emails or notifying users of new features. Topics can also be used to send notifications to the subscribers who have been grouped together based on their interests, location, activities and much more. + externalDocs: + url: https://docs.novu.co/subscribers/topics + - name: Notification + description: >- + A notification conveys information from source to recipient, triggered by a workflow acting as a message blueprint. Notifications can be individual or bundled as digest for user-friendliness. + externalDocs: + url: https://docs.novu.co/getting-started/introduction + - name: Integrations + description: >- + With the help of the Integration Store, you can easily integrate your favorite delivery provider. During the runtime of the API, the Integrations Store is responsible for storing the configurations of all the providers. + externalDocs: + url: https://docs.novu.co/channels-and-providers/integration-store + - name: Layouts + description: >- + Novu allows the creation of layouts - a specific HTML design or structure to wrap content of email notifications. Layouts can be manipulated and assigned to new or existing workflows within the Novu platform, allowing users to create, manage, and assign these layouts to workflows, so they can be reused to structure the appearance of notifications sent through the platform. + externalDocs: + url: https://docs.novu.co/content-creation-design/layouts + - name: Workflows + description: >- + All notifications are sent via a workflow. Each workflow acts as a container for the logic and blueprint that are associated with a type of notification in your system. + externalDocs: + url: https://docs.novu.co/workflows + - name: Notification Templates + description: >- + Deprecated. Use Workflows (/workflows) instead, which provide the same functionality under a new name. + - name: Workflow groups + description: Workflow groups are used to organize workflows into logical groups. + - name: Changes + description: >- + Changes represent a change in state of an environment. They are analagous to a pending pull request in git, enabling you to test changes before they are applied to your environment and atomically apply them when you are ready. + externalDocs: + url: >- + https://docs.novu.co/platform/environments#promoting-pending-changes-to-production + - name: Environments + description: >- + Novu uses the concept of environments to ensure logical separation of your data and configuration. This means that subscribers, and preferences created in one environment are never accessible to another. + externalDocs: + url: https://docs.novu.co/platform/environments + - name: Inbound Parse + description: >- + Inbound Webhook is a feature that allows processing of incoming emails for a domain or subdomain. The feature parses the contents of the email and POSTs the information to a specified URL in a multipart/form-data format. + externalDocs: + url: https://docs.novu.co/platform/inbound-parse-webhook + - name: Feeds + description: >- + Novu provides a notification activity feed that monitors every outgoing message associated with its relevant metadata. This can be used to monitor activity and discover potential issues with a specific provider or a channel type. + externalDocs: + url: https://docs.novu.co/activity-feed + - name: Tenants + description: >- + A tenant represents a group of users. As a developer, when your apps have organizations, they are referred to as tenants. Tenants in Novu provides the ability to tailor specific notification experiences to users of different groups or organizations. + externalDocs: + url: https://docs.novu.co/tenants + - name: Messages + description: >- + A message in Novu represents a notification delivered to a recipient on a particular channel. Messages contain information about the request that triggered its delivery, a view of the data sent to the recipient, and a timeline of its lifecycle events. Learn more about messages. + externalDocs: + url: https://docs.novu.co/workflows/messages + - name: Organizations + description: >- + An organization serves as a separate entity within your Novu account. Each organization you create has its own separate integration store, workflows, subscribers, and API keys. This separation of resources allows you to manage multi-tenant environments and separate domains within a single account. + externalDocs: + url: https://docs.novu.co/platform/organizations + - name: Execution Details + description: >- + Execution details are used to track the execution of a workflow. They provided detailed information on the execution of a workflow, including the status of each step, the input and output of each step, and the overall status of the execution. + externalDocs: + url: https://docs.novu.co/activity-feed +servers: + - url: https://api.novu.co + - url: https://eu.api.novu.co +components: + securitySchemes: + api-key: + type: apiKey + in: header + name: Authorization + description: >- + API key authentication. Allowed headers-- "Authorization: ApiKey ". + schemas: + DataWrapperDto: + type: object + properties: + data: + type: object + required: + - data + EnvironmentResponseDto: + type: object + properties: + _id: + type: string + name: + type: string + _organizationId: + type: string + identifier: + type: string + apiKeys: + type: array + items: + type: string + _parentId: + type: string + slug: + type: string + required: + - name + - _organizationId + - identifier + - _parentId + ApiKey: + type: object + properties: + key: + type: string + _userId: + type: string + required: + - key + - _userId + ExecutionDetailsResponseDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _jobId: + type: string + _environmentId: + type: string + _notificationId: + type: string + _notificationTemplateId: + type: string + _subscriberId: + type: string + _messageId: + type: string + providerId: + type: string + transactionId: + type: string + channel: + type: string + enum: + - in_app + - email + - sms + - chat + - push + - digest + - trigger + - delay + - custom + detail: + type: string + source: + type: string + enum: + - Credentials + - Internal + - Payload + - Webhook + status: + type: string + enum: + - Success + - Warning + - Failed + - Pending + - Queued + - ReadConfirmation + isTest: + type: boolean + isRetry: + type: boolean + createdAt: + type: string + required: + - _organizationId + - _jobId + - _environmentId + - _notificationId + - _notificationTemplateId + - _subscriberId + - transactionId + - channel + - detail + - source + - status + - isTest + - isRetry + TriggerEventResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: If trigger was acknowledged or not + status: + enum: + - error + - trigger_not_active + - no_workflow_active_steps_defined + - no_workflow_steps_defined + - processed + - subscriber_id_missing + - no_tenant_found + type: string + description: Status for trigger + error: + description: In case of an error, this field will contain the error message + type: array + items: + type: string + transactionId: + type: string + description: Transaction id for trigger + required: + - acknowledged + - status + TopicPayloadDto: + type: object + properties: + topicKey: + type: string + type: + enum: + - Subscriber + - Topic + type: string + example: Topic + required: + - topicKey + - type + TenantPayloadDto: + type: object + properties: + identifier: + type: string + name: + type: string + data: + type: object + SubscriberPayloadDto: + type: object + properties: + subscriberId: + type: string + description: >- + The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems + email: + type: string + firstName: + type: string + lastName: + type: string + phone: + type: string + avatar: + type: string + description: An http url to the profile image of your subscriber + locale: + type: string + data: + type: object + channels: + type: array + items: + type: string + required: + - subscriberId + TriggerEventRequestDto: + type: object + properties: + name: + type: string + description: >- + The trigger identifier of the workflow you wish to send. This identifier can be found on the workflow page. + example: workflow_identifier + payload: + type: object + description: "The payload object is used to pass additional custom information that could be used to render the workflow, or perform routing rules based on it. \n This data will also be available when fetching the notifications feed from the API to display certain parts of the UI." + example: + comment_id: string + post: + text: string + overrides: + type: object + description: This could be used to override provider specific configurations + example: + fcm: + data: + key: value + to: + type: array + description: The recipients list of people who will receive the notification. + items: + oneOf: + - $ref: '#/components/schemas/SubscriberPayloadDto' + - type: string + description: Unique identifier of a subscriber in your systems + example: SUBSCRIBER_ID + - $ref: '#/components/schemas/TopicPayloadDto' + transactionId: + type: string + description: >- + A unique identifier for this transaction, we will generated a UUID if not provided. + actor: + description: "It is used to display the Avatar of the provided actor's subscriber id or actor object.\n If a new actor object is provided, we will create a new subscriber in our system\n " + oneOf: + - type: string + description: Unique identifier of a subscriber in your systems + - $ref: '#/components/schemas/SubscriberPayloadDto' + tenant: + description: "It is used to specify a tenant context during trigger event.\n Existing tenants will be updated with the provided details.\n " + oneOf: + - type: string + description: Unique identifier of a tenant in your system + - $ref: '#/components/schemas/TenantPayloadDto' + bridgeUrl: + type: string + controls: + type: object + required: + - name + - to + BulkTriggerEventDto: + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/TriggerEventRequestDto' + required: + - events + TriggerEventToAllRequestDto: + type: object + properties: + name: + type: string + description: >- + The trigger identifier associated for the template you wish to send. This identifier can be found on the template page. + payload: + type: object + description: "The payload object is used to pass additional custom information that could be used to render the template, or perform routing rules based on it. \n This data will also be available when fetching the notifications feed from the API to display certain parts of the UI." + example: + comment_id: string + post: + text: string + overrides: + type: object + description: This could be used to override provider specific configurations + example: + fcm: + data: + key: value + transactionId: + type: string + description: >- + A unique identifier for this transaction, we will generated a UUID if not provided. + actor: + description: "It is used to display the Avatar of the provided actor's subscriber id or actor object.\n If a new actor object is provided, we will create a new subscriber in our system\n " + oneOf: + - type: string + description: Unique identifier of a subscriber in your systems + - $ref: '#/components/schemas/SubscriberPayloadDto' + tenant: + description: "It is used to specify a tenant context during trigger event.\n If a new tenant object is provided, we will create a new tenant.\n " + oneOf: + - type: string + description: Unique identifier of a tenant in your system + - $ref: '#/components/schemas/TenantPayloadDto' + required: + - name + - payload + DataBooleanDto: + type: object + properties: + data: + type: boolean + required: + - data + ActivitiesResponseDto: + type: object + properties: + hasMore: + type: boolean + data: + type: array + items: + type: string + pageSize: + type: number + page: + type: number + required: + - hasMore + - data + - pageSize + - page + ActivityStatsResponseDto: + type: object + properties: + weeklySent: + type: number + monthlySent: + type: number + required: + - weeklySent + - monthlySent + ActivityGraphStatesResponse: + type: object + properties: + _id: + type: string + count: + type: number + templates: + type: array + items: + type: string + channels: + type: array + items: + type: string + enum: + - in_app + - email + - sms + - chat + - push + required: + - _id + - count + - templates + - channels + ActivityNotificationSubscriberResponseDto: + type: object + properties: + firstName: + type: string + _id: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + required: + - _id + ActivityNotificationTemplateResponseDto: + type: object + properties: + _id: + type: string + name: + type: string + triggers: + type: array + items: + type: string + required: + - name + - triggers + ActivityNotificationResponseDto: + type: object + properties: + _id: + type: string + _environmentId: + type: string + _organizationId: + type: string + transactionId: + type: string + createdAt: + type: string + channels: + type: string + items: + type: string + enum: + - in_app + - email + - sms + - chat + - push + - digest + - trigger + - delay + - custom + enum: + - in_app + - email + - sms + - chat + - push + - digest + - trigger + - delay + - custom + subscriber: + $ref: '#/components/schemas/ActivityNotificationSubscriberResponseDto' + template: + $ref: '#/components/schemas/ActivityNotificationTemplateResponseDto' + jobs: + type: array + items: + type: string + required: + - _environmentId + - _organizationId + - transactionId + NotificationGroupResponseDto: + type: object + properties: + _id: + type: string + name: + type: string + _environmentId: + type: string + _organizationId: + type: string + _parentId: + type: string + required: + - name + - _environmentId + - _organizationId + CreateNotificationGroupRequestDto: + type: object + properties: + name: + type: string + required: + - name + DeleteNotificationGroupResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: A boolean stating the success of the action + status: + type: string + description: The status enum for the performed action + enum: + - deleted + required: + - acknowledged + - status + CredentialsDto: + type: object + properties: + apiKey: + type: string + user: + type: string + secretKey: + type: string + domain: + type: string + password: + type: string + host: + type: string + port: + type: string + secure: + type: boolean + region: + type: string + accountSid: + type: string + messageProfileId: + type: string + token: + type: string + from: + type: string + senderName: + type: string + projectName: + type: string + applicationId: + type: string + clientId: + type: string + requireTls: + type: boolean + ignoreTls: + type: boolean + tlsOptions: + type: object + baseUrl: + type: string + webhookUrl: + type: string + redirectUrl: + type: string + hmac: + type: boolean + serviceAccount: + type: string + ipPoolName: + type: string + apiKeyRequestHeader: + type: string + secretKeyRequestHeader: + type: string + idPath: + type: string + datePath: + type: string + apiToken: + type: string + authenticateByToken: + type: boolean + authenticationTokenKey: + type: string + instanceId: + type: string + alertUid: + type: string + title: + type: string + imageUrl: + type: string + state: + type: string + externalLink: + type: string + channelId: + type: string + phoneNumberIdentification: + type: string + accessKey: + type: string + FieldFilterPart: + type: object + properties: + field: + type: string + value: + type: string + operator: + type: string + enum: + - LARGER + - SMALLER + - LARGER_EQUAL + - SMALLER_EQUAL + - EQUAL + - NOT_EQUAL + - ALL_IN + - ANY_IN + - NOT_IN + - BETWEEN + - NOT_BETWEEN + - LIKE + - NOT_LIKE + - IN + 'on': + type: string + enum: + - subscriber + - payload + required: + - field + - value + - operator + - 'on' + StepFilter: + type: object + properties: + isNegated: + type: boolean + type: + type: string + enum: + - BOOLEAN + - TEXT + - DATE + - NUMBER + - STATEMENT + - LIST + - MULTI_LIST + - GROUP + value: + type: string + enum: + - AND + - OR + children: + type: array + items: + $ref: '#/components/schemas/FieldFilterPart' + required: + - isNegated + - type + - value + - children + IntegrationResponseDto: + type: object + properties: + _id: + type: string + _environmentId: + type: string + _organizationId: + type: string + name: + type: string + identifier: + type: string + providerId: + type: string + channel: + enum: + - in_app + - email + - sms + - chat + - push + type: string + credentials: + $ref: '#/components/schemas/CredentialsDto' + active: + type: boolean + deleted: + type: boolean + deletedAt: + type: string + deletedBy: + type: string + primary: + type: boolean + conditions: + type: array + items: + $ref: '#/components/schemas/StepFilter' + required: + - _environmentId + - _organizationId + - name + - identifier + - providerId + - channel + - credentials + - active + - deleted + - deletedAt + - deletedBy + - primary + CreateIntegrationRequestDto: + type: object + properties: + name: + type: string + identifier: + type: string + _environmentId: + type: string + providerId: + type: string + channel: + enum: + - in_app + - email + - sms + - chat + - push + type: string + credentials: + $ref: '#/components/schemas/CredentialsDto' + active: + type: boolean + description: >- + If the integration is active the validation on the credentials field will run + check: + type: boolean + conditions: + type: array + items: + $ref: '#/components/schemas/StepFilter' + required: + - providerId + - channel + UpdateIntegrationRequestDto: + type: object + properties: + name: + type: string + identifier: + type: string + _environmentId: + type: string + active: + type: boolean + description: >- + If the integration is active the validation on the credentials field will run + credentials: + $ref: '#/components/schemas/CredentialsDto' + removeNovuBranding: + type: boolean + description: If true, the Novu branding will be removed from the Inbox component + check: + type: boolean + conditions: + type: array + items: + $ref: '#/components/schemas/StepFilter' + PaginatedResponseDto: + type: object + properties: + page: + type: number + description: The current page of the paginated response + hasMore: + type: boolean + description: Does the list have more items to fetch + pageSize: + type: number + description: Number of items on each page + data: + description: The list of items matching the query + type: array + items: + type: object + required: + - page + - hasMore + - pageSize + - data + ChannelCredentials: + type: object + properties: + webhookUrl: + type: string + description: >- + Webhook url used by chat app integrations. The webhook should be obtained from the chat app provider. + channel: + type: string + description: Channel specification for Mattermost chat notifications + deviceTokens: + description: >- + Contains an array of the subscriber device tokens for a given provider. Used on Push integrations + type: array + items: + type: string + alertUid: + type: string + description: alert_uid for grafana on-call webhook payload + title: + type: string + description: title to be used with grafana on call webhook + imageUrl: + type: string + description: image_url property fo grafana on call webhook + state: + type: string + description: state property fo grafana on call webhook + externalUrl: + type: string + description: link_to_upstream_details property fo grafana on call webhook + required: + - webhookUrl + ChannelSettings: + type: object + properties: + providerId: + type: string + enum: + - slack + - discord + - msteams + - mattermost + - ryver + - zulip + - grafana-on-call + - getstream + - rocket-chat + - whatsapp-business + - fcm + - apns + - expo + - one-signal + - pushpad + - push-webhook + - pusher-beams + description: The provider identifier for the credentials + integrationIdentifier: + type: string + description: The integration identifier + credentials: + description: Credentials payload for the specified provider + allOf: + - $ref: '#/components/schemas/ChannelCredentials' + _integrationId: + type: string + description: Id of the integration that is used for this channel + required: + - providerId + - credentials + - _integrationId + SubscriberResponseDto: + type: object + properties: + _id: + type: string + description: >- + The internal id novu generated for your subscriber, this is not the subscriberId matching your query. See `subscriberId` for that + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + avatar: + type: string + locale: + type: string + subscriberId: + type: string + description: >- + The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems + channels: + description: Channels settings for subscriber + type: array + items: + $ref: '#/components/schemas/ChannelSettings' + topics: + description: Topics that subscriber belongs to + type: array + items: + type: string + isOnline: + type: boolean + lastOnlineAt: + type: string + _organizationId: + type: string + _environmentId: + type: string + deleted: + type: boolean + createdAt: + type: string + updatedAt: + type: string + __v: + type: number + required: + - subscriberId + - _organizationId + - _environmentId + - deleted + - createdAt + - updatedAt + CreateSubscriberRequestDto: + type: object + properties: + subscriberId: + type: string + description: >- + The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems + email: + type: string + firstName: + type: string + lastName: + type: string + phone: + type: string + avatar: + type: string + description: An http url to the profile image of your subscriber + locale: + type: string + data: + type: object + channels: + type: array + items: + type: string + required: + - subscriberId + BulkSubscriberCreateDto: + type: object + properties: + subscribers: + type: array + items: + type: string + required: + - subscribers + UpdateSubscriberRequestDto: + type: object + properties: + email: + type: string + firstName: + type: string + lastName: + type: string + phone: + type: string + avatar: + type: string + locale: + type: string + data: + type: object + channels: + type: array + items: + type: string + UpdateSubscriberChannelRequestDto: + type: object + properties: + providerId: + type: string + enum: + - slack + - discord + - msteams + - mattermost + - ryver + - zulip + - grafana-on-call + - getstream + - rocket-chat + - whatsapp-business + - fcm + - apns + - expo + - one-signal + - pushpad + - push-webhook + - pusher-beams + description: The provider identifier for the credentials + integrationIdentifier: + type: string + description: The integration identifier + credentials: + description: Credentials payload for the specified provider + allOf: + - $ref: '#/components/schemas/ChannelCredentials' + required: + - providerId + - credentials + UpdateSubscriberOnlineFlagRequestDto: + type: object + properties: + isOnline: + type: boolean + required: + - isOnline + DeleteSubscriberResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: A boolean stating the success of the action + status: + type: string + description: The status enum for the performed action + enum: + - deleted + required: + - acknowledged + - status + TemplateResponse: + type: object + properties: + _id: + type: string + description: Unique identifier of the workflow + name: + type: string + description: Name of the workflow + critical: + type: boolean + description: >- + Critical templates will always be delivered to the end user and should be hidden from the subscriber preferences screen + triggers: + description: Triggers are the events that will trigger the workflow. + type: array + items: + type: string + required: + - _id + - name + - critical + - triggers + PreferenceChannels: + type: object + properties: + email: + type: boolean + sms: + type: boolean + in_app: + type: boolean + chat: + type: boolean + push: + type: boolean + Preference: + type: object + properties: + enabled: + type: boolean + description: >- + Sets if the workflow is fully enabled for all channels or not for the subscriber. + channels: + description: >- + Subscriber preferences for the different channels regarding this workflow + allOf: + - $ref: '#/components/schemas/PreferenceChannels' + required: + - enabled + - channels + UpdateSubscriberPreferenceResponseDto: + type: object + properties: + template: + description: The workflow information and if it is critical or not + allOf: + - $ref: '#/components/schemas/TemplateResponse' + preference: + description: The preferences of the subscriber regarding the related workflow + allOf: + - $ref: '#/components/schemas/Preference' + required: + - template + - preference + GetSubscriberPreferencesResponseDto: + type: object + properties: + template: + description: The workflow information and if it is critical or not + allOf: + - $ref: '#/components/schemas/TemplateResponse' + preference: + description: The preferences of the subscriber regarding the related workflow + allOf: + - $ref: '#/components/schemas/Preference' + required: + - preference + ChannelPreference: + type: object + properties: + type: + type: string + enum: + - in_app + - email + - sms + - chat + - push + description: The type of channel that is enabled or not + enabled: + type: boolean + description: If channel is enabled or not + required: + - type + - enabled + UpdateSubscriberPreferenceRequestDto: + type: object + properties: + channel: + description: >- + The subscriber preferences for every ChannelTypeEnum for the workflow assigned. + allOf: + - $ref: '#/components/schemas/ChannelPreference' + enabled: + type: boolean + description: >- + Sets if the workflow is fully enabled for all channels or not for the subscriber. + UpdateSubscriberGlobalPreferencesRequestDto: + type: object + properties: + enabled: + type: boolean + description: Enable or disable the subscriber global preferences. + preferences: + description: The subscriber global preferences for every ChannelTypeEnum. + type: array + items: + $ref: '#/components/schemas/ChannelPreference' + FeedResponseDto: + type: object + properties: + totalCount: + type: number + hasMore: + type: boolean + data: + type: array + items: + type: string + pageSize: + type: number + page: + type: number + required: + - hasMore + - data + - pageSize + - page + UnseenCountResponse: + type: object + properties: + count: + type: number + required: + - count + MessageMarkAsRequestDto: + type: object + properties: + messageId: + oneOf: + - type: string + - type: array + items: + type: string + markAs: + enum: + - read + - seen + - unread + - unseen + type: string + required: + - messageId + - markAs + MessageEntity: + type: object + properties: {} + MarkAllMessageAsRequestDto: + type: object + properties: + feedIdentifier: + oneOf: + - type: string + - type: array + items: + type: string + description: Optional feed identifier or array of feed identifiers + markAs: + enum: + - read + - seen + - unread + - unseen + type: string + description: Mark all subscriber messages as read, unread, seen or unseen + required: + - markAs + EmailBlockStyles: + type: object + properties: + textAlign: + type: string + enum: + - center + - left + - right + required: + - textAlign + EmailBlock: + type: object + properties: + type: + enum: + - button + - text + type: string + content: + type: string + url: + type: string + styles: + $ref: '#/components/schemas/EmailBlockStyles' + required: + - type + - content + MessageCTAData: + type: object + properties: + url: + type: string + MessageButton: + type: object + properties: + type: + type: string + enum: + - primary + - secondary + content: + type: string + resultContent: + type: string + required: + - type + - content + MessageActionResult: + type: object + properties: + payload: + type: object + type: + type: string + enum: + - primary + - secondary + MessageAction: + type: object + properties: + status: + type: string + enum: + - pending + - done + buttons: + type: array + items: + $ref: '#/components/schemas/MessageButton' + result: + $ref: '#/components/schemas/MessageActionResult' + MessageCTA: + type: object + properties: + type: + type: string + enum: + - redirect + data: + $ref: '#/components/schemas/MessageCTAData' + action: + $ref: '#/components/schemas/MessageAction' + required: + - data + NotificationGroup: + type: object + properties: + _id: + type: string + name: + type: string + _environmentId: + type: string + _organizationId: + type: string + _parentId: + type: string + required: + - name + - _environmentId + - _organizationId + DigestRegularMetadata: + type: object + properties: + amount: + type: number + unit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + digestKey: + type: string + type: + type: string + enum: + - regular + - backoff + backoff: + type: boolean + backoffAmount: + type: number + backoffUnit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + updateMode: + type: boolean + required: + - type + TimedConfig: + type: object + properties: + atTime: + type: string + weekDays: + type: array + items: + type: string + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + monthDays: + type: array + items: + type: string + ordinal: + type: string + enum: + - '1' + - '2' + - '3' + - '4' + - '5' + - last + ordinalValue: + type: string + enum: + - day + - weekday + - weekend + - sunday + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + monthlyType: + type: string + enum: + - each + - 'on' + DigestTimedMetadata: + type: object + properties: + amount: + type: number + unit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + digestKey: + type: string + type: + type: string + enum: + - timed + timed: + $ref: '#/components/schemas/TimedConfig' + required: + - type + DelayRegularMetadata: + type: object + properties: + amount: + type: number + unit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + type: + type: string + enum: + - regular + required: + - type + DelayScheduledMetadata: + type: object + properties: + type: + type: string + enum: + - scheduled + delayPath: + type: string + required: + - type + - delayPath + MessageTemplate: + type: object + properties: {} + NotificationStepVariant: + type: object + properties: + _id: + type: string + uuid: + type: string + name: + type: string + _templateId: + type: string + active: + type: boolean + shouldStopOnFail: + type: boolean + template: + $ref: '#/components/schemas/MessageTemplate' + filters: + type: array + items: + $ref: '#/components/schemas/StepFilter' + _parentId: + type: object + metadata: + oneOf: + - $ref: '#/components/schemas/DigestRegularMetadata' + - $ref: '#/components/schemas/DigestTimedMetadata' + - $ref: '#/components/schemas/DelayRegularMetadata' + - $ref: '#/components/schemas/DelayScheduledMetadata' + replyCallback: + type: object + NotificationStep: + type: object + properties: + _id: + type: string + uuid: + type: string + name: + type: string + _templateId: + type: string + active: + type: boolean + shouldStopOnFail: + type: boolean + template: + $ref: '#/components/schemas/MessageTemplate' + filters: + type: array + items: + $ref: '#/components/schemas/StepFilter' + _parentId: + type: object + metadata: + oneOf: + - $ref: '#/components/schemas/DigestRegularMetadata' + - $ref: '#/components/schemas/DigestTimedMetadata' + - $ref: '#/components/schemas/DelayRegularMetadata' + - $ref: '#/components/schemas/DelayScheduledMetadata' + replyCallback: + type: object + variants: + $ref: '#/components/schemas/NotificationStepVariant' + NotificationTriggerVariable: + type: object + properties: + name: + type: string + required: + - name + NotificationTrigger: + type: object + properties: + type: + type: string + enum: + - event + identifier: + type: string + variables: + type: array + items: + $ref: '#/components/schemas/NotificationTriggerVariable' + subscriberVariables: + type: array + items: + $ref: '#/components/schemas/NotificationTriggerVariable' + required: + - type + - identifier + - variables + WorkflowResponse: + type: object + properties: + _id: + type: string + name: + type: string + description: + type: string + active: + type: boolean + draft: + type: boolean + preferenceSettings: + $ref: '#/components/schemas/PreferenceChannels' + critical: + type: boolean + tags: + type: array + items: + type: string + steps: + type: array + items: + $ref: '#/components/schemas/NotificationStep' + _organizationId: + type: string + _creatorId: + type: string + _environmentId: + type: string + triggers: + type: array + items: + $ref: '#/components/schemas/NotificationTrigger' + _notificationGroupId: + type: string + _parentId: + type: string + deleted: + type: boolean + deletedAt: + type: string + deletedBy: + type: string + notificationGroup: + $ref: '#/components/schemas/NotificationGroup' + data: + type: object + workflowIntegrationStatus: + type: object + required: + - name + - description + - active + - draft + - preferenceSettings + - critical + - tags + - steps + - _organizationId + - _creatorId + - _environmentId + - triggers + - _notificationGroupId + - deleted + - deletedAt + - deletedBy + MessageResponseDto: + type: object + properties: + _id: + type: string + _templateId: + type: string + _environmentId: + type: string + _messageTemplateId: + type: string + _organizationId: + type: string + _notificationId: + type: string + _subscriberId: + type: string + subscriber: + $ref: '#/components/schemas/SubscriberResponseDto' + template: + $ref: '#/components/schemas/WorkflowResponse' + templateIdentifier: + type: string + createdAt: + type: string + lastSeenDate: + type: string + lastReadDate: + type: string + content: + oneOf: + - $ref: '#/components/schemas/EmailBlock' + - type: string + transactionId: + type: string + subject: + type: string + channel: + enum: + - in_app + - email + - sms + - chat + - push + type: string + read: + type: boolean + seen: + type: boolean + email: + type: string + phone: + type: string + directWebhookUrl: + type: string + providerId: + type: string + deviceTokens: + type: array + items: + type: string + title: + type: string + cta: + $ref: '#/components/schemas/MessageCTA' + _feedId: + type: object + nullable: true + status: + type: string + enum: + - sent + - error + - warning + errorId: + type: string + errorText: + type: string + payload: + type: object + description: The payload that was used to send the notification trigger + overrides: + type: object + description: Provider specific overrides used when triggering the notification + required: + - _templateId + - _environmentId + - _messageTemplateId + - _organizationId + - _notificationId + - _subscriberId + - createdAt + - content + - transactionId + - channel + - read + - seen + - cta + - status + - errorId + - errorText + - payload + - overrides + MarkMessageActionAsSeenDto: + type: object + properties: + status: + enum: + - pending + - done + type: string + description: Message action status + payload: + type: object + description: Message action payload + required: + - status + DeleteMessageResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: A boolean stating the success of the action + status: + type: string + description: The status enum for the performed action + enum: + - deleted + required: + - acknowledged + - status + CreateTopicResponseDto: + type: object + properties: + _id: + type: string + description: The unique identifier for the Topic created. + key: + type: string + description: >- + User defined custom key and provided by the user that will be an unique identifier for the Topic created. + required: + - key + CreateTopicRequestDto: + type: object + properties: + key: + type: string + description: >- + User defined custom key and provided by the user that will be an unique identifier for the Topic created. + name: + type: string + description: >- + User defined custom name and provided by the user that will name the Topic created. + required: + - key + - name + AddSubscribersRequestDto: + type: object + properties: + subscribers: + description: List of subscriber identifiers that will be associated to the topic + type: array + items: + type: string + required: + - subscribers + TopicSubscriberDto: + type: object + properties: + _organizationId: + type: string + _environmentId: + type: string + _subscriberId: + type: string + _topicId: + type: string + topicKey: + type: string + externalSubscriberId: + type: string + required: + - _organizationId + - _environmentId + - _subscriberId + - _topicId + - topicKey + - externalSubscriberId + RemoveSubscribersRequestDto: + type: object + properties: + subscribers: + description: List of subscriber identifiers that will be removed to the topic + type: array + items: + type: string + required: + - subscribers + TopicDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _environmentId: + type: string + key: + type: string + name: + type: string + subscribers: + type: array + items: + type: string + required: + - _organizationId + - _environmentId + - key + - name + - subscribers + FilterTopicsResponseDto: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TopicDto' + page: + type: number + pageSize: + type: number + totalCount: + type: number + required: + - data + - page + - pageSize + - totalCount + GetTopicResponseDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _environmentId: + type: string + key: + type: string + name: + type: string + subscribers: + type: array + items: + type: string + required: + - _organizationId + - _environmentId + - key + - name + - subscribers + RenameTopicResponseDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _environmentId: + type: string + key: + type: string + name: + type: string + subscribers: + type: array + items: + type: string + required: + - _organizationId + - _environmentId + - key + - name + - subscribers + RenameTopicRequestDto: + type: object + properties: + name: + type: string + description: >- + User defined custom name and provided by the user to rename the topic. + required: + - name + GeneratePreviewResponseDto: + type: object + properties: {} + headers: + Content-Type: + required: true + description: The MIME type of the response body. + schema: + type: string + example: application/json + RateLimit-Limit: + required: false + description: >- + The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled. + schema: + type: string + example: '100' + RateLimit-Remaining: + required: false + description: The number of requests remaining until the next window. + schema: + type: string + example: '93' + RateLimit-Reset: + required: false + description: >- + The remaining seconds until a request of the same cost will be refreshed. + schema: + type: string + example: '8' + RateLimit-Policy: + required: false + description: The rate limit policy that was used to evaluate the request. + schema: + type: string + example: >- + 100;w=1;burst=110;comment="token bucket";category="trigger";cost="single" + Retry-After: + required: false + description: >- + The number of seconds after which the client may retry the request that was previously rejected. + schema: + type: string + example: '8' + Idempotency-Key: + required: false + description: The idempotency key used to evaluate the request. + schema: + type: string + example: '8' + Idempotency-Replay: + required: false + description: Whether the request was a replay of a previous request. + schema: + type: string + example: 'true' + Link: + required: false + description: A link to the documentation. + schema: + type: string + example: https://docs.novu.co/ +externalDocs: + description: Novu Documentation + url: https://docs.novu.co +x-speakeasy-name-override: + - operationId: ^.*get.* + methodNameOverride: retrieve + - operationId: ^.*retrieve.* + methodNameOverride: retrieve + - operationId: ^.*create.* + methodNameOverride: create + - operationId: ^.*update.* + methodNameOverride: update + - operationId: ^.*list.* + methodNameOverride: list + - operationId: ^.*delete.* + methodNameOverride: delete + - operationId: ^.*remove.* + methodNameOverride: delete +x-speakeasy-retries: + strategy: backoff + backoff: + initialInterval: 500 + maxInterval: 30000 + maxElapsedTime: 3600000 + exponent: 1.5 + statusCodes: + - '408' + - '409' + - '429' + - 5XX + retryConnectionErrors: true diff --git a/.speakeasy/temp/downloaded_HKVFJyjOtH.yaml b/.speakeasy/temp/downloaded_HKVFJyjOtH.yaml new file mode 100644 index 00000000..8e0ac771 --- /dev/null +++ b/.speakeasy/temp/downloaded_HKVFJyjOtH.yaml @@ -0,0 +1,9166 @@ +openapi: 3.0.0 +paths: + /v1/environments/me: + get: + operationId: EnvironmentsControllerV1_getCurrentEnvironment + summary: Get current environment + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/EnvironmentResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Environments + security: + - api-key: [] + /v1/environments: + get: + operationId: EnvironmentsControllerV1_listMyEnvironments + summary: Get environments + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/EnvironmentResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Environments + security: + - api-key: [] + /v1/environments/api-keys: + get: + operationId: EnvironmentsControllerV1_listOrganizationApiKeys + x-speakeasy-group: Environments.ApiKeys + summary: Get api keys + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApiKey' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Environments + security: + - api-key: [] + /v1/execution-details: + get: + operationId: ExecutionDetailsController_getExecutionDetailsForNotification + summary: Get execution details + parameters: + - name: notificationId + required: true + in: query + schema: + type: string + - name: subscriberId + required: true + in: query + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ExecutionDetailsResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Execution Details + security: + - api-key: [] + /v1/events/trigger: + post: + operationId: EventsController_trigger + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Trigger Notification Event + x-speakeasy-name-override: trigger + summary: Trigger event + description: |2- + + Trigger event is the main (and only) way to send notifications to subscribers. + The trigger identifier is used to match the particular workflow associated with it. + Additional information can be passed according the body interface below. + + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/events/trigger/bulk: + post: + operationId: EventsController_triggerBulk + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Trigger Notification Events in Bulk + x-speakeasy-name-override: triggerBulk + summary: Bulk trigger event + description: |2- + + Using this endpoint you can trigger multiple events at once, to avoid multiple calls to the API. + The bulk API is limited to 100 events per request. + + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BulkTriggerEventDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TriggerEventResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/events/trigger/broadcast: + post: + operationId: EventsController_broadcastEventToAll + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Broadcast Event to All + x-speakeasy-name-override: triggerBroadcast + summary: Broadcast event to all + description: >- + Trigger a broadcast event to all existing subscribers, could be used to + send announcements, etc. + In the future could be used to trigger events to a subset of subscribers based on defined filters. + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventToAllRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/events/trigger/{transactionId}: + delete: + operationId: EventsController_cancel + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Cancel Triggered Event + x-speakeasy-name-override: cancel + summary: Cancel triggered event + description: |2- + + Using a previously generated transactionId during the event trigger, + will cancel any active or pending workflows. This is useful to cancel active digests, delays etc... + + parameters: + - name: transactionId + required: true + in: path + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DataBooleanDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/notifications: + get: + operationId: NotificationsController_listNotifications + summary: Get notifications + parameters: + - name: channels + required: true + in: query + schema: + type: array + items: + type: string + enum: + - in_app + - email + - sms + - chat + - push + - name: templates + required: true + in: query + schema: + type: array + items: + type: string + - name: emails + required: true + in: query + schema: + type: array + items: + type: string + - name: search + required: true + in: query + deprecated: true + schema: + type: string + - name: subscriberIds + required: true + in: query + schema: + type: array + items: + type: string + - name: page + required: false + in: query + schema: + default: 0 + type: number + - name: transactionId + required: false + in: query + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivitiesResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notifications/stats: + get: + operationId: NotificationsController_getActivityStats + x-speakeasy-group: Notifications.Stats + summary: Get notification statistics + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivityStatsResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notifications/graph/stats: + get: + operationId: NotificationsController_getActivityGraphStats + x-speakeasy-name-override: graph + x-speakeasy-group: Notifications.Stats + summary: Get notification graph statistics + parameters: + - name: days + required: false + in: query + schema: + type: number + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ActivityGraphStatesResponse' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notifications/{notificationId}: + get: + operationId: NotificationsController_getNotification + summary: Get notification + parameters: + - name: notificationId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivityNotificationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notification-groups: + post: + operationId: NotificationGroupsController_createNotificationGroup + summary: Create workflow group + description: workflow group was previously named notification group + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNotificationGroupRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + get: + operationId: NotificationGroupsController_listNotificationGroups + summary: Get workflow groups + description: workflow group was previously named notification group + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + /v1/notification-groups/{id}: + get: + operationId: NotificationGroupsController_getNotificationGroup + summary: Get workflow group + description: workflow group was previously named notification group + parameters: + - name: id + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + patch: + operationId: NotificationGroupsController_updateNotificationGroup + summary: Update workflow group + description: workflow group was previously named notification group + parameters: + - name: id + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNotificationGroupRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + delete: + operationId: NotificationGroupsController_deleteNotificationGroup + summary: Delete workflow group + description: workflow group was previously named notification group + parameters: + - name: id + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteNotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + /v1/integrations: + get: + operationId: IntegrationsController_listIntegrations + summary: Get integrations + description: >- + Return all the integrations the user has created for that organization. + Review v.0.17.0 changelog for a breaking change + parameters: [] + responses: + '200': + description: >- + The list of integrations belonging to the organization that are + successfully returned. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + post: + operationId: IntegrationsController_createIntegration + summary: Create integration + description: >- + Create an integration for the current environment the user is based on + the API key provided + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIntegrationRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/active: + get: + operationId: IntegrationsController_getActiveIntegrations + x-speakeasy-name-override: listActive + summary: Get active integrations + description: >- + Return all the active integrations the user has created for that + organization. Review v.0.17.0 changelog for a breaking change + parameters: [] + responses: + '200': + description: >- + The list of active integrations belonging to the organization that + are successfully returned. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/webhook/provider/{providerOrIntegrationId}/status: + get: + operationId: IntegrationsController_getWebhookSupportStatus + x-speakeasy-group: Integrations.Webhooks + summary: Get webhook support status for provider + description: >- + Return the status of the webhook for this provider, if it is supported + or if it is not based on a boolean value + parameters: + - name: providerOrIntegrationId + required: true + in: path + schema: + type: string + responses: + '200': + description: The status of the webhook for the provider requested + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: boolean + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/{integrationId}: + put: + operationId: IntegrationsController_updateIntegrationById + summary: Update integration + parameters: + - name: integrationId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateIntegrationRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseDto' + '404': + description: >- + The integration with the integrationId provided does not exist in + the database. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + delete: + operationId: IntegrationsController_removeIntegration + summary: Delete integration + parameters: + - name: integrationId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/{integrationId}/set-primary: + post: + operationId: IntegrationsController_setIntegrationAsPrimary + x-speakeasy-name-override: setAsPrimary + summary: Set integration as primary + parameters: + - name: integrationId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseDto' + '404': + description: >- + The integration with the integrationId provided does not exist in + the database. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/subscribers: + get: + operationId: SubscribersController_listSubscribers + x-speakeasy-pagination: + type: offsetLimit + inputs: + - name: page + in: parameters + type: page + - name: limit + in: parameters + type: limit + outputs: + results: $.data.resultArray + summary: Get subscribers + description: >- + Returns a list of subscribers, could paginated using the `page` and + `limit` query parameter + parameters: + - name: page + required: false + in: query + schema: + type: number + - name: limit + required: false + in: query + schema: + maximum: 100 + default: 10 + type: number + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/PaginatedResponseDto' + - properties: + data: + type: array + items: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + post: + operationId: SubscribersController_createSubscriber + summary: Create subscriber + description: >- + Creates a subscriber entity, in the Novu platform. The subscriber will + be later used to receive notifications, and access notification feeds. + Communication credentials such as email, phone number, and 3 rd party + credentials i.e slack tokens could be later associated to this entity. + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSubscriberRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}: + get: + operationId: SubscribersController_getSubscriber + summary: Get subscriber + description: Get subscriber by your internal id used to identify the subscriber + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: includeTopics + required: false + in: query + description: Includes the topics associated with the subscriber + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + put: + operationId: SubscribersController_updateSubscriber + summary: Update subscriber + description: Used to update the subscriber entity with new information + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + delete: + operationId: SubscribersController_removeSubscriber + summary: Delete subscriber + description: Deletes a subscriber entity from the Novu platform + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteSubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/bulk: + post: + operationId: SubscribersController_bulkCreateSubscribers + x-speakeasy-name-override: createBulk + summary: Bulk create subscribers + description: |2- + + Using this endpoint you can create multiple subscribers at once, to avoid multiple calls to the API. + The bulk API is limited to 500 subscribers per request. + + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSubscriberCreateDto' + responses: + '201': + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials: + put: + operationId: SubscribersController_updateSubscriberChannel + x-speakeasy-group: Subscribers.Credentials + summary: Update subscriber credentials + description: >- + Subscriber credentials associated to the delivery methods such as slack + and push tokens. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberChannelRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + patch: + operationId: SubscribersController_modifySubscriberChannel + x-speakeasy-name-override: append + x-speakeasy-group: Subscribers.Credentials + summary: Modify subscriber credentials + description: >- + Subscriber credentials associated to the delivery methods such as slack + and push tokens. + This endpoint appends provided credentials and deviceTokens to the existing ones. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberChannelRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials/{providerId}: + delete: + operationId: SubscribersController_deleteSubscriberCredentials + x-speakeasy-group: Subscribers.Credentials + summary: Delete subscriber credentials by providerId + description: Delete subscriber credentials such as slack and expo tokens. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: providerId + required: true + in: path + schema: + type: string + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/online-status: + patch: + operationId: SubscribersController_updateSubscriberOnlineFlag + x-speakeasy-name-override: updateOnlineFlag + x-speakeasy-group: Subscribers.properties + summary: Update subscriber online status + description: Used to update the subscriber isOnline flag. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberOnlineFlagRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/preferences: + get: + operationId: SubscribersController_listSubscriberPreferences + x-speakeasy-group: Subscribers.Preferences + summary: Get subscriber preferences + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: includeInactiveChannels + required: false + in: query + description: >- + A flag which specifies if the inactive workflow channels should be + included in the retrieved preferences. Default is true + schema: + type: boolean + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/UpdateSubscriberPreferenceResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + patch: + operationId: SubscribersController_updateSubscriberGlobalPreferences + x-speakeasy-name-override: updateGlobal + x-speakeasy-group: Subscribers.Preferences + summary: Update subscriber global preferences + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberGlobalPreferencesRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberPreferenceResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/preferences/{parameter}: + get: + operationId: SubscribersController_getSubscriberPreferenceByLevel + x-speakeasy-name-override: retrieveByLevel + x-speakeasy-group: Subscribers.Preferences + summary: Get subscriber preferences by level + parameters: + - name: includeInactiveChannels + required: false + in: query + description: >- + A flag which specifies if the inactive workflow channels should be + included in the retrieved preferences. Default is true + schema: + type: boolean + - name: parameter + required: true + in: path + description: 'the preferences level to be retrieved (template / global) ' + schema: + enum: + - global + - template + type: string + - name: subscriberId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/GetSubscriberPreferencesResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + patch: + operationId: SubscribersController_updateSubscriberPreference + x-speakeasy-group: Subscribers.Preferences + summary: Update subscriber preference + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: parameter + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberPreferenceRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberPreferenceResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/notifications/feed: + get: + operationId: SubscribersController_getNotificationsFeed + x-speakeasy-group: Subscribers.Notifications + summary: Get in-app notification feed for a particular subscriber + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: page + required: false + in: query + schema: + type: number + - name: limit + required: false + in: query + schema: + maximum: 100 + default: 10 + type: number + - name: read + required: false + in: query + schema: + type: boolean + - name: seen + required: false + in: query + schema: + type: boolean + - name: payload + required: false + in: query + description: Base64 encoded string of the partial payload JSON object + example: >- + btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string + like eyJmb28iOjEyM30= + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/PaginatedResponseDto' + - properties: + data: + type: array + items: + $ref: '#/components/schemas/FeedResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/notifications/unseen: + get: + operationId: SubscribersController_getUnseenCount + x-speakeasy-name-override: unseenCount + x-speakeasy-group: Subscribers.Notifications + summary: Get the unseen in-app notifications count for subscribers feed + parameters: + - name: seen + required: true + in: query + schema: + type: boolean + - name: subscriberId + required: true + in: path + schema: + type: string + - name: limit + required: true + in: query + schema: + type: number + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/UnseenCountResponse' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/messages/mark-as: + post: + operationId: SubscribersController_markMessagesAs + x-speakeasy-name-override: markAllAs + x-speakeasy-group: Subscribers.Messages + summary: Mark a subscriber messages as seen, read, unseen or unread + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MessageMarkAsRequestDto' + responses: + '201': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MessageEntity' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/messages/mark-all: + post: + operationId: SubscribersController_markAllUnreadAsRead + x-speakeasy-name-override: markAll + x-speakeasy-group: Subscribers.Messages + summary: >- + Marks all the subscriber messages as read, unread, seen or unseen. + Optionally you can pass feed id (or array) to mark messages of a + particular feed. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MarkAllMessageAsRequestDto' + responses: + '201': + description: '' + content: + application/json: + schema: + type: number + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}: + post: + operationId: SubscribersController_markActionAsSeen + x-speakeasy-name-override: updateAsSeen + x-speakeasy-group: Subscribers.Messages + summary: Mark message action as seen + parameters: + - name: messageId + required: true + in: path + schema: + type: string + - name: type + required: true + in: path + schema: {} + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MarkMessageActionAsSeenDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials/{providerId}/oauth/callback: + get: + operationId: SubscribersController_chatOauthCallback + x-speakeasy-name-override: chatAccessOauthCallBack + x-speakeasy-group: Subscribers.Authentication + summary: Handle providers oauth redirect + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: providerId + required: true + in: path + schema: {} + - name: code + required: true + in: query + schema: + type: string + - name: hmacHash + required: true + in: query + schema: + type: string + - name: environmentId + required: true + in: query + schema: + type: string + - name: integrationIdentifier + required: false + in: query + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + type: object + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials/{providerId}/oauth: + get: + operationId: SubscribersController_chatAccessOauth + x-speakeasy-name-override: chatAccessOauth + x-speakeasy-group: Subscribers.Authentication + summary: Handle chat oauth + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: providerId + required: true + in: path + schema: {} + - name: hmacHash + required: true + in: query + schema: + type: string + - name: environmentId + required: true + in: query + schema: + type: string + - name: integrationIdentifier + required: false + in: query + schema: + type: string + responses: + '200': + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/messages: + get: + operationId: MessagesController_getMessages + summary: Get messages + description: >- + Returns a list of messages, could paginate using the `page` query + parameter + parameters: + - name: channel + required: false + in: query + schema: + enum: + - in_app + - email + - sms + - chat + - push + type: string + - name: subscriberId + required: false + in: query + schema: + type: string + - name: transactionId + required: false + in: query + schema: + type: array + items: + type: string + - name: page + required: false + in: query + schema: + default: 0 + type: number + - name: limit + required: false + in: query + schema: + default: 10 + type: number + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivitiesResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Messages + security: + - api-key: [] + /v1/messages/{messageId}: + delete: + operationId: MessagesController_deleteMessage + summary: Delete message + description: Deletes a message entity from the Novu platform + parameters: + - name: messageId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteMessageResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Messages + security: + - api-key: [] + /v1/messages/transaction/{transactionId}: + delete: + operationId: MessagesController_deleteMessagesByTransactionId + x-speakeasy-name-override: deleteByTransactionId + summary: Delete messages by transactionId + description: >- + Deletes messages entity from the Novu platform using TransactionId of + message + parameters: + - name: channel + required: false + in: query + description: The channel of the message to be deleted + schema: + enum: + - in_app + - email + - sms + - chat + - push + type: string + - name: transactionId + required: true + in: path + schema: + type: string + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Messages + security: + - api-key: [] + /v1/topics: + post: + operationId: TopicsController_createTopic + summary: Topic creation + description: Create a topic + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTopicRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTopicResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + get: + operationId: TopicsController_listTopics + summary: Filter topics + description: >- + Returns a list of topics that can be paginated using the `page` query + parameter and filtered by the topic key with the `key` query parameter + parameters: + - name: page + required: false + in: query + description: Number of page for the pagination + schema: + minimum: 0 + default: 0 + type: number + - name: pageSize + required: false + in: query + description: Size of page for the pagination + schema: + minimum: 0 + default: 10 + type: number + - name: key + required: false + in: query + description: Topic key + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/FilterTopicsResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}/subscribers: + post: + operationId: TopicsController_addSubscribers + x-speakeasy-name-override: assign + x-speakeasy-group: Topics.Subscribers + summary: Subscribers addition + description: Add subscribers to a topic by key + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AddSubscribersRequestDto' + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}/subscribers/{externalSubscriberId}: + get: + operationId: TopicsController_getTopicSubscriber + x-speakeasy-group: Topics.Subscribers + summary: Check topic subscriber + description: Check if a subscriber belongs to a certain topic + parameters: + - name: externalSubscriberId + required: true + in: path + description: The external subscriber id + schema: + type: string + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TopicSubscriberDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}/subscribers/removal: + post: + operationId: TopicsController_removeSubscribers + x-speakeasy-group: Topics.Subscribers + summary: Subscribers removal + description: Remove subscribers from a topic + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveSubscribersRequestDto' + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}: + delete: + operationId: TopicsController_deleteTopic + summary: Delete topic + description: Delete a topic by its topic key if it has no subscribers + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + responses: + '204': + description: The topic has been deleted correctly + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '404': + description: >- + The topic with the key provided does not exist in the database so it + can not be deleted. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '409': + description: >- + The topic you are trying to delete has subscribers assigned to it. + Delete the subscribers before deleting the topic. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + get: + operationId: TopicsController_getTopic + summary: Get topic + description: Get a topic by its topic key + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/GetTopicResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + patch: + operationId: TopicsController_renameTopic + x-speakeasy-name-override: rename + summary: Rename a topic + description: Rename a topic by providing a new name + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RenameTopicRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/RenameTopicResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the + current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is + currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a + temporary overload or scheduled maintenance, which will likely be + alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] +info: + title: Novu API + description: >- + Novu REST API. Please see https://docs.novu.co/api-reference for more + details. + version: '1.0' + contact: + name: Novu Support + url: https://discord.gg/novu + email: support@novu.co + termsOfService: https://novu.co/terms + license: + name: MIT + url: https://opensource.org/license/mit +tags: + - name: Events + description: >- + Events represent a change in state of a subscriber. They are used to + trigger workflows, and enable you to send notifications to subscribers + based on their actions. + externalDocs: + url: https://docs.novu.co/workflows + - name: Subscribers + description: >- + A subscriber in Novu represents someone who should receive a message. A + subscriber’s profile information contains important attributes about the + subscriber that will be used in messages (name, email). The subscriber + object can contain other key-value pairs that can be used to further + personalize your messages. + externalDocs: + url: https://docs.novu.co/subscribers/subscribers + - name: Topics + description: >- + Topics are a way to group subscribers together so that they can be + notified of events at once. A topic is identified by a custom key. This + can be helpful for things like sending out marketing emails or notifying + users of new features. Topics can also be used to send notifications to + the subscribers who have been grouped together based on their interests, + location, activities and much more. + externalDocs: + url: https://docs.novu.co/subscribers/topics + - name: Notification + description: >- + A notification conveys information from source to recipient, triggered by + a workflow acting as a message blueprint. Notifications can be individual + or bundled as digest for user-friendliness. + externalDocs: + url: https://docs.novu.co/getting-started/introduction + - name: Integrations + description: >- + With the help of the Integration Store, you can easily integrate your + favorite delivery provider. During the runtime of the API, the + Integrations Store is responsible for storing the configurations of all + the providers. + externalDocs: + url: https://docs.novu.co/channels-and-providers/integration-store + - name: Layouts + description: >- + Novu allows the creation of layouts - a specific HTML design or structure + to wrap content of email notifications. Layouts can be manipulated and + assigned to new or existing workflows within the Novu platform, allowing + users to create, manage, and assign these layouts to workflows, so they + can be reused to structure the appearance of notifications sent through + the platform. + externalDocs: + url: https://docs.novu.co/content-creation-design/layouts + - name: Workflows + description: >- + All notifications are sent via a workflow. Each workflow acts as a + container for the logic and blueprint that are associated with a type of + notification in your system. + externalDocs: + url: https://docs.novu.co/workflows + - name: Notification Templates + description: >- + Deprecated. Use Workflows (/workflows) instead, which provide the same + functionality under a new name. + - name: Workflow groups + description: Workflow groups are used to organize workflows into logical groups. + - name: Changes + description: >- + Changes represent a change in state of an environment. They are analagous + to a pending pull request in git, enabling you to test changes before they + are applied to your environment and atomically apply them when you are + ready. + externalDocs: + url: >- + https://docs.novu.co/platform/environments#promoting-pending-changes-to-production + - name: Environments + description: >- + Novu uses the concept of environments to ensure logical separation of your + data and configuration. This means that subscribers, and preferences + created in one environment are never accessible to another. + externalDocs: + url: https://docs.novu.co/platform/environments + - name: Inbound Parse + description: >- + Inbound Webhook is a feature that allows processing of incoming emails for + a domain or subdomain. The feature parses the contents of the email and + POSTs the information to a specified URL in a multipart/form-data format. + externalDocs: + url: https://docs.novu.co/platform/inbound-parse-webhook + - name: Feeds + description: >- + Novu provides a notification activity feed that monitors every outgoing + message associated with its relevant metadata. This can be used to monitor + activity and discover potential issues with a specific provider or a + channel type. + externalDocs: + url: https://docs.novu.co/activity-feed + - name: Tenants + description: >- + A tenant represents a group of users. As a developer, when your apps have + organizations, they are referred to as tenants. Tenants in Novu provides + the ability to tailor specific notification experiences to users of + different groups or organizations. + externalDocs: + url: https://docs.novu.co/tenants + - name: Messages + description: >- + A message in Novu represents a notification delivered to a recipient on a + particular channel. Messages contain information about the request that + triggered its delivery, a view of the data sent to the recipient, and a + timeline of its lifecycle events. Learn more about messages. + externalDocs: + url: https://docs.novu.co/workflows/messages + - name: Organizations + description: >- + An organization serves as a separate entity within your Novu account. Each + organization you create has its own separate integration store, workflows, + subscribers, and API keys. This separation of resources allows you to + manage multi-tenant environments and separate domains within a single + account. + externalDocs: + url: https://docs.novu.co/platform/organizations + - name: Execution Details + description: >- + Execution details are used to track the execution of a workflow. They + provided detailed information on the execution of a workflow, including + the status of each step, the input and output of each step, and the + overall status of the execution. + externalDocs: + url: https://docs.novu.co/activity-feed +servers: + - url: https://api.novu.co + - url: https://eu.api.novu.co +components: + securitySchemes: + api-key: + type: apiKey + in: header + name: Authorization + description: >- + API key authentication. Allowed headers-- "Authorization: ApiKey + ". + schemas: + DataWrapperDto: + type: object + properties: + data: + type: object + required: + - data + EnvironmentResponseDto: + type: object + properties: + _id: + type: string + name: + type: string + _organizationId: + type: string + identifier: + type: string + apiKeys: + type: array + items: + type: string + _parentId: + type: string + slug: + type: string + required: + - name + - _organizationId + - identifier + - _parentId + ApiKey: + type: object + properties: + key: + type: string + _userId: + type: string + required: + - key + - _userId + ExecutionDetailsResponseDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _jobId: + type: string + _environmentId: + type: string + _notificationId: + type: string + _notificationTemplateId: + type: string + _subscriberId: + type: string + _messageId: + type: string + providerId: + type: string + transactionId: + type: string + channel: + type: string + enum: + - in_app + - email + - sms + - chat + - push + - digest + - trigger + - delay + - custom + detail: + type: string + source: + type: string + enum: + - Credentials + - Internal + - Payload + - Webhook + status: + type: string + enum: + - Success + - Warning + - Failed + - Pending + - Queued + - ReadConfirmation + isTest: + type: boolean + isRetry: + type: boolean + createdAt: + type: string + required: + - _organizationId + - _jobId + - _environmentId + - _notificationId + - _notificationTemplateId + - _subscriberId + - transactionId + - channel + - detail + - source + - status + - isTest + - isRetry + TriggerEventResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: If trigger was acknowledged or not + status: + enum: + - error + - trigger_not_active + - no_workflow_active_steps_defined + - no_workflow_steps_defined + - processed + - subscriber_id_missing + - no_tenant_found + type: string + description: Status for trigger + error: + description: In case of an error, this field will contain the error message + type: array + items: + type: string + transactionId: + type: string + description: Transaction id for trigger + required: + - acknowledged + - status + TopicPayloadDto: + type: object + properties: + topicKey: + type: string + type: + enum: + - Subscriber + - Topic + type: string + example: Topic + required: + - topicKey + - type + TenantPayloadDto: + type: object + properties: + identifier: + type: string + name: + type: string + data: + type: object + SubscriberPayloadDto: + type: object + properties: + subscriberId: + type: string + description: >- + The internal identifier you used to create this subscriber, usually + correlates to the id the user in your systems + email: + type: string + firstName: + type: string + lastName: + type: string + phone: + type: string + avatar: + type: string + description: An http url to the profile image of your subscriber + locale: + type: string + data: + type: object + channels: + type: array + items: + type: string + required: + - subscriberId + TriggerEventRequestDto: + type: object + properties: + name: + type: string + description: >- + The trigger identifier of the workflow you wish to send. This + identifier can be found on the workflow page. + example: workflow_identifier + payload: + type: object + description: >- + The payload object is used to pass additional custom information + that could be used to render the workflow, or perform routing rules + based on it. + This data will also be available when fetching the notifications feed from the API to display certain parts of the UI. + example: + comment_id: string + post: + text: string + overrides: + type: object + description: This could be used to override provider specific configurations + example: + fcm: + data: + key: value + to: + type: array + description: The recipients list of people who will receive the notification. + items: + oneOf: + - $ref: '#/components/schemas/SubscriberPayloadDto' + - type: string + description: Unique identifier of a subscriber in your systems + example: SUBSCRIBER_ID + - $ref: '#/components/schemas/TopicPayloadDto' + transactionId: + type: string + description: >- + A unique identifier for this transaction, we will generated a UUID + if not provided. + actor: + description: >- + It is used to display the Avatar of the provided actor's subscriber + id or actor object. + If a new actor object is provided, we will create a new subscriber in our system + + oneOf: + - type: string + description: Unique identifier of a subscriber in your systems + - $ref: '#/components/schemas/SubscriberPayloadDto' + tenant: + description: |- + It is used to specify a tenant context during trigger event. + Existing tenants will be updated with the provided details. + + oneOf: + - type: string + description: Unique identifier of a tenant in your system + - $ref: '#/components/schemas/TenantPayloadDto' + bridgeUrl: + type: string + controls: + type: object + required: + - name + - to + BulkTriggerEventDto: + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/TriggerEventRequestDto' + required: + - events + TriggerEventToAllRequestDto: + type: object + properties: + name: + type: string + description: >- + The trigger identifier associated for the template you wish to send. + This identifier can be found on the template page. + payload: + type: object + description: >- + The payload object is used to pass additional custom information + that could be used to render the template, or perform routing rules + based on it. + This data will also be available when fetching the notifications feed from the API to display certain parts of the UI. + example: + comment_id: string + post: + text: string + overrides: + type: object + description: This could be used to override provider specific configurations + example: + fcm: + data: + key: value + transactionId: + type: string + description: >- + A unique identifier for this transaction, we will generated a UUID + if not provided. + actor: + description: >- + It is used to display the Avatar of the provided actor's subscriber + id or actor object. + If a new actor object is provided, we will create a new subscriber in our system + + oneOf: + - type: string + description: Unique identifier of a subscriber in your systems + - $ref: '#/components/schemas/SubscriberPayloadDto' + tenant: + description: |- + It is used to specify a tenant context during trigger event. + If a new tenant object is provided, we will create a new tenant. + + oneOf: + - type: string + description: Unique identifier of a tenant in your system + - $ref: '#/components/schemas/TenantPayloadDto' + required: + - name + - payload + DataBooleanDto: + type: object + properties: + data: + type: boolean + required: + - data + ActivitiesResponseDto: + type: object + properties: + hasMore: + type: boolean + data: + type: array + items: + type: string + pageSize: + type: number + page: + type: number + required: + - hasMore + - data + - pageSize + - page + ActivityStatsResponseDto: + type: object + properties: + weeklySent: + type: number + monthlySent: + type: number + required: + - weeklySent + - monthlySent + ActivityGraphStatesResponse: + type: object + properties: + _id: + type: string + count: + type: number + templates: + type: array + items: + type: string + channels: + type: array + items: + type: string + enum: + - in_app + - email + - sms + - chat + - push + required: + - _id + - count + - templates + - channels + ActivityNotificationSubscriberResponseDto: + type: object + properties: + firstName: + type: string + _id: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + required: + - _id + ActivityNotificationTemplateResponseDto: + type: object + properties: + _id: + type: string + name: + type: string + triggers: + type: array + items: + type: string + required: + - name + - triggers + ActivityNotificationResponseDto: + type: object + properties: + _id: + type: string + _environmentId: + type: string + _organizationId: + type: string + transactionId: + type: string + createdAt: + type: string + channels: + type: string + items: + type: string + enum: + - in_app + - email + - sms + - chat + - push + - digest + - trigger + - delay + - custom + enum: + - in_app + - email + - sms + - chat + - push + - digest + - trigger + - delay + - custom + subscriber: + $ref: '#/components/schemas/ActivityNotificationSubscriberResponseDto' + template: + $ref: '#/components/schemas/ActivityNotificationTemplateResponseDto' + jobs: + type: array + items: + type: string + required: + - _environmentId + - _organizationId + - transactionId + NotificationGroupResponseDto: + type: object + properties: + _id: + type: string + name: + type: string + _environmentId: + type: string + _organizationId: + type: string + _parentId: + type: string + required: + - name + - _environmentId + - _organizationId + CreateNotificationGroupRequestDto: + type: object + properties: + name: + type: string + required: + - name + DeleteNotificationGroupResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: A boolean stating the success of the action + status: + type: string + description: The status enum for the performed action + enum: + - deleted + required: + - acknowledged + - status + CredentialsDto: + type: object + properties: + apiKey: + type: string + user: + type: string + secretKey: + type: string + domain: + type: string + password: + type: string + host: + type: string + port: + type: string + secure: + type: boolean + region: + type: string + accountSid: + type: string + messageProfileId: + type: string + token: + type: string + from: + type: string + senderName: + type: string + projectName: + type: string + applicationId: + type: string + clientId: + type: string + requireTls: + type: boolean + ignoreTls: + type: boolean + tlsOptions: + type: object + baseUrl: + type: string + webhookUrl: + type: string + redirectUrl: + type: string + hmac: + type: boolean + serviceAccount: + type: string + ipPoolName: + type: string + apiKeyRequestHeader: + type: string + secretKeyRequestHeader: + type: string + idPath: + type: string + datePath: + type: string + apiToken: + type: string + authenticateByToken: + type: boolean + authenticationTokenKey: + type: string + instanceId: + type: string + alertUid: + type: string + title: + type: string + imageUrl: + type: string + state: + type: string + externalLink: + type: string + channelId: + type: string + phoneNumberIdentification: + type: string + accessKey: + type: string + FieldFilterPart: + type: object + properties: + field: + type: string + value: + type: string + operator: + type: string + enum: + - LARGER + - SMALLER + - LARGER_EQUAL + - SMALLER_EQUAL + - EQUAL + - NOT_EQUAL + - ALL_IN + - ANY_IN + - NOT_IN + - BETWEEN + - NOT_BETWEEN + - LIKE + - NOT_LIKE + - IN + 'on': + type: string + enum: + - subscriber + - payload + required: + - field + - value + - operator + - 'on' + StepFilter: + type: object + properties: + isNegated: + type: boolean + type: + type: string + enum: + - BOOLEAN + - TEXT + - DATE + - NUMBER + - STATEMENT + - LIST + - MULTI_LIST + - GROUP + value: + type: string + enum: + - AND + - OR + children: + type: array + items: + $ref: '#/components/schemas/FieldFilterPart' + required: + - isNegated + - type + - value + - children + IntegrationResponseDto: + type: object + properties: + _id: + type: string + _environmentId: + type: string + _organizationId: + type: string + name: + type: string + identifier: + type: string + providerId: + type: string + channel: + enum: + - in_app + - email + - sms + - chat + - push + type: string + credentials: + $ref: '#/components/schemas/CredentialsDto' + active: + type: boolean + deleted: + type: boolean + deletedAt: + type: string + deletedBy: + type: string + primary: + type: boolean + conditions: + type: array + items: + $ref: '#/components/schemas/StepFilter' + required: + - _environmentId + - _organizationId + - name + - identifier + - providerId + - channel + - credentials + - active + - deleted + - deletedAt + - deletedBy + - primary + CreateIntegrationRequestDto: + type: object + properties: + name: + type: string + identifier: + type: string + _environmentId: + type: string + providerId: + type: string + channel: + enum: + - in_app + - email + - sms + - chat + - push + type: string + credentials: + $ref: '#/components/schemas/CredentialsDto' + active: + type: boolean + description: >- + If the integration is active the validation on the credentials field + will run + check: + type: boolean + conditions: + type: array + items: + $ref: '#/components/schemas/StepFilter' + required: + - providerId + - channel + UpdateIntegrationRequestDto: + type: object + properties: + name: + type: string + identifier: + type: string + _environmentId: + type: string + active: + type: boolean + description: >- + If the integration is active the validation on the credentials field + will run + credentials: + $ref: '#/components/schemas/CredentialsDto' + removeNovuBranding: + type: boolean + description: If true, the Novu branding will be removed from the Inbox component + check: + type: boolean + conditions: + type: array + items: + $ref: '#/components/schemas/StepFilter' + PaginatedResponseDto: + type: object + properties: + page: + type: number + description: The current page of the paginated response + hasMore: + type: boolean + description: Does the list have more items to fetch + pageSize: + type: number + description: Number of items on each page + data: + description: The list of items matching the query + type: array + items: + type: object + required: + - page + - hasMore + - pageSize + - data + ChannelCredentials: + type: object + properties: + webhookUrl: + type: string + description: >- + Webhook url used by chat app integrations. The webhook should be + obtained from the chat app provider. + channel: + type: string + description: Channel specification for Mattermost chat notifications + deviceTokens: + description: >- + Contains an array of the subscriber device tokens for a given + provider. Used on Push integrations + type: array + items: + type: string + alertUid: + type: string + description: alert_uid for grafana on-call webhook payload + title: + type: string + description: title to be used with grafana on call webhook + imageUrl: + type: string + description: image_url property fo grafana on call webhook + state: + type: string + description: state property fo grafana on call webhook + externalUrl: + type: string + description: link_to_upstream_details property fo grafana on call webhook + required: + - webhookUrl + ChannelSettings: + type: object + properties: + providerId: + type: string + enum: + - slack + - discord + - msteams + - mattermost + - ryver + - zulip + - grafana-on-call + - getstream + - rocket-chat + - whatsapp-business + - fcm + - apns + - expo + - one-signal + - pushpad + - push-webhook + - pusher-beams + description: The provider identifier for the credentials + integrationIdentifier: + type: string + description: The integration identifier + credentials: + description: Credentials payload for the specified provider + allOf: + - $ref: '#/components/schemas/ChannelCredentials' + _integrationId: + type: string + description: Id of the integration that is used for this channel + required: + - providerId + - credentials + - _integrationId + SubscriberResponseDto: + type: object + properties: + _id: + type: string + description: >- + The internal id novu generated for your subscriber, this is not the + subscriberId matching your query. See `subscriberId` for that + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + avatar: + type: string + locale: + type: string + subscriberId: + type: string + description: >- + The internal identifier you used to create this subscriber, usually + correlates to the id the user in your systems + channels: + description: Channels settings for subscriber + type: array + items: + $ref: '#/components/schemas/ChannelSettings' + topics: + description: Topics that subscriber belongs to + type: array + items: + type: string + isOnline: + type: boolean + lastOnlineAt: + type: string + _organizationId: + type: string + _environmentId: + type: string + deleted: + type: boolean + createdAt: + type: string + updatedAt: + type: string + __v: + type: number + required: + - subscriberId + - _organizationId + - _environmentId + - deleted + - createdAt + - updatedAt + CreateSubscriberRequestDto: + type: object + properties: + subscriberId: + type: string + description: >- + The internal identifier you used to create this subscriber, usually + correlates to the id the user in your systems + email: + type: string + firstName: + type: string + lastName: + type: string + phone: + type: string + avatar: + type: string + description: An http url to the profile image of your subscriber + locale: + type: string + data: + type: object + channels: + type: array + items: + type: string + required: + - subscriberId + BulkSubscriberCreateDto: + type: object + properties: + subscribers: + type: array + items: + type: string + required: + - subscribers + UpdateSubscriberRequestDto: + type: object + properties: + email: + type: string + firstName: + type: string + lastName: + type: string + phone: + type: string + avatar: + type: string + locale: + type: string + data: + type: object + channels: + type: array + items: + type: string + UpdateSubscriberChannelRequestDto: + type: object + properties: + providerId: + type: string + enum: + - slack + - discord + - msteams + - mattermost + - ryver + - zulip + - grafana-on-call + - getstream + - rocket-chat + - whatsapp-business + - fcm + - apns + - expo + - one-signal + - pushpad + - push-webhook + - pusher-beams + description: The provider identifier for the credentials + integrationIdentifier: + type: string + description: The integration identifier + credentials: + description: Credentials payload for the specified provider + allOf: + - $ref: '#/components/schemas/ChannelCredentials' + required: + - providerId + - credentials + UpdateSubscriberOnlineFlagRequestDto: + type: object + properties: + isOnline: + type: boolean + required: + - isOnline + DeleteSubscriberResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: A boolean stating the success of the action + status: + type: string + description: The status enum for the performed action + enum: + - deleted + required: + - acknowledged + - status + TemplateResponse: + type: object + properties: + _id: + type: string + description: Unique identifier of the workflow + name: + type: string + description: Name of the workflow + critical: + type: boolean + description: >- + Critical templates will always be delivered to the end user and + should be hidden from the subscriber preferences screen + triggers: + description: Triggers are the events that will trigger the workflow. + type: array + items: + type: string + required: + - _id + - name + - critical + - triggers + PreferenceChannels: + type: object + properties: + email: + type: boolean + sms: + type: boolean + in_app: + type: boolean + chat: + type: boolean + push: + type: boolean + Preference: + type: object + properties: + enabled: + type: boolean + description: >- + Sets if the workflow is fully enabled for all channels or not for + the subscriber. + channels: + description: >- + Subscriber preferences for the different channels regarding this + workflow + allOf: + - $ref: '#/components/schemas/PreferenceChannels' + required: + - enabled + - channels + UpdateSubscriberPreferenceResponseDto: + type: object + properties: + template: + description: The workflow information and if it is critical or not + allOf: + - $ref: '#/components/schemas/TemplateResponse' + preference: + description: The preferences of the subscriber regarding the related workflow + allOf: + - $ref: '#/components/schemas/Preference' + required: + - template + - preference + GetSubscriberPreferencesResponseDto: + type: object + properties: + template: + description: The workflow information and if it is critical or not + allOf: + - $ref: '#/components/schemas/TemplateResponse' + preference: + description: The preferences of the subscriber regarding the related workflow + allOf: + - $ref: '#/components/schemas/Preference' + required: + - preference + ChannelPreference: + type: object + properties: + type: + type: string + enum: + - in_app + - email + - sms + - chat + - push + description: The type of channel that is enabled or not + enabled: + type: boolean + description: If channel is enabled or not + required: + - type + - enabled + UpdateSubscriberPreferenceRequestDto: + type: object + properties: + channel: + description: >- + The subscriber preferences for every ChannelTypeEnum for the + workflow assigned. + allOf: + - $ref: '#/components/schemas/ChannelPreference' + enabled: + type: boolean + description: >- + Sets if the workflow is fully enabled for all channels or not for + the subscriber. + UpdateSubscriberGlobalPreferencesRequestDto: + type: object + properties: + enabled: + type: boolean + description: Enable or disable the subscriber global preferences. + preferences: + description: The subscriber global preferences for every ChannelTypeEnum. + type: array + items: + $ref: '#/components/schemas/ChannelPreference' + FeedResponseDto: + type: object + properties: + totalCount: + type: number + hasMore: + type: boolean + data: + type: array + items: + type: string + pageSize: + type: number + page: + type: number + required: + - hasMore + - data + - pageSize + - page + UnseenCountResponse: + type: object + properties: + count: + type: number + required: + - count + MessageMarkAsRequestDto: + type: object + properties: + messageId: + oneOf: + - type: string + - type: array + items: + type: string + markAs: + enum: + - read + - seen + - unread + - unseen + type: string + required: + - messageId + - markAs + MessageEntity: + type: object + properties: {} + MarkAllMessageAsRequestDto: + type: object + properties: + feedIdentifier: + oneOf: + - type: string + - type: array + items: + type: string + description: Optional feed identifier or array of feed identifiers + markAs: + enum: + - read + - seen + - unread + - unseen + type: string + description: Mark all subscriber messages as read, unread, seen or unseen + required: + - markAs + EmailBlockStyles: + type: object + properties: + textAlign: + type: string + enum: + - center + - left + - right + required: + - textAlign + EmailBlock: + type: object + properties: + type: + enum: + - button + - text + type: string + content: + type: string + url: + type: string + styles: + $ref: '#/components/schemas/EmailBlockStyles' + required: + - type + - content + MessageCTAData: + type: object + properties: + url: + type: string + MessageButton: + type: object + properties: + type: + type: string + enum: + - primary + - secondary + content: + type: string + resultContent: + type: string + required: + - type + - content + MessageActionResult: + type: object + properties: + payload: + type: object + type: + type: string + enum: + - primary + - secondary + MessageAction: + type: object + properties: + status: + type: string + enum: + - pending + - done + buttons: + type: array + items: + $ref: '#/components/schemas/MessageButton' + result: + $ref: '#/components/schemas/MessageActionResult' + MessageCTA: + type: object + properties: + type: + type: string + enum: + - redirect + data: + $ref: '#/components/schemas/MessageCTAData' + action: + $ref: '#/components/schemas/MessageAction' + required: + - data + NotificationGroup: + type: object + properties: + _id: + type: string + name: + type: string + _environmentId: + type: string + _organizationId: + type: string + _parentId: + type: string + required: + - name + - _environmentId + - _organizationId + DigestRegularMetadata: + type: object + properties: + amount: + type: number + unit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + digestKey: + type: string + type: + type: string + enum: + - regular + - backoff + backoff: + type: boolean + backoffAmount: + type: number + backoffUnit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + updateMode: + type: boolean + required: + - type + TimedConfig: + type: object + properties: + atTime: + type: string + weekDays: + type: array + items: + type: string + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + monthDays: + type: array + items: + type: string + ordinal: + type: string + enum: + - '1' + - '2' + - '3' + - '4' + - '5' + - last + ordinalValue: + type: string + enum: + - day + - weekday + - weekend + - sunday + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + monthlyType: + type: string + enum: + - each + - 'on' + DigestTimedMetadata: + type: object + properties: + amount: + type: number + unit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + digestKey: + type: string + type: + type: string + enum: + - timed + timed: + $ref: '#/components/schemas/TimedConfig' + required: + - type + DelayRegularMetadata: + type: object + properties: + amount: + type: number + unit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + type: + type: string + enum: + - regular + required: + - type + DelayScheduledMetadata: + type: object + properties: + type: + type: string + enum: + - scheduled + delayPath: + type: string + required: + - type + - delayPath + MessageTemplate: + type: object + properties: {} + NotificationStepVariant: + type: object + properties: + _id: + type: string + uuid: + type: string + name: + type: string + _templateId: + type: string + active: + type: boolean + shouldStopOnFail: + type: boolean + template: + $ref: '#/components/schemas/MessageTemplate' + filters: + type: array + items: + $ref: '#/components/schemas/StepFilter' + _parentId: + type: object + metadata: + oneOf: + - $ref: '#/components/schemas/DigestRegularMetadata' + - $ref: '#/components/schemas/DigestTimedMetadata' + - $ref: '#/components/schemas/DelayRegularMetadata' + - $ref: '#/components/schemas/DelayScheduledMetadata' + replyCallback: + type: object + NotificationStep: + type: object + properties: + _id: + type: string + uuid: + type: string + name: + type: string + _templateId: + type: string + active: + type: boolean + shouldStopOnFail: + type: boolean + template: + $ref: '#/components/schemas/MessageTemplate' + filters: + type: array + items: + $ref: '#/components/schemas/StepFilter' + _parentId: + type: object + metadata: + oneOf: + - $ref: '#/components/schemas/DigestRegularMetadata' + - $ref: '#/components/schemas/DigestTimedMetadata' + - $ref: '#/components/schemas/DelayRegularMetadata' + - $ref: '#/components/schemas/DelayScheduledMetadata' + replyCallback: + type: object + variants: + $ref: '#/components/schemas/NotificationStepVariant' + NotificationTriggerVariable: + type: object + properties: + name: + type: string + required: + - name + NotificationTrigger: + type: object + properties: + type: + type: string + enum: + - event + identifier: + type: string + variables: + type: array + items: + $ref: '#/components/schemas/NotificationTriggerVariable' + subscriberVariables: + type: array + items: + $ref: '#/components/schemas/NotificationTriggerVariable' + required: + - type + - identifier + - variables + WorkflowResponse: + type: object + properties: + _id: + type: string + name: + type: string + description: + type: string + active: + type: boolean + draft: + type: boolean + preferenceSettings: + $ref: '#/components/schemas/PreferenceChannels' + critical: + type: boolean + tags: + type: array + items: + type: string + steps: + type: array + items: + $ref: '#/components/schemas/NotificationStep' + _organizationId: + type: string + _creatorId: + type: string + _environmentId: + type: string + triggers: + type: array + items: + $ref: '#/components/schemas/NotificationTrigger' + _notificationGroupId: + type: string + _parentId: + type: string + deleted: + type: boolean + deletedAt: + type: string + deletedBy: + type: string + notificationGroup: + $ref: '#/components/schemas/NotificationGroup' + data: + type: object + workflowIntegrationStatus: + type: object + required: + - name + - description + - active + - draft + - preferenceSettings + - critical + - tags + - steps + - _organizationId + - _creatorId + - _environmentId + - triggers + - _notificationGroupId + - deleted + - deletedAt + - deletedBy + MessageResponseDto: + type: object + properties: + _id: + type: string + _templateId: + type: string + _environmentId: + type: string + _messageTemplateId: + type: string + _organizationId: + type: string + _notificationId: + type: string + _subscriberId: + type: string + subscriber: + $ref: '#/components/schemas/SubscriberResponseDto' + template: + $ref: '#/components/schemas/WorkflowResponse' + templateIdentifier: + type: string + createdAt: + type: string + lastSeenDate: + type: string + lastReadDate: + type: string + content: + oneOf: + - $ref: '#/components/schemas/EmailBlock' + - type: string + transactionId: + type: string + subject: + type: string + channel: + enum: + - in_app + - email + - sms + - chat + - push + type: string + read: + type: boolean + seen: + type: boolean + email: + type: string + phone: + type: string + directWebhookUrl: + type: string + providerId: + type: string + deviceTokens: + type: array + items: + type: string + title: + type: string + cta: + $ref: '#/components/schemas/MessageCTA' + _feedId: + type: object + nullable: true + status: + type: string + enum: + - sent + - error + - warning + errorId: + type: string + errorText: + type: string + payload: + type: object + description: The payload that was used to send the notification trigger + overrides: + type: object + description: Provider specific overrides used when triggering the notification + required: + - _templateId + - _environmentId + - _messageTemplateId + - _organizationId + - _notificationId + - _subscriberId + - createdAt + - content + - transactionId + - channel + - read + - seen + - cta + - status + - errorId + - errorText + - payload + - overrides + MarkMessageActionAsSeenDto: + type: object + properties: + status: + enum: + - pending + - done + type: string + description: Message action status + payload: + type: object + description: Message action payload + required: + - status + DeleteMessageResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: A boolean stating the success of the action + status: + type: string + description: The status enum for the performed action + enum: + - deleted + required: + - acknowledged + - status + CreateTopicResponseDto: + type: object + properties: + _id: + type: string + description: The unique identifier for the Topic created. + key: + type: string + description: >- + User defined custom key and provided by the user that will be an + unique identifier for the Topic created. + required: + - key + CreateTopicRequestDto: + type: object + properties: + key: + type: string + description: >- + User defined custom key and provided by the user that will be an + unique identifier for the Topic created. + name: + type: string + description: >- + User defined custom name and provided by the user that will name the + Topic created. + required: + - key + - name + AddSubscribersRequestDto: + type: object + properties: + subscribers: + description: List of subscriber identifiers that will be associated to the topic + type: array + items: + type: string + required: + - subscribers + TopicSubscriberDto: + type: object + properties: + _organizationId: + type: string + _environmentId: + type: string + _subscriberId: + type: string + _topicId: + type: string + topicKey: + type: string + externalSubscriberId: + type: string + required: + - _organizationId + - _environmentId + - _subscriberId + - _topicId + - topicKey + - externalSubscriberId + RemoveSubscribersRequestDto: + type: object + properties: + subscribers: + description: List of subscriber identifiers that will be removed to the topic + type: array + items: + type: string + required: + - subscribers + TopicDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _environmentId: + type: string + key: + type: string + name: + type: string + subscribers: + type: array + items: + type: string + required: + - _organizationId + - _environmentId + - key + - name + - subscribers + FilterTopicsResponseDto: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TopicDto' + page: + type: number + pageSize: + type: number + totalCount: + type: number + required: + - data + - page + - pageSize + - totalCount + GetTopicResponseDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _environmentId: + type: string + key: + type: string + name: + type: string + subscribers: + type: array + items: + type: string + required: + - _organizationId + - _environmentId + - key + - name + - subscribers + RenameTopicResponseDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _environmentId: + type: string + key: + type: string + name: + type: string + subscribers: + type: array + items: + type: string + required: + - _organizationId + - _environmentId + - key + - name + - subscribers + RenameTopicRequestDto: + type: object + properties: + name: + type: string + description: >- + User defined custom name and provided by the user to rename the + topic. + required: + - name + GeneratePreviewResponseDto: + type: object + properties: {} + headers: + Content-Type: + required: true + description: The MIME type of the response body. + schema: + type: string + example: application/json + RateLimit-Limit: + required: false + description: >- + The number of requests that the client is permitted to make per second. + The actual maximum may differ when burst is enabled. + schema: + type: string + example: '100' + RateLimit-Remaining: + required: false + description: The number of requests remaining until the next window. + schema: + type: string + example: '93' + RateLimit-Reset: + required: false + description: >- + The remaining seconds until a request of the same cost will be + refreshed. + schema: + type: string + example: '8' + RateLimit-Policy: + required: false + description: The rate limit policy that was used to evaluate the request. + schema: + type: string + example: >- + 100;w=1;burst=110;comment="token + bucket";category="trigger";cost="single" + Retry-After: + required: false + description: >- + The number of seconds after which the client may retry the request that + was previously rejected. + schema: + type: string + example: '8' + Idempotency-Key: + required: false + description: The idempotency key used to evaluate the request. + schema: + type: string + example: '8' + Idempotency-Replay: + required: false + description: Whether the request was a replay of a previous request. + schema: + type: string + example: 'true' + Link: + required: false + description: A link to the documentation. + schema: + type: string + example: https://docs.novu.co/ +externalDocs: + description: Novu Documentation + url: https://docs.novu.co +x-speakeasy-name-override: + - operationId: ^.*get.* + methodNameOverride: retrieve + - operationId: ^.*retrieve.* + methodNameOverride: retrieve + - operationId: ^.*create.* + methodNameOverride: create + - operationId: ^.*update.* + methodNameOverride: update + - operationId: ^.*list.* + methodNameOverride: list + - operationId: ^.*delete.* + methodNameOverride: delete + - operationId: ^.*remove.* + methodNameOverride: delete +x-speakeasy-retries: + strategy: backoff + backoff: + initialInterval: 500 + maxInterval: 30000 + maxElapsedTime: 3600000 + exponent: 1.5 + statusCodes: + - '408' + - '409' + - '429' + - 5XX + retryConnectionErrors: true diff --git a/.speakeasy/temp/overlay_kQfMvHVybU.yaml b/.speakeasy/temp/overlay_kQfMvHVybU.yaml new file mode 100644 index 00000000..aad4f49e --- /dev/null +++ b/.speakeasy/temp/overlay_kQfMvHVybU.yaml @@ -0,0 +1,8807 @@ +openapi: 3.0.0 +paths: + /v1/environments/me: + get: + operationId: EnvironmentsControllerV1_getCurrentEnvironment + summary: Get current environment + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/EnvironmentResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Environments + security: + - api-key: [] + /v1/environments: + get: + operationId: EnvironmentsControllerV1_listMyEnvironments + summary: Get environments + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/EnvironmentResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Environments + security: + - api-key: [] + /v1/environments/api-keys: + get: + operationId: EnvironmentsControllerV1_listOrganizationApiKeys + x-speakeasy-group: Environments.ApiKeys + summary: Get api keys + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApiKey' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Environments + security: + - api-key: [] + /v1/execution-details: + get: + operationId: ExecutionDetailsController_getExecutionDetailsForNotification + summary: Get execution details + parameters: + - name: notificationId + required: true + in: query + schema: + type: string + - name: subscriberId + required: true + in: query + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ExecutionDetailsResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Execution Details + security: + - api-key: [] + /v1/events/trigger: + post: + operationId: EventsController_trigger + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Trigger Notification Event + x-speakeasy-name-override: trigger + summary: Trigger event + description: "\n Trigger event is the main (and only) way to send notifications to subscribers. \n The trigger identifier is used to match the particular workflow associated with it. \n Additional information can be passed according the body interface below.\n " + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/events/trigger/bulk: + post: + operationId: EventsController_triggerBulk + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Trigger Notification Events in Bulk + x-speakeasy-name-override: triggerBulk + summary: Bulk trigger event + description: "\n Using this endpoint you can trigger multiple events at once, to avoid multiple calls to the API.\n The bulk API is limited to 100 events per request.\n " + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BulkTriggerEventDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TriggerEventResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/events/trigger/broadcast: + post: + operationId: EventsController_broadcastEventToAll + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Broadcast Event to All + x-speakeasy-name-override: triggerBroadcast + summary: Broadcast event to all + description: >- + Trigger a broadcast event to all existing subscribers, could be used to send announcements, etc. + + In the future could be used to trigger events to a subset of subscribers based on defined filters. + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventToAllRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerEventResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/events/trigger/{transactionId}: + delete: + operationId: EventsController_cancel + x-speakeasy-group: '' + x-speakeasy-usage-example: + title: Cancel Triggered Event + x-speakeasy-name-override: cancel + summary: Cancel triggered event + description: "\n Using a previously generated transactionId during the event trigger,\n will cancel any active or pending workflows. This is useful to cancel active digests, delays etc...\n " + parameters: + - name: transactionId + required: true + in: path + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/DataBooleanDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Events + security: + - api-key: [] + /v1/notifications: + get: + operationId: NotificationsController_listNotifications + summary: Get notifications + parameters: + - name: channels + required: true + in: query + schema: + type: array + items: + type: string + enum: + - in_app + - email + - sms + - chat + - push + - name: templates + required: true + in: query + schema: + type: array + items: + type: string + - name: emails + required: true + in: query + schema: + type: array + items: + type: string + - name: search + required: true + in: query + deprecated: true + schema: + type: string + - name: subscriberIds + required: true + in: query + schema: + type: array + items: + type: string + - name: page + required: false + in: query + schema: + default: 0 + type: number + - name: transactionId + required: false + in: query + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivitiesResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notifications/stats: + get: + operationId: NotificationsController_getActivityStats + x-speakeasy-group: Notifications.Stats + summary: Get notification statistics + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivityStatsResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notifications/graph/stats: + get: + operationId: NotificationsController_getActivityGraphStats + x-speakeasy-name-override: graph + x-speakeasy-group: Notifications.Stats + summary: Get notification graph statistics + parameters: + - name: days + required: false + in: query + schema: + type: number + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ActivityGraphStatesResponse' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notifications/{notificationId}: + get: + operationId: NotificationsController_getNotification + summary: Get notification + parameters: + - name: notificationId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivityNotificationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Notifications + security: + - api-key: [] + /v1/notification-groups: + post: + operationId: NotificationGroupsController_createNotificationGroup + summary: Create workflow group + description: workflow group was previously named notification group + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNotificationGroupRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + get: + operationId: NotificationGroupsController_listNotificationGroups + summary: Get workflow groups + description: workflow group was previously named notification group + parameters: [] + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + /v1/notification-groups/{id}: + get: + operationId: NotificationGroupsController_getNotificationGroup + summary: Get workflow group + description: workflow group was previously named notification group + parameters: + - name: id + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + patch: + operationId: NotificationGroupsController_updateNotificationGroup + summary: Update workflow group + description: workflow group was previously named notification group + parameters: + - name: id + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNotificationGroupRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + delete: + operationId: NotificationGroupsController_deleteNotificationGroup + summary: Delete workflow group + description: workflow group was previously named notification group + parameters: + - name: id + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteNotificationGroupResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Workflow groups + security: + - api-key: [] + /v1/integrations: + get: + operationId: IntegrationsController_listIntegrations + summary: Get integrations + description: >- + Return all the integrations the user has created for that organization. Review v.0.17.0 changelog for a breaking change + parameters: [] + responses: + '200': + description: >- + The list of integrations belonging to the organization that are successfully returned. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + post: + operationId: IntegrationsController_createIntegration + summary: Create integration + description: >- + Create an integration for the current environment the user is based on the API key provided + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateIntegrationRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/active: + get: + operationId: IntegrationsController_getActiveIntegrations + x-speakeasy-name-override: listActive + summary: Get active integrations + description: >- + Return all the active integrations the user has created for that organization. Review v.0.17.0 changelog for a breaking change + parameters: [] + responses: + '200': + description: >- + The list of active integrations belonging to the organization that are successfully returned. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/webhook/provider/{providerOrIntegrationId}/status: + get: + operationId: IntegrationsController_getWebhookSupportStatus + x-speakeasy-group: Integrations.Webhooks + summary: Get webhook support status for provider + description: >- + Return the status of the webhook for this provider, if it is supported or if it is not based on a boolean value + parameters: + - name: providerOrIntegrationId + required: true + in: path + schema: + type: string + responses: + '200': + description: The status of the webhook for the provider requested + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: boolean + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/{integrationId}: + put: + operationId: IntegrationsController_updateIntegrationById + summary: Update integration + parameters: + - name: integrationId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateIntegrationRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseDto' + '404': + description: >- + The integration with the integrationId provided does not exist in the database. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + delete: + operationId: IntegrationsController_removeIntegration + summary: Delete integration + parameters: + - name: integrationId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IntegrationResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/integrations/{integrationId}/set-primary: + post: + operationId: IntegrationsController_setIntegrationAsPrimary + x-speakeasy-name-override: setAsPrimary + summary: Set integration as primary + parameters: + - name: integrationId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/IntegrationResponseDto' + '404': + description: >- + The integration with the integrationId provided does not exist in the database. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Integrations + security: + - api-key: [] + /v1/subscribers: + get: + operationId: SubscribersController_listSubscribers + x-speakeasy-pagination: + type: offsetLimit + inputs: + - name: page + in: parameters + type: page + - name: limit + in: parameters + type: limit + outputs: + results: $.data.resultArray + summary: Get subscribers + description: >- + Returns a list of subscribers, could paginated using the `page` and `limit` query parameter + parameters: + - name: page + required: false + in: query + schema: + type: number + - name: limit + required: false + in: query + schema: + maximum: 100 + default: 10 + type: number + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/PaginatedResponseDto' + - properties: + data: + type: array + items: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + post: + operationId: SubscribersController_createSubscriber + summary: Create subscriber + description: >- + Creates a subscriber entity, in the Novu platform. The subscriber will be later used to receive notifications, and access notification feeds. Communication credentials such as email, phone number, and 3 rd party credentials i.e slack tokens could be later associated to this entity. + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSubscriberRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}: + get: + operationId: SubscribersController_getSubscriber + summary: Get subscriber + description: Get subscriber by your internal id used to identify the subscriber + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: includeTopics + required: false + in: query + description: Includes the topics associated with the subscriber + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + put: + operationId: SubscribersController_updateSubscriber + summary: Update subscriber + description: Used to update the subscriber entity with new information + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + delete: + operationId: SubscribersController_removeSubscriber + summary: Delete subscriber + description: Deletes a subscriber entity from the Novu platform + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteSubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/bulk: + post: + operationId: SubscribersController_bulkCreateSubscribers + x-speakeasy-name-override: createBulk + summary: Bulk create subscribers + description: "\n Using this endpoint you can create multiple subscribers at once, to avoid multiple calls to the API.\n The bulk API is limited to 500 subscribers per request.\n " + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BulkSubscriberCreateDto' + responses: + '201': + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials: + put: + operationId: SubscribersController_updateSubscriberChannel + x-speakeasy-group: Subscribers.Credentials + summary: Update subscriber credentials + description: >- + Subscriber credentials associated to the delivery methods such as slack and push tokens. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberChannelRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + patch: + operationId: SubscribersController_modifySubscriberChannel + x-speakeasy-name-override: append + x-speakeasy-group: Subscribers.Credentials + summary: Modify subscriber credentials + description: >- + Subscriber credentials associated to the delivery methods such as slack and push tokens. + + This endpoint appends provided credentials and deviceTokens to the existing ones. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberChannelRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials/{providerId}: + delete: + operationId: SubscribersController_deleteSubscriberCredentials + x-speakeasy-group: Subscribers.Credentials + summary: Delete subscriber credentials by providerId + description: Delete subscriber credentials such as slack and expo tokens. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: providerId + required: true + in: path + schema: + type: string + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/online-status: + patch: + operationId: SubscribersController_updateSubscriberOnlineFlag + x-speakeasy-name-override: updateOnlineFlag + x-speakeasy-group: Subscribers.properties + summary: Update subscriber online status + description: Used to update the subscriber isOnline flag. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberOnlineFlagRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/preferences: + get: + operationId: SubscribersController_listSubscriberPreferences + x-speakeasy-group: Subscribers.Preferences + summary: Get subscriber preferences + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: includeInactiveChannels + required: false + in: query + description: >- + A flag which specifies if the inactive workflow channels should be included in the retrieved preferences. Default is true + schema: + type: boolean + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/UpdateSubscriberPreferenceResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + patch: + operationId: SubscribersController_updateSubscriberGlobalPreferences + x-speakeasy-name-override: updateGlobal + x-speakeasy-group: Subscribers.Preferences + summary: Update subscriber global preferences + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberGlobalPreferencesRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberPreferenceResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/preferences/{parameter}: + get: + operationId: SubscribersController_getSubscriberPreferenceByLevel + x-speakeasy-name-override: retrieveByLevel + x-speakeasy-group: Subscribers.Preferences + summary: Get subscriber preferences by level + parameters: + - name: includeInactiveChannels + required: false + in: query + description: >- + A flag which specifies if the inactive workflow channels should be included in the retrieved preferences. Default is true + schema: + type: boolean + - name: parameter + required: true + in: path + description: 'the preferences level to be retrieved (template / global) ' + schema: + enum: + - global + - template + type: string + - name: subscriberId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/GetSubscriberPreferencesResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + patch: + operationId: SubscribersController_updateSubscriberPreference + x-speakeasy-group: Subscribers.Preferences + summary: Update subscriber preference + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: parameter + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberPreferenceRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateSubscriberPreferenceResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/notifications/feed: + get: + operationId: SubscribersController_getNotificationsFeed + x-speakeasy-group: Subscribers.Notifications + summary: Get in-app notification feed for a particular subscriber + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: page + required: false + in: query + schema: + type: number + - name: limit + required: false + in: query + schema: + maximum: 100 + default: 10 + type: number + - name: read + required: false + in: query + schema: + type: boolean + - name: seen + required: false + in: query + schema: + type: boolean + - name: payload + required: false + in: query + description: Base64 encoded string of the partial payload JSON object + example: >- + btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string like eyJmb28iOjEyM30= + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/PaginatedResponseDto' + - properties: + data: + type: array + items: + $ref: '#/components/schemas/FeedResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/notifications/unseen: + get: + operationId: SubscribersController_getUnseenCount + x-speakeasy-name-override: unseenCount + x-speakeasy-group: Subscribers.Notifications + summary: Get the unseen in-app notifications count for subscribers feed + parameters: + - name: seen + required: true + in: query + schema: + type: boolean + - name: subscriberId + required: true + in: path + schema: + type: string + - name: limit + required: true + in: query + schema: + type: number + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/UnseenCountResponse' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/messages/mark-as: + post: + operationId: SubscribersController_markMessagesAs + x-speakeasy-name-override: markAllAs + x-speakeasy-group: Subscribers.Messages + summary: Mark a subscriber messages as seen, read, unseen or unread + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MessageMarkAsRequestDto' + responses: + '201': + description: '' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MessageEntity' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/messages/mark-all: + post: + operationId: SubscribersController_markAllUnreadAsRead + x-speakeasy-name-override: markAll + x-speakeasy-group: Subscribers.Messages + summary: >- + Marks all the subscriber messages as read, unread, seen or unseen. Optionally you can pass feed id (or array) to mark messages of a particular feed. + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MarkAllMessageAsRequestDto' + responses: + '201': + description: '' + content: + application/json: + schema: + type: number + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}: + post: + operationId: SubscribersController_markActionAsSeen + x-speakeasy-name-override: updateAsSeen + x-speakeasy-group: Subscribers.Messages + summary: Mark message action as seen + parameters: + - name: messageId + required: true + in: path + schema: + type: string + - name: type + required: true + in: path + schema: {} + - name: subscriberId + required: true + in: path + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MarkMessageActionAsSeenDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials/{providerId}/oauth/callback: + get: + operationId: SubscribersController_chatOauthCallback + x-speakeasy-name-override: chatAccessOauthCallBack + x-speakeasy-group: Subscribers.Authentication + summary: Handle providers oauth redirect + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: providerId + required: true + in: path + schema: {} + - name: code + required: true + in: query + schema: + type: string + - name: hmacHash + required: true + in: query + schema: + type: string + - name: environmentId + required: true + in: query + schema: + type: string + - name: integrationIdentifier + required: false + in: query + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + type: object + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/subscribers/{subscriberId}/credentials/{providerId}/oauth: + get: + operationId: SubscribersController_chatAccessOauth + x-speakeasy-name-override: chatAccessOauth + x-speakeasy-group: Subscribers.Authentication + summary: Handle chat oauth + parameters: + - name: subscriberId + required: true + in: path + schema: + type: string + - name: providerId + required: true + in: path + schema: {} + - name: hmacHash + required: true + in: query + schema: + type: string + - name: environmentId + required: true + in: query + schema: + type: string + - name: integrationIdentifier + required: false + in: query + schema: + type: string + responses: + '200': + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Subscribers + security: + - api-key: [] + /v1/messages: + get: + operationId: MessagesController_getMessages + summary: Get messages + description: >- + Returns a list of messages, could paginate using the `page` query parameter + parameters: + - name: channel + required: false + in: query + schema: + enum: + - in_app + - email + - sms + - chat + - push + type: string + - name: subscriberId + required: false + in: query + schema: + type: string + - name: transactionId + required: false + in: query + schema: + type: array + items: + type: string + - name: page + required: false + in: query + schema: + default: 0 + type: number + - name: limit + required: false + in: query + schema: + default: 10 + type: number + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ActivitiesResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Messages + security: + - api-key: [] + /v1/messages/{messageId}: + delete: + operationId: MessagesController_deleteMessage + summary: Delete message + description: Deletes a message entity from the Novu platform + parameters: + - name: messageId + required: true + in: path + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteMessageResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Messages + security: + - api-key: [] + /v1/messages/transaction/{transactionId}: + delete: + operationId: MessagesController_deleteMessagesByTransactionId + x-speakeasy-name-override: deleteByTransactionId + summary: Delete messages by transactionId + description: >- + Deletes messages entity from the Novu platform using TransactionId of message + parameters: + - name: channel + required: false + in: query + description: The channel of the message to be deleted + schema: + enum: + - in_app + - email + - sms + - chat + - push + type: string + - name: transactionId + required: true + in: path + schema: + type: string + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Messages + security: + - api-key: [] + /v1/topics: + post: + operationId: TopicsController_createTopic + summary: Topic creation + description: Create a topic + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTopicRequestDto' + responses: + '201': + description: Created + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateTopicResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + get: + operationId: TopicsController_listTopics + summary: Filter topics + description: >- + Returns a list of topics that can be paginated using the `page` query parameter and filtered by the topic key with the `key` query parameter + parameters: + - name: page + required: false + in: query + description: Number of page for the pagination + schema: + minimum: 0 + default: 0 + type: number + - name: pageSize + required: false + in: query + description: Size of page for the pagination + schema: + minimum: 0 + default: 10 + type: number + - name: key + required: false + in: query + description: Topic key + schema: + type: string + responses: + '200': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/FilterTopicsResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}/subscribers: + post: + operationId: TopicsController_addSubscribers + x-speakeasy-name-override: assign + x-speakeasy-group: Topics.Subscribers + summary: Subscribers addition + description: Add subscribers to a topic by key + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AddSubscribersRequestDto' + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}/subscribers/{externalSubscriberId}: + get: + operationId: TopicsController_getTopicSubscriber + x-speakeasy-group: Topics.Subscribers + summary: Check topic subscriber + description: Check if a subscriber belongs to a certain topic + parameters: + - name: externalSubscriberId + required: true + in: path + description: The external subscriber id + schema: + type: string + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TopicSubscriberDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}/subscribers/removal: + post: + operationId: TopicsController_removeSubscribers + x-speakeasy-group: Topics.Subscribers + summary: Subscribers removal + description: Remove subscribers from a topic + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RemoveSubscribersRequestDto' + responses: + '204': + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + description: '' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + /v1/topics/{topicKey}: + delete: + operationId: TopicsController_deleteTopic + summary: Delete topic + description: Delete a topic by its topic key if it has no subscribers + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + responses: + '204': + description: The topic has been deleted correctly + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '404': + description: >- + The topic with the key provided does not exist in the database so it can not be deleted. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + '409': + description: >- + The topic you are trying to delete has subscribers assigned to it. Delete the subscribers before deleting the topic. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + get: + operationId: TopicsController_getTopic + summary: Get topic + description: Get a topic by its topic key + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/GetTopicResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] + patch: + operationId: TopicsController_renameTopic + x-speakeasy-name-override: rename + summary: Rename a topic + description: Rename a topic by providing a new name + parameters: + - name: topicKey + required: true + in: path + description: The topic key + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RenameTopicRequestDto' + responses: + '200': + description: Ok + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + content: + application/json: + schema: + $ref: '#/components/schemas/RenameTopicResponseDto' + '409': + description: >- + The request could not be completed due to a conflict with the current state of the target resource. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + Link: + $ref: '#/components/headers/Link' + content: + application/json: + schema: + type: string + example: >- + Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second + '429': + description: 'The client has sent too many requests in a given amount of time. ' + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: API rate limit exceeded + '503': + description: >- + The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. + headers: + Content-Type: + $ref: '#/components/headers/Content-Type' + RateLimit-Limit: + $ref: '#/components/headers/RateLimit-Limit' + RateLimit-Remaining: + $ref: '#/components/headers/RateLimit-Remaining' + RateLimit-Reset: + $ref: '#/components/headers/RateLimit-Reset' + RateLimit-Policy: + $ref: '#/components/headers/RateLimit-Policy' + Idempotency-Key: + $ref: '#/components/headers/Idempotency-Key' + Idempotency-Replay: + $ref: '#/components/headers/Idempotency-Replay' + Retry-After: + $ref: '#/components/headers/Retry-After' + content: + application/json: + schema: + type: string + example: Please wait some time, then try again. + tags: + - Topics + security: + - api-key: [] +info: + title: Novu API + description: >- + Novu REST API. Please see https://docs.novu.co/api-reference for more details. + version: '1.0' + contact: + name: Novu Support + url: https://discord.gg/novu + email: support@novu.co + termsOfService: https://novu.co/terms + license: + name: MIT + url: https://opensource.org/license/mit +tags: + - name: Events + description: >- + Events represent a change in state of a subscriber. They are used to trigger workflows, and enable you to send notifications to subscribers based on their actions. + externalDocs: + url: https://docs.novu.co/workflows + - name: Subscribers + description: >- + A subscriber in Novu represents someone who should receive a message. A subscriber’s profile information contains important attributes about the subscriber that will be used in messages (name, email). The subscriber object can contain other key-value pairs that can be used to further personalize your messages. + externalDocs: + url: https://docs.novu.co/subscribers/subscribers + - name: Topics + description: >- + Topics are a way to group subscribers together so that they can be notified of events at once. A topic is identified by a custom key. This can be helpful for things like sending out marketing emails or notifying users of new features. Topics can also be used to send notifications to the subscribers who have been grouped together based on their interests, location, activities and much more. + externalDocs: + url: https://docs.novu.co/subscribers/topics + - name: Notification + description: >- + A notification conveys information from source to recipient, triggered by a workflow acting as a message blueprint. Notifications can be individual or bundled as digest for user-friendliness. + externalDocs: + url: https://docs.novu.co/getting-started/introduction + - name: Integrations + description: >- + With the help of the Integration Store, you can easily integrate your favorite delivery provider. During the runtime of the API, the Integrations Store is responsible for storing the configurations of all the providers. + externalDocs: + url: https://docs.novu.co/channels-and-providers/integration-store + - name: Layouts + description: >- + Novu allows the creation of layouts - a specific HTML design or structure to wrap content of email notifications. Layouts can be manipulated and assigned to new or existing workflows within the Novu platform, allowing users to create, manage, and assign these layouts to workflows, so they can be reused to structure the appearance of notifications sent through the platform. + externalDocs: + url: https://docs.novu.co/content-creation-design/layouts + - name: Workflows + description: >- + All notifications are sent via a workflow. Each workflow acts as a container for the logic and blueprint that are associated with a type of notification in your system. + externalDocs: + url: https://docs.novu.co/workflows + - name: Notification Templates + description: >- + Deprecated. Use Workflows (/workflows) instead, which provide the same functionality under a new name. + - name: Workflow groups + description: Workflow groups are used to organize workflows into logical groups. + - name: Changes + description: >- + Changes represent a change in state of an environment. They are analagous to a pending pull request in git, enabling you to test changes before they are applied to your environment and atomically apply them when you are ready. + externalDocs: + url: >- + https://docs.novu.co/platform/environments#promoting-pending-changes-to-production + - name: Environments + description: >- + Novu uses the concept of environments to ensure logical separation of your data and configuration. This means that subscribers, and preferences created in one environment are never accessible to another. + externalDocs: + url: https://docs.novu.co/platform/environments + - name: Inbound Parse + description: >- + Inbound Webhook is a feature that allows processing of incoming emails for a domain or subdomain. The feature parses the contents of the email and POSTs the information to a specified URL in a multipart/form-data format. + externalDocs: + url: https://docs.novu.co/platform/inbound-parse-webhook + - name: Feeds + description: >- + Novu provides a notification activity feed that monitors every outgoing message associated with its relevant metadata. This can be used to monitor activity and discover potential issues with a specific provider or a channel type. + externalDocs: + url: https://docs.novu.co/activity-feed + - name: Tenants + description: >- + A tenant represents a group of users. As a developer, when your apps have organizations, they are referred to as tenants. Tenants in Novu provides the ability to tailor specific notification experiences to users of different groups or organizations. + externalDocs: + url: https://docs.novu.co/tenants + - name: Messages + description: >- + A message in Novu represents a notification delivered to a recipient on a particular channel. Messages contain information about the request that triggered its delivery, a view of the data sent to the recipient, and a timeline of its lifecycle events. Learn more about messages. + externalDocs: + url: https://docs.novu.co/workflows/messages + - name: Organizations + description: >- + An organization serves as a separate entity within your Novu account. Each organization you create has its own separate integration store, workflows, subscribers, and API keys. This separation of resources allows you to manage multi-tenant environments and separate domains within a single account. + externalDocs: + url: https://docs.novu.co/platform/organizations + - name: Execution Details + description: >- + Execution details are used to track the execution of a workflow. They provided detailed information on the execution of a workflow, including the status of each step, the input and output of each step, and the overall status of the execution. + externalDocs: + url: https://docs.novu.co/activity-feed +servers: + - url: https://api.novu.co + - url: https://eu.api.novu.co +components: + securitySchemes: + api-key: + type: apiKey + in: header + name: Authorization + description: >- + API key authentication. Allowed headers-- "Authorization: ApiKey ". + schemas: + DataWrapperDto: + type: object + properties: + data: + type: object + required: + - data + EnvironmentResponseDto: + type: object + properties: + _id: + type: string + name: + type: string + _organizationId: + type: string + identifier: + type: string + apiKeys: + type: array + items: + type: string + _parentId: + type: string + slug: + type: string + required: + - name + - _organizationId + - identifier + - _parentId + ApiKey: + type: object + properties: + key: + type: string + _userId: + type: string + required: + - key + - _userId + ExecutionDetailsResponseDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _jobId: + type: string + _environmentId: + type: string + _notificationId: + type: string + _notificationTemplateId: + type: string + _subscriberId: + type: string + _messageId: + type: string + providerId: + type: string + transactionId: + type: string + channel: + type: string + enum: + - in_app + - email + - sms + - chat + - push + - digest + - trigger + - delay + - custom + detail: + type: string + source: + type: string + enum: + - Credentials + - Internal + - Payload + - Webhook + status: + type: string + enum: + - Success + - Warning + - Failed + - Pending + - Queued + - ReadConfirmation + isTest: + type: boolean + isRetry: + type: boolean + createdAt: + type: string + required: + - _organizationId + - _jobId + - _environmentId + - _notificationId + - _notificationTemplateId + - _subscriberId + - transactionId + - channel + - detail + - source + - status + - isTest + - isRetry + TriggerEventResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: If trigger was acknowledged or not + status: + enum: + - error + - trigger_not_active + - no_workflow_active_steps_defined + - no_workflow_steps_defined + - processed + - subscriber_id_missing + - no_tenant_found + type: string + description: Status for trigger + error: + description: In case of an error, this field will contain the error message + type: array + items: + type: string + transactionId: + type: string + description: Transaction id for trigger + required: + - acknowledged + - status + TopicPayloadDto: + type: object + properties: + topicKey: + type: string + type: + enum: + - Subscriber + - Topic + type: string + example: Topic + required: + - topicKey + - type + TenantPayloadDto: + type: object + properties: + identifier: + type: string + name: + type: string + data: + type: object + SubscriberPayloadDto: + type: object + properties: + subscriberId: + type: string + description: >- + The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems + email: + type: string + firstName: + type: string + lastName: + type: string + phone: + type: string + avatar: + type: string + description: An http url to the profile image of your subscriber + locale: + type: string + data: + type: object + channels: + type: array + items: + type: string + required: + - subscriberId + TriggerEventRequestDto: + type: object + properties: + name: + type: string + description: >- + The trigger identifier of the workflow you wish to send. This identifier can be found on the workflow page. + example: workflow_identifier + payload: + type: object + description: "The payload object is used to pass additional custom information that could be used to render the workflow, or perform routing rules based on it. \n This data will also be available when fetching the notifications feed from the API to display certain parts of the UI." + example: + comment_id: string + post: + text: string + overrides: + type: object + description: This could be used to override provider specific configurations + example: + fcm: + data: + key: value + to: + type: array + description: The recipients list of people who will receive the notification. + items: + oneOf: + - $ref: '#/components/schemas/SubscriberPayloadDto' + - type: string + description: Unique identifier of a subscriber in your systems + example: SUBSCRIBER_ID + - $ref: '#/components/schemas/TopicPayloadDto' + transactionId: + type: string + description: >- + A unique identifier for this transaction, we will generated a UUID if not provided. + actor: + description: "It is used to display the Avatar of the provided actor's subscriber id or actor object.\n If a new actor object is provided, we will create a new subscriber in our system\n " + oneOf: + - type: string + description: Unique identifier of a subscriber in your systems + - $ref: '#/components/schemas/SubscriberPayloadDto' + tenant: + description: "It is used to specify a tenant context during trigger event.\n Existing tenants will be updated with the provided details.\n " + oneOf: + - type: string + description: Unique identifier of a tenant in your system + - $ref: '#/components/schemas/TenantPayloadDto' + bridgeUrl: + type: string + controls: + type: object + required: + - name + - to + BulkTriggerEventDto: + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/TriggerEventRequestDto' + required: + - events + TriggerEventToAllRequestDto: + type: object + properties: + name: + type: string + description: >- + The trigger identifier associated for the template you wish to send. This identifier can be found on the template page. + payload: + type: object + description: "The payload object is used to pass additional custom information that could be used to render the template, or perform routing rules based on it. \n This data will also be available when fetching the notifications feed from the API to display certain parts of the UI." + example: + comment_id: string + post: + text: string + overrides: + type: object + description: This could be used to override provider specific configurations + example: + fcm: + data: + key: value + transactionId: + type: string + description: >- + A unique identifier for this transaction, we will generated a UUID if not provided. + actor: + description: "It is used to display the Avatar of the provided actor's subscriber id or actor object.\n If a new actor object is provided, we will create a new subscriber in our system\n " + oneOf: + - type: string + description: Unique identifier of a subscriber in your systems + - $ref: '#/components/schemas/SubscriberPayloadDto' + tenant: + description: "It is used to specify a tenant context during trigger event.\n If a new tenant object is provided, we will create a new tenant.\n " + oneOf: + - type: string + description: Unique identifier of a tenant in your system + - $ref: '#/components/schemas/TenantPayloadDto' + required: + - name + - payload + DataBooleanDto: + type: object + properties: + data: + type: boolean + required: + - data + ActivitiesResponseDto: + type: object + properties: + hasMore: + type: boolean + data: + type: array + items: + type: string + pageSize: + type: number + page: + type: number + required: + - hasMore + - data + - pageSize + - page + ActivityStatsResponseDto: + type: object + properties: + weeklySent: + type: number + monthlySent: + type: number + required: + - weeklySent + - monthlySent + ActivityGraphStatesResponse: + type: object + properties: + _id: + type: string + count: + type: number + templates: + type: array + items: + type: string + channels: + type: array + items: + type: string + enum: + - in_app + - email + - sms + - chat + - push + required: + - _id + - count + - templates + - channels + ActivityNotificationSubscriberResponseDto: + type: object + properties: + firstName: + type: string + _id: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + required: + - _id + ActivityNotificationTemplateResponseDto: + type: object + properties: + _id: + type: string + name: + type: string + triggers: + type: array + items: + type: string + required: + - name + - triggers + ActivityNotificationResponseDto: + type: object + properties: + _id: + type: string + _environmentId: + type: string + _organizationId: + type: string + transactionId: + type: string + createdAt: + type: string + channels: + type: string + items: + type: string + enum: + - in_app + - email + - sms + - chat + - push + - digest + - trigger + - delay + - custom + enum: + - in_app + - email + - sms + - chat + - push + - digest + - trigger + - delay + - custom + subscriber: + $ref: '#/components/schemas/ActivityNotificationSubscriberResponseDto' + template: + $ref: '#/components/schemas/ActivityNotificationTemplateResponseDto' + jobs: + type: array + items: + type: string + required: + - _environmentId + - _organizationId + - transactionId + NotificationGroupResponseDto: + type: object + properties: + _id: + type: string + name: + type: string + _environmentId: + type: string + _organizationId: + type: string + _parentId: + type: string + required: + - name + - _environmentId + - _organizationId + CreateNotificationGroupRequestDto: + type: object + properties: + name: + type: string + required: + - name + DeleteNotificationGroupResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: A boolean stating the success of the action + status: + type: string + description: The status enum for the performed action + enum: + - deleted + required: + - acknowledged + - status + CredentialsDto: + type: object + properties: + apiKey: + type: string + user: + type: string + secretKey: + type: string + domain: + type: string + password: + type: string + host: + type: string + port: + type: string + secure: + type: boolean + region: + type: string + accountSid: + type: string + messageProfileId: + type: string + token: + type: string + from: + type: string + senderName: + type: string + projectName: + type: string + applicationId: + type: string + clientId: + type: string + requireTls: + type: boolean + ignoreTls: + type: boolean + tlsOptions: + type: object + baseUrl: + type: string + webhookUrl: + type: string + redirectUrl: + type: string + hmac: + type: boolean + serviceAccount: + type: string + ipPoolName: + type: string + apiKeyRequestHeader: + type: string + secretKeyRequestHeader: + type: string + idPath: + type: string + datePath: + type: string + apiToken: + type: string + authenticateByToken: + type: boolean + authenticationTokenKey: + type: string + instanceId: + type: string + alertUid: + type: string + title: + type: string + imageUrl: + type: string + state: + type: string + externalLink: + type: string + channelId: + type: string + phoneNumberIdentification: + type: string + accessKey: + type: string + FieldFilterPart: + type: object + properties: + field: + type: string + value: + type: string + operator: + type: string + enum: + - LARGER + - SMALLER + - LARGER_EQUAL + - SMALLER_EQUAL + - EQUAL + - NOT_EQUAL + - ALL_IN + - ANY_IN + - NOT_IN + - BETWEEN + - NOT_BETWEEN + - LIKE + - NOT_LIKE + - IN + 'on': + type: string + enum: + - subscriber + - payload + required: + - field + - value + - operator + - 'on' + StepFilter: + type: object + properties: + isNegated: + type: boolean + type: + type: string + enum: + - BOOLEAN + - TEXT + - DATE + - NUMBER + - STATEMENT + - LIST + - MULTI_LIST + - GROUP + value: + type: string + enum: + - AND + - OR + children: + type: array + items: + $ref: '#/components/schemas/FieldFilterPart' + required: + - isNegated + - type + - value + - children + IntegrationResponseDto: + type: object + properties: + _id: + type: string + _environmentId: + type: string + _organizationId: + type: string + name: + type: string + identifier: + type: string + providerId: + type: string + channel: + enum: + - in_app + - email + - sms + - chat + - push + type: string + credentials: + $ref: '#/components/schemas/CredentialsDto' + active: + type: boolean + deleted: + type: boolean + deletedAt: + type: string + deletedBy: + type: string + primary: + type: boolean + conditions: + type: array + items: + $ref: '#/components/schemas/StepFilter' + required: + - _environmentId + - _organizationId + - name + - identifier + - providerId + - channel + - credentials + - active + - deleted + - deletedAt + - deletedBy + - primary + CreateIntegrationRequestDto: + type: object + properties: + name: + type: string + identifier: + type: string + _environmentId: + type: string + providerId: + type: string + channel: + enum: + - in_app + - email + - sms + - chat + - push + type: string + credentials: + $ref: '#/components/schemas/CredentialsDto' + active: + type: boolean + description: >- + If the integration is active the validation on the credentials field will run + check: + type: boolean + conditions: + type: array + items: + $ref: '#/components/schemas/StepFilter' + required: + - providerId + - channel + UpdateIntegrationRequestDto: + type: object + properties: + name: + type: string + identifier: + type: string + _environmentId: + type: string + active: + type: boolean + description: >- + If the integration is active the validation on the credentials field will run + credentials: + $ref: '#/components/schemas/CredentialsDto' + removeNovuBranding: + type: boolean + description: If true, the Novu branding will be removed from the Inbox component + check: + type: boolean + conditions: + type: array + items: + $ref: '#/components/schemas/StepFilter' + PaginatedResponseDto: + type: object + properties: + page: + type: number + description: The current page of the paginated response + hasMore: + type: boolean + description: Does the list have more items to fetch + pageSize: + type: number + description: Number of items on each page + data: + description: The list of items matching the query + type: array + items: + type: object + required: + - page + - hasMore + - pageSize + - data + ChannelCredentials: + type: object + properties: + webhookUrl: + type: string + description: >- + Webhook url used by chat app integrations. The webhook should be obtained from the chat app provider. + channel: + type: string + description: Channel specification for Mattermost chat notifications + deviceTokens: + description: >- + Contains an array of the subscriber device tokens for a given provider. Used on Push integrations + type: array + items: + type: string + alertUid: + type: string + description: alert_uid for grafana on-call webhook payload + title: + type: string + description: title to be used with grafana on call webhook + imageUrl: + type: string + description: image_url property fo grafana on call webhook + state: + type: string + description: state property fo grafana on call webhook + externalUrl: + type: string + description: link_to_upstream_details property fo grafana on call webhook + required: + - webhookUrl + ChannelSettings: + type: object + properties: + providerId: + type: string + enum: + - slack + - discord + - msteams + - mattermost + - ryver + - zulip + - grafana-on-call + - getstream + - rocket-chat + - whatsapp-business + - fcm + - apns + - expo + - one-signal + - pushpad + - push-webhook + - pusher-beams + description: The provider identifier for the credentials + integrationIdentifier: + type: string + description: The integration identifier + credentials: + description: Credentials payload for the specified provider + allOf: + - $ref: '#/components/schemas/ChannelCredentials' + _integrationId: + type: string + description: Id of the integration that is used for this channel + required: + - providerId + - credentials + - _integrationId + SubscriberResponseDto: + type: object + properties: + _id: + type: string + description: >- + The internal id novu generated for your subscriber, this is not the subscriberId matching your query. See `subscriberId` for that + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + avatar: + type: string + locale: + type: string + subscriberId: + type: string + description: >- + The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems + channels: + description: Channels settings for subscriber + type: array + items: + $ref: '#/components/schemas/ChannelSettings' + topics: + description: Topics that subscriber belongs to + type: array + items: + type: string + isOnline: + type: boolean + lastOnlineAt: + type: string + _organizationId: + type: string + _environmentId: + type: string + deleted: + type: boolean + createdAt: + type: string + updatedAt: + type: string + __v: + type: number + required: + - subscriberId + - _organizationId + - _environmentId + - deleted + - createdAt + - updatedAt + CreateSubscriberRequestDto: + type: object + properties: + subscriberId: + type: string + description: >- + The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems + email: + type: string + firstName: + type: string + lastName: + type: string + phone: + type: string + avatar: + type: string + description: An http url to the profile image of your subscriber + locale: + type: string + data: + type: object + channels: + type: array + items: + type: string + required: + - subscriberId + BulkSubscriberCreateDto: + type: object + properties: + subscribers: + type: array + items: + type: string + required: + - subscribers + UpdateSubscriberRequestDto: + type: object + properties: + email: + type: string + firstName: + type: string + lastName: + type: string + phone: + type: string + avatar: + type: string + locale: + type: string + data: + type: object + channels: + type: array + items: + type: string + UpdateSubscriberChannelRequestDto: + type: object + properties: + providerId: + type: string + enum: + - slack + - discord + - msteams + - mattermost + - ryver + - zulip + - grafana-on-call + - getstream + - rocket-chat + - whatsapp-business + - fcm + - apns + - expo + - one-signal + - pushpad + - push-webhook + - pusher-beams + description: The provider identifier for the credentials + integrationIdentifier: + type: string + description: The integration identifier + credentials: + description: Credentials payload for the specified provider + allOf: + - $ref: '#/components/schemas/ChannelCredentials' + required: + - providerId + - credentials + UpdateSubscriberOnlineFlagRequestDto: + type: object + properties: + isOnline: + type: boolean + required: + - isOnline + DeleteSubscriberResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: A boolean stating the success of the action + status: + type: string + description: The status enum for the performed action + enum: + - deleted + required: + - acknowledged + - status + TemplateResponse: + type: object + properties: + _id: + type: string + description: Unique identifier of the workflow + name: + type: string + description: Name of the workflow + critical: + type: boolean + description: >- + Critical templates will always be delivered to the end user and should be hidden from the subscriber preferences screen + triggers: + description: Triggers are the events that will trigger the workflow. + type: array + items: + type: string + required: + - _id + - name + - critical + - triggers + PreferenceChannels: + type: object + properties: + email: + type: boolean + sms: + type: boolean + in_app: + type: boolean + chat: + type: boolean + push: + type: boolean + Preference: + type: object + properties: + enabled: + type: boolean + description: >- + Sets if the workflow is fully enabled for all channels or not for the subscriber. + channels: + description: >- + Subscriber preferences for the different channels regarding this workflow + allOf: + - $ref: '#/components/schemas/PreferenceChannels' + required: + - enabled + - channels + UpdateSubscriberPreferenceResponseDto: + type: object + properties: + template: + description: The workflow information and if it is critical or not + allOf: + - $ref: '#/components/schemas/TemplateResponse' + preference: + description: The preferences of the subscriber regarding the related workflow + allOf: + - $ref: '#/components/schemas/Preference' + required: + - template + - preference + GetSubscriberPreferencesResponseDto: + type: object + properties: + template: + description: The workflow information and if it is critical or not + allOf: + - $ref: '#/components/schemas/TemplateResponse' + preference: + description: The preferences of the subscriber regarding the related workflow + allOf: + - $ref: '#/components/schemas/Preference' + required: + - preference + ChannelPreference: + type: object + properties: + type: + type: string + enum: + - in_app + - email + - sms + - chat + - push + description: The type of channel that is enabled or not + enabled: + type: boolean + description: If channel is enabled or not + required: + - type + - enabled + UpdateSubscriberPreferenceRequestDto: + type: object + properties: + channel: + description: >- + The subscriber preferences for every ChannelTypeEnum for the workflow assigned. + allOf: + - $ref: '#/components/schemas/ChannelPreference' + enabled: + type: boolean + description: >- + Sets if the workflow is fully enabled for all channels or not for the subscriber. + UpdateSubscriberGlobalPreferencesRequestDto: + type: object + properties: + enabled: + type: boolean + description: Enable or disable the subscriber global preferences. + preferences: + description: The subscriber global preferences for every ChannelTypeEnum. + type: array + items: + $ref: '#/components/schemas/ChannelPreference' + FeedResponseDto: + type: object + properties: + totalCount: + type: number + hasMore: + type: boolean + data: + type: array + items: + type: string + pageSize: + type: number + page: + type: number + required: + - hasMore + - data + - pageSize + - page + UnseenCountResponse: + type: object + properties: + count: + type: number + required: + - count + MessageMarkAsRequestDto: + type: object + properties: + messageId: + oneOf: + - type: string + - type: array + items: + type: string + markAs: + enum: + - read + - seen + - unread + - unseen + type: string + required: + - messageId + - markAs + MessageEntity: + type: object + properties: {} + MarkAllMessageAsRequestDto: + type: object + properties: + feedIdentifier: + oneOf: + - type: string + - type: array + items: + type: string + description: Optional feed identifier or array of feed identifiers + markAs: + enum: + - read + - seen + - unread + - unseen + type: string + description: Mark all subscriber messages as read, unread, seen or unseen + required: + - markAs + EmailBlockStyles: + type: object + properties: + textAlign: + type: string + enum: + - center + - left + - right + required: + - textAlign + EmailBlock: + type: object + properties: + type: + enum: + - button + - text + type: string + content: + type: string + url: + type: string + styles: + $ref: '#/components/schemas/EmailBlockStyles' + required: + - type + - content + MessageCTAData: + type: object + properties: + url: + type: string + MessageButton: + type: object + properties: + type: + type: string + enum: + - primary + - secondary + content: + type: string + resultContent: + type: string + required: + - type + - content + MessageActionResult: + type: object + properties: + payload: + type: object + type: + type: string + enum: + - primary + - secondary + MessageAction: + type: object + properties: + status: + type: string + enum: + - pending + - done + buttons: + type: array + items: + $ref: '#/components/schemas/MessageButton' + result: + $ref: '#/components/schemas/MessageActionResult' + MessageCTA: + type: object + properties: + type: + type: string + enum: + - redirect + data: + $ref: '#/components/schemas/MessageCTAData' + action: + $ref: '#/components/schemas/MessageAction' + required: + - data + NotificationGroup: + type: object + properties: + _id: + type: string + name: + type: string + _environmentId: + type: string + _organizationId: + type: string + _parentId: + type: string + required: + - name + - _environmentId + - _organizationId + DigestRegularMetadata: + type: object + properties: + amount: + type: number + unit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + digestKey: + type: string + type: + type: string + enum: + - regular + - backoff + backoff: + type: boolean + backoffAmount: + type: number + backoffUnit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + updateMode: + type: boolean + required: + - type + TimedConfig: + type: object + properties: + atTime: + type: string + weekDays: + type: array + items: + type: string + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + monthDays: + type: array + items: + type: string + ordinal: + type: string + enum: + - '1' + - '2' + - '3' + - '4' + - '5' + - last + ordinalValue: + type: string + enum: + - day + - weekday + - weekend + - sunday + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + monthlyType: + type: string + enum: + - each + - 'on' + DigestTimedMetadata: + type: object + properties: + amount: + type: number + unit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + digestKey: + type: string + type: + type: string + enum: + - timed + timed: + $ref: '#/components/schemas/TimedConfig' + required: + - type + DelayRegularMetadata: + type: object + properties: + amount: + type: number + unit: + type: string + enum: + - seconds + - minutes + - hours + - days + - weeks + - months + type: + type: string + enum: + - regular + required: + - type + DelayScheduledMetadata: + type: object + properties: + type: + type: string + enum: + - scheduled + delayPath: + type: string + required: + - type + - delayPath + MessageTemplate: + type: object + properties: {} + NotificationStepVariant: + type: object + properties: + _id: + type: string + uuid: + type: string + name: + type: string + _templateId: + type: string + active: + type: boolean + shouldStopOnFail: + type: boolean + template: + $ref: '#/components/schemas/MessageTemplate' + filters: + type: array + items: + $ref: '#/components/schemas/StepFilter' + _parentId: + type: object + metadata: + oneOf: + - $ref: '#/components/schemas/DigestRegularMetadata' + - $ref: '#/components/schemas/DigestTimedMetadata' + - $ref: '#/components/schemas/DelayRegularMetadata' + - $ref: '#/components/schemas/DelayScheduledMetadata' + replyCallback: + type: object + NotificationStep: + type: object + properties: + _id: + type: string + uuid: + type: string + name: + type: string + _templateId: + type: string + active: + type: boolean + shouldStopOnFail: + type: boolean + template: + $ref: '#/components/schemas/MessageTemplate' + filters: + type: array + items: + $ref: '#/components/schemas/StepFilter' + _parentId: + type: object + metadata: + oneOf: + - $ref: '#/components/schemas/DigestRegularMetadata' + - $ref: '#/components/schemas/DigestTimedMetadata' + - $ref: '#/components/schemas/DelayRegularMetadata' + - $ref: '#/components/schemas/DelayScheduledMetadata' + replyCallback: + type: object + variants: + $ref: '#/components/schemas/NotificationStepVariant' + NotificationTriggerVariable: + type: object + properties: + name: + type: string + required: + - name + NotificationTrigger: + type: object + properties: + type: + type: string + enum: + - event + identifier: + type: string + variables: + type: array + items: + $ref: '#/components/schemas/NotificationTriggerVariable' + subscriberVariables: + type: array + items: + $ref: '#/components/schemas/NotificationTriggerVariable' + required: + - type + - identifier + - variables + WorkflowResponse: + type: object + properties: + _id: + type: string + name: + type: string + description: + type: string + active: + type: boolean + draft: + type: boolean + preferenceSettings: + $ref: '#/components/schemas/PreferenceChannels' + critical: + type: boolean + tags: + type: array + items: + type: string + steps: + type: array + items: + $ref: '#/components/schemas/NotificationStep' + _organizationId: + type: string + _creatorId: + type: string + _environmentId: + type: string + triggers: + type: array + items: + $ref: '#/components/schemas/NotificationTrigger' + _notificationGroupId: + type: string + _parentId: + type: string + deleted: + type: boolean + deletedAt: + type: string + deletedBy: + type: string + notificationGroup: + $ref: '#/components/schemas/NotificationGroup' + data: + type: object + workflowIntegrationStatus: + type: object + required: + - name + - description + - active + - draft + - preferenceSettings + - critical + - tags + - steps + - _organizationId + - _creatorId + - _environmentId + - triggers + - _notificationGroupId + - deleted + - deletedAt + - deletedBy + MessageResponseDto: + type: object + properties: + _id: + type: string + _templateId: + type: string + _environmentId: + type: string + _messageTemplateId: + type: string + _organizationId: + type: string + _notificationId: + type: string + _subscriberId: + type: string + subscriber: + $ref: '#/components/schemas/SubscriberResponseDto' + template: + $ref: '#/components/schemas/WorkflowResponse' + templateIdentifier: + type: string + createdAt: + type: string + lastSeenDate: + type: string + lastReadDate: + type: string + content: + oneOf: + - $ref: '#/components/schemas/EmailBlock' + - type: string + transactionId: + type: string + subject: + type: string + channel: + enum: + - in_app + - email + - sms + - chat + - push + type: string + read: + type: boolean + seen: + type: boolean + email: + type: string + phone: + type: string + directWebhookUrl: + type: string + providerId: + type: string + deviceTokens: + type: array + items: + type: string + title: + type: string + cta: + $ref: '#/components/schemas/MessageCTA' + _feedId: + type: object + nullable: true + status: + type: string + enum: + - sent + - error + - warning + errorId: + type: string + errorText: + type: string + payload: + type: object + description: The payload that was used to send the notification trigger + overrides: + type: object + description: Provider specific overrides used when triggering the notification + required: + - _templateId + - _environmentId + - _messageTemplateId + - _organizationId + - _notificationId + - _subscriberId + - createdAt + - content + - transactionId + - channel + - read + - seen + - cta + - status + - errorId + - errorText + - payload + - overrides + MarkMessageActionAsSeenDto: + type: object + properties: + status: + enum: + - pending + - done + type: string + description: Message action status + payload: + type: object + description: Message action payload + required: + - status + DeleteMessageResponseDto: + type: object + properties: + acknowledged: + type: boolean + description: A boolean stating the success of the action + status: + type: string + description: The status enum for the performed action + enum: + - deleted + required: + - acknowledged + - status + CreateTopicResponseDto: + type: object + properties: + _id: + type: string + description: The unique identifier for the Topic created. + key: + type: string + description: >- + User defined custom key and provided by the user that will be an unique identifier for the Topic created. + required: + - key + CreateTopicRequestDto: + type: object + properties: + key: + type: string + description: >- + User defined custom key and provided by the user that will be an unique identifier for the Topic created. + name: + type: string + description: >- + User defined custom name and provided by the user that will name the Topic created. + required: + - key + - name + AddSubscribersRequestDto: + type: object + properties: + subscribers: + description: List of subscriber identifiers that will be associated to the topic + type: array + items: + type: string + required: + - subscribers + TopicSubscriberDto: + type: object + properties: + _organizationId: + type: string + _environmentId: + type: string + _subscriberId: + type: string + _topicId: + type: string + topicKey: + type: string + externalSubscriberId: + type: string + required: + - _organizationId + - _environmentId + - _subscriberId + - _topicId + - topicKey + - externalSubscriberId + RemoveSubscribersRequestDto: + type: object + properties: + subscribers: + description: List of subscriber identifiers that will be removed to the topic + type: array + items: + type: string + required: + - subscribers + TopicDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _environmentId: + type: string + key: + type: string + name: + type: string + subscribers: + type: array + items: + type: string + required: + - _organizationId + - _environmentId + - key + - name + - subscribers + FilterTopicsResponseDto: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/TopicDto' + page: + type: number + pageSize: + type: number + totalCount: + type: number + required: + - data + - page + - pageSize + - totalCount + GetTopicResponseDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _environmentId: + type: string + key: + type: string + name: + type: string + subscribers: + type: array + items: + type: string + required: + - _organizationId + - _environmentId + - key + - name + - subscribers + RenameTopicResponseDto: + type: object + properties: + _id: + type: string + _organizationId: + type: string + _environmentId: + type: string + key: + type: string + name: + type: string + subscribers: + type: array + items: + type: string + required: + - _organizationId + - _environmentId + - key + - name + - subscribers + RenameTopicRequestDto: + type: object + properties: + name: + type: string + description: >- + User defined custom name and provided by the user to rename the topic. + required: + - name + GeneratePreviewResponseDto: + type: object + properties: {} + headers: + Content-Type: + required: true + description: The MIME type of the response body. + schema: + type: string + example: application/json + RateLimit-Limit: + required: false + description: >- + The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled. + schema: + type: string + example: '100' + RateLimit-Remaining: + required: false + description: The number of requests remaining until the next window. + schema: + type: string + example: '93' + RateLimit-Reset: + required: false + description: >- + The remaining seconds until a request of the same cost will be refreshed. + schema: + type: string + example: '8' + RateLimit-Policy: + required: false + description: The rate limit policy that was used to evaluate the request. + schema: + type: string + example: >- + 100;w=1;burst=110;comment="token bucket";category="trigger";cost="single" + Retry-After: + required: false + description: >- + The number of seconds after which the client may retry the request that was previously rejected. + schema: + type: string + example: '8' + Idempotency-Key: + required: false + description: The idempotency key used to evaluate the request. + schema: + type: string + example: '8' + Idempotency-Replay: + required: false + description: Whether the request was a replay of a previous request. + schema: + type: string + example: 'true' + Link: + required: false + description: A link to the documentation. + schema: + type: string + example: https://docs.novu.co/ +externalDocs: + description: Novu Documentation + url: https://docs.novu.co +x-speakeasy-name-override: + - operationId: ^.*get.* + methodNameOverride: retrieve + - operationId: ^.*retrieve.* + methodNameOverride: retrieve + - operationId: ^.*create.* + methodNameOverride: create + - operationId: ^.*update.* + methodNameOverride: update + - operationId: ^.*list.* + methodNameOverride: list + - operationId: ^.*delete.* + methodNameOverride: delete + - operationId: ^.*remove.* + methodNameOverride: delete +x-speakeasy-retries: + strategy: backoff + backoff: + initialInterval: 500 + maxInterval: 30000 + maxElapsedTime: 3600000 + exponent: 1.5 + statusCodes: + - '408' + - '409' + - '429' + - 5XX + retryConnectionErrors: true diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index cf9171c0..4d164662 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,9 +1,9 @@ -speakeasyVersion: 1.445.2 +speakeasyVersion: 1.446.1 sources: json-development: sourceNamespace: json-development - sourceRevisionDigest: sha256:583c98bdfa85b8db8c89c540ff60bba0e87504738c862972b9a53dd8f1cb72e1 - sourceBlobDigest: sha256:9a32d337505c5b553403b49b706fc843ea54f603577cdbb1c532132b14cf8e08 + sourceRevisionDigest: sha256:c77250e635feb6b1fe84fe653d9d7ce35f58224275ff6ec53f2a7f03612152db + sourceBlobDigest: sha256:bc022fff17ca61a16d6bc4756a4a8be369dd384e1f83297043f6620e0e7b67ce tags: - latest - "1.0" @@ -11,10 +11,10 @@ targets: my-first-target: source: json-development sourceNamespace: json-development - sourceRevisionDigest: sha256:583c98bdfa85b8db8c89c540ff60bba0e87504738c862972b9a53dd8f1cb72e1 - sourceBlobDigest: sha256:9a32d337505c5b553403b49b706fc843ea54f603577cdbb1c532132b14cf8e08 + sourceRevisionDigest: sha256:c77250e635feb6b1fe84fe653d9d7ce35f58224275ff6ec53f2a7f03612152db + sourceBlobDigest: sha256:bc022fff17ca61a16d6bc4756a4a8be369dd384e1f83297043f6620e0e7b67ce codeSamplesNamespace: code-samples-typescript - codeSamplesRevisionDigest: sha256:fdc105680e168adee4774e3f3438896f5fa939814d294a84164702026ce6768d + codeSamplesRevisionDigest: sha256:b67b8d3df54fa78c47a53028b19fe74de57e58dc3e244b962d1f91a7e4f97c56 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/FUNCTIONS.md b/FUNCTIONS.md index b68714cd..c9b1a5c4 100644 --- a/FUNCTIONS.md +++ b/FUNCTIONS.md @@ -32,8 +32,6 @@ const novu = new NovuCore({ async function run() { const res = await trigger(novu, { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", diff --git a/README.md b/README.md index 7d8a8e14..032dfcc7 100644 --- a/README.md +++ b/README.md @@ -85,8 +85,6 @@ const novu = new Novu({ async function run() { const result = await novu.trigger({ name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -121,8 +119,6 @@ async function run() { events: [ { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -135,8 +131,6 @@ async function run() { }, { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -146,8 +140,6 @@ async function run() { }, { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -183,7 +175,6 @@ async function run() { const result = await novu.triggerBroadcast({ name: "", payload: {}, - overrides: {}, }); // Handle the result @@ -204,7 +195,7 @@ const novu = new Novu({ }); async function run() { - const result = await novu.cancelByTransactionId(""); + const result = await novu.cancel(""); // Handle the result console.log(result); @@ -268,7 +259,7 @@ run(); * [trigger](docs/sdks/novu/README.md#trigger) - Trigger event * [triggerBulk](docs/sdks/novu/README.md#triggerbulk) - Bulk trigger event * [triggerBroadcast](docs/sdks/novu/README.md#triggerbroadcast) - Broadcast event to all -* [cancelByTransactionId](docs/sdks/novu/README.md#cancelbytransactionid) - Cancel triggered event +* [cancel](docs/sdks/novu/README.md#cancel) - Cancel triggered event ### [subscribers](docs/sdks/subscribers/README.md) @@ -352,7 +343,7 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). Available standalone functions -- [`cancelByTransactionId`](docs/sdks/novu/README.md#cancelbytransactionid) - Cancel triggered event +- [`cancel`](docs/sdks/novu/README.md#cancel) - Cancel triggered event - [`environmentsApiKeysList`](docs/sdks/apikeys/README.md#list) - Get api keys - [`environmentsList`](docs/sdks/environments/README.md#list) - Get environments - [`environmentsRetrieve`](docs/sdks/environments/README.md#retrieve) - Get current environment @@ -479,8 +470,6 @@ async function run() { try { result = await novu.trigger({ name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -543,8 +532,6 @@ const novu = new Novu({ async function run() { const result = await novu.trigger({ name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -579,8 +566,6 @@ const novu = new Novu({ async function run() { const result = await novu.trigger({ name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -673,8 +658,6 @@ const novu = new Novu({ async function run() { const result = await novu.trigger({ name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -712,8 +695,6 @@ const novu = new Novu({ async function run() { const result = await novu.trigger({ name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -766,8 +747,6 @@ const novu = new Novu({ async function run() { const result = await novu.trigger({ name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", diff --git a/USAGE.md b/USAGE.md index 9550b3ba..a07188eb 100644 --- a/USAGE.md +++ b/USAGE.md @@ -11,8 +11,6 @@ const novu = new Novu({ async function run() { const result = await novu.trigger({ name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -47,8 +45,6 @@ async function run() { events: [ { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -61,8 +57,6 @@ async function run() { }, { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -72,8 +66,6 @@ async function run() { }, { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -109,7 +101,6 @@ async function run() { const result = await novu.triggerBroadcast({ name: "", payload: {}, - overrides: {}, }); // Handle the result @@ -130,7 +121,7 @@ const novu = new Novu({ }); async function run() { - const result = await novu.cancelByTransactionId(""); + const result = await novu.cancel(""); // Handle the result console.log(result); diff --git a/docs/sdks/novu/README.md b/docs/sdks/novu/README.md index be1d0edb..21a45ced 100644 --- a/docs/sdks/novu/README.md +++ b/docs/sdks/novu/README.md @@ -12,7 +12,7 @@ Novu Documentation * [trigger](#trigger) - Trigger event * [triggerBulk](#triggerbulk) - Bulk trigger event * [triggerBroadcast](#triggerbroadcast) - Broadcast event to all -* [cancelByTransactionId](#cancelbytransactionid) - Cancel triggered event +* [cancel](#cancel) - Cancel triggered event ## trigger @@ -34,8 +34,6 @@ const novu = new Novu({ async function run() { const result = await novu.trigger({ name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -72,8 +70,6 @@ const novu = new NovuCore({ async function run() { const res = await trigger(novu, { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -139,8 +135,6 @@ async function run() { events: [ { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -153,8 +147,6 @@ async function run() { }, { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -164,8 +156,6 @@ async function run() { }, { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -206,8 +196,6 @@ async function run() { events: [ { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -220,8 +208,6 @@ async function run() { }, { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -231,8 +217,6 @@ async function run() { }, { name: "workflow_identifier", - payload: {}, - overrides: {}, to: [ { topicKey: "", @@ -298,7 +282,6 @@ async function run() { const result = await novu.triggerBroadcast({ name: "", payload: {}, - overrides: {}, }); // Handle the result @@ -326,7 +309,6 @@ async function run() { const res = await triggerBroadcast(novu, { name: "", payload: {}, - overrides: {}, }); if (!res.ok) { @@ -361,7 +343,7 @@ run(); | --------------- | --------------- | --------------- | | errors.SDKError | 4XX, 5XX | \*/\* | -## cancelByTransactionId +## cancel Using a previously generated transactionId during the event trigger, @@ -378,7 +360,7 @@ const novu = new Novu({ }); async function run() { - const result = await novu.cancelByTransactionId(""); + const result = await novu.cancel(""); // Handle the result console.log(result); @@ -393,7 +375,7 @@ The standalone function version of this method: ```typescript import { NovuCore } from "@novu/api/core.js"; -import { cancelByTransactionId } from "@novu/api/funcs/cancelByTransactionId.js"; +import { cancel } from "@novu/api/funcs/cancel.js"; // Use `NovuCore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -402,7 +384,7 @@ const novu = new NovuCore({ }); async function run() { - const res = await cancelByTransactionId(novu, ""); + const res = await cancel(novu, ""); if (!res.ok) { throw res.error; diff --git a/jsr.json b/jsr.json index 42628871..0ad96ee3 100644 --- a/jsr.json +++ b/jsr.json @@ -2,7 +2,7 @@ { "name": "@novu/api", - "version": "0.0.1-alpha.21", + "version": "0.0.1-alpha.25", "exports": { ".": "./src/index.ts", "./models/errors": "./src/models/errors/index.ts", diff --git a/package-lock.json b/package-lock.json index 63e703a9..2be5fc72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@novu/api", - "version": "0.0.1-alpha.21", + "version": "0.0.1-alpha.25", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@novu/api", - "version": "0.0.1-alpha.21", + "version": "0.0.1-alpha.25", "devDependencies": { "@typescript-eslint/eslint-plugin": "^7.7.1", "@typescript-eslint/parser": "^7.7.1", diff --git a/package.json b/package.json index 92813998..20c80d47 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@novu/api", - "version": "0.0.1-alpha.21", + "version": "0.0.1-alpha.25", "author": "Novu", "main": "./index.js", "sideEffects": false, diff --git a/sources/code-samples.yaml b/sources/code-samples.yaml index 19a05111..24ca5731 100644 --- a/sources/code-samples.yaml +++ b/sources/code-samples.yaml @@ -26,25 +26,25 @@ actions: "x-codeSamples": - "lang": "typescript" "label": "EventsController_trigger" - "source": "import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await novu.trigger({\n name: \"workflow_identifier\",\n payload: {},\n overrides: {},\n to: [\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n ],\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" + "source": "import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await novu.trigger({\n name: \"workflow_identifier\",\n to: [\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n ],\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" - target: $["paths"]["/v1/events/trigger/broadcast"]["post"] update: "x-codeSamples": - "lang": "typescript" "label": "EventsController_broadcastEventToAll" - "source": "import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await novu.triggerBroadcast({\n name: \"\",\n payload: {},\n overrides: {},\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" + "source": "import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await novu.triggerBroadcast({\n name: \"\",\n payload: {},\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" - target: $["paths"]["/v1/events/trigger/bulk"]["post"] update: "x-codeSamples": - "lang": "typescript" "label": "EventsController_triggerBulk" - "source": "import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await novu.triggerBulk({\n events: [\n {\n name: \"workflow_identifier\",\n payload: {},\n overrides: {},\n to: [\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n {\n subscriberId: \"\",\n },\n ],\n },\n {\n name: \"workflow_identifier\",\n payload: {},\n overrides: {},\n to: [\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n ],\n },\n {\n name: \"workflow_identifier\",\n payload: {},\n overrides: {},\n to: [\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n ],\n },\n ],\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" + "source": "import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await novu.triggerBulk({\n events: [\n {\n name: \"workflow_identifier\",\n to: [\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n {\n subscriberId: \"\",\n },\n ],\n },\n {\n name: \"workflow_identifier\",\n to: [\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n ],\n },\n {\n name: \"workflow_identifier\",\n to: [\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n {\n topicKey: \"\",\n type: \"Topic\",\n },\n ],\n },\n ],\n });\n\n // Handle the result\n console.log(result);\n}\n\nrun();" - target: $["paths"]["/v1/events/trigger/{transactionId}"]["delete"] update: "x-codeSamples": - "lang": "typescript" "label": "EventsController_cancel" - "source": "import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await novu.cancelByTransactionId(\"\");\n\n // Handle the result\n console.log(result);\n}\n\nrun();" + "source": "import { Novu } from \"@novu/api\";\n\nconst novu = new Novu({\n apiKey: \"\",\n});\n\nasync function run() {\n const result = await novu.cancel(\"\");\n\n // Handle the result\n console.log(result);\n}\n\nrun();" - target: $["paths"]["/v1/execution-details"]["get"] update: "x-codeSamples": diff --git a/sources/json-development.json b/sources/json-development.json index f9f90652..59bce180 100644 --- a/sources/json-development.json +++ b/sources/json-development.json @@ -1234,7 +1234,7 @@ "x-speakeasy-usage-example": { "title": "Cancel Triggered Event" }, - "x-speakeasy-name-override": "cancelByTransactionId", + "x-speakeasy-name-override": "cancel", "summary": "Cancel triggered event", "description": "\n Using a previously generated transactionId during the event trigger,\n will cancel any active or pending workflows. This is useful to cancel active digests, delays etc...\n ", "parameters": [ diff --git a/sources/openapi.sdk.json b/sources/openapi.sdk.json index 02e7f1c9..f0ae9291 100644 --- a/sources/openapi.sdk.json +++ b/sources/openapi.sdk.json @@ -1,24 +1,14 @@ { "openapi": "3.0.0", "paths": { - "/v1/organizations": { - "post": { - "operationId": "OrganizationController_createOrganization", - "summary": "Create an organization", + "/v1/environments/me": { + "get": { + "operationId": "EnvironmentsControllerV1_getCurrentEnvironment", + "summary": "Get current environment", "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOrganizationDto" - } - } - } - }, "responses": { - "201": { - "description": "Created", + "200": { + "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -45,7 +35,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrganizationResponseDto" + "$ref": "#/components/schemas/EnvironmentResponseDto" } } } @@ -166,17 +156,19 @@ } }, "tags": [ - "Organizations" + "Environments" ], "security": [ { "api-key": [] } ] - }, + } + }, + "/v1/environments": { "get": { - "operationId": "OrganizationController_listOrganizations", - "summary": "Fetch all organizations", + "operationId": "EnvironmentsControllerV1_listMyEnvironments", + "summary": "Get environments", "parameters": [], "responses": { "200": { @@ -209,7 +201,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/OrganizationResponseDto" + "$ref": "#/components/schemas/EnvironmentResponseDto" } } } @@ -331,29 +323,21 @@ } }, "tags": [ - "Organizations" + "Environments" ], "security": [ { "api-key": [] } ] - }, - "patch": { - "operationId": "OrganizationController_rename", - "x-speakeasy-name-override": "rename", - "summary": "Rename organization name", + } + }, + "/v1/environments/api-keys": { + "get": { + "operationId": "EnvironmentsControllerV1_listOrganizationApiKeys", + "x-speakeasy-group": "Environments.ApiKeys", + "summary": "Get api keys", "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RenameOrganizationDto" - } - } - } - }, "responses": { "200": { "description": "Ok", @@ -383,7 +367,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RenameOrganizationDto" + "type": "array", + "items": { + "$ref": "#/components/schemas/ApiKey" + } } } } @@ -504,7 +491,7 @@ } }, "tags": [ - "Organizations" + "Environments" ], "security": [ { @@ -513,11 +500,28 @@ ] } }, - "/v1/organizations/me": { + "/v1/execution-details": { "get": { - "operationId": "OrganizationController_getSelfOrganizationData", - "summary": "Fetch current organization details", - "parameters": [], + "operationId": "ExecutionDetailsController_getExecutionDetailsForNotification", + "summary": "Get execution details", + "parameters": [ + { + "name": "notificationId", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "subscriberId", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "Ok", @@ -547,7 +551,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrganizationResponseDto" + "type": "array", + "items": { + "$ref": "#/components/schemas/ExecutionDetailsResponseDto" + } } } } @@ -668,7 +675,7 @@ } }, "tags": [ - "Organizations" + "Execution Details" ], "security": [ { @@ -677,24 +684,30 @@ ] } }, - "/v1/organizations/members/{memberId}": { - "delete": { - "operationId": "OrganizationController_remove", - "x-speakeasy-group": "Organizations.Members", - "summary": "Remove a member from organization using memberId", - "parameters": [ - { - "name": "memberId", - "required": true, - "in": "path", - "schema": { - "type": "string" + "/v1/events/trigger": { + "post": { + "operationId": "EventsController_trigger", + "x-speakeasy-group": "", + "x-speakeasy-usage-example": { + "title": "Trigger Notification Event" + }, + "x-speakeasy-name-override": "trigger", + "summary": "Trigger event", + "description": "\n Trigger event is the main (and only) way to send notifications to subscribers. \n The trigger identifier is used to match the particular workflow associated with it. \n Additional information can be passed according the body interface below.\n ", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TriggerEventRequestDto" + } } } - ], + }, "responses": { - "200": { - "description": "Ok", + "201": { + "description": "Created", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -721,7 +734,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemberResponseDto" + "$ref": "#/components/schemas/TriggerEventResponseDto" } } } @@ -842,7 +855,7 @@ } }, "tags": [ - "Organizations" + "Events" ], "security": [ { @@ -851,15 +864,30 @@ ] } }, - "/v1/organizations/members": { - "get": { - "operationId": "OrganizationController_listOrganizationMembers", - "x-speakeasy-group": "Organizations.Members", - "summary": "Fetch all members of current organizations", + "/v1/events/trigger/bulk": { + "post": { + "operationId": "EventsController_triggerBulk", + "x-speakeasy-group": "", + "x-speakeasy-usage-example": { + "title": "Trigger Notification Events in Bulk" + }, + "x-speakeasy-name-override": "triggerBulk", + "summary": "Bulk trigger event", + "description": "\n Using this endpoint you can trigger multiple events at once, to avoid multiple calls to the API.\n The bulk API is limited to 100 events per request.\n ", "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkTriggerEventDto" + } + } + } + }, "responses": { - "200": { - "description": "Ok", + "201": { + "description": "Created", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -888,7 +916,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/MemberResponseDto" + "$ref": "#/components/schemas/TriggerEventResponseDto" } } } @@ -1010,7 +1038,7 @@ } }, "tags": [ - "Organizations" + "Events" ], "security": [ { @@ -1019,18 +1047,23 @@ ] } }, - "/v1/organizations/branding": { - "put": { - "operationId": "OrganizationController_updateBrandingDetails", - "x-speakeasy-group": "Organizations.Branding", - "summary": "Update organization branding details", + "/v1/events/trigger/broadcast": { + "post": { + "operationId": "EventsController_broadcastEventToAll", + "x-speakeasy-group": "", + "x-speakeasy-usage-example": { + "title": "Broadcast Event to All" + }, + "x-speakeasy-name-override": "triggerBroadcast", + "summary": "Broadcast event to all", + "description": "Trigger a broadcast event to all existing subscribers, could be used to send announcements, etc.\n In the future could be used to trigger events to a subset of subscribers based on defined filters.", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateBrandingDetailsDto" + "$ref": "#/components/schemas/TriggerEventToAllRequestDto" } } } @@ -1064,7 +1097,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrganizationBrandingResponseDto" + "$ref": "#/components/schemas/TriggerEventResponseDto" } } } @@ -1185,7 +1218,7 @@ } }, "tags": [ - "Organizations" + "Events" ], "security": [ { @@ -1194,14 +1227,28 @@ ] } }, - "/v1/environments/me": { - "get": { - "operationId": "EnvironmentsController_getCurrentEnvironment", - "summary": "Get current environment", - "parameters": [], + "/v1/events/trigger/{transactionId}": { + "delete": { + "operationId": "EventsController_cancel", + "x-speakeasy-group": "", + "x-speakeasy-usage-example": { + "title": "Cancel Triggered Event" + }, + "x-speakeasy-name-override": "cancel", + "summary": "Cancel triggered event", + "description": "\n Using a previously generated transactionId during the event trigger,\n will cancel any active or pending workflows. This is useful to cancel active digests, delays etc...\n ", + "parameters": [ + { + "name": "transactionId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -1225,10 +1272,11 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EnvironmentResponseDto" + "$ref": "#/components/schemas/DataBooleanDto" } } } @@ -1349,7 +1397,7 @@ } }, "tags": [ - "Environments" + "Events" ], "security": [ { @@ -1358,62 +1406,137 @@ ] } }, - "/v1/environments": { + "/v1/notifications": { "get": { - "operationId": "EnvironmentsController_listMyEnvironments", - "summary": "Get environments", - "parameters": [], - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" + "operationId": "NotificationsController_listNotifications", + "summary": "Get notifications", + "parameters": [ + { + "name": "channels", + "required": true, + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "in_app", + "email", + "sms", + "chat", + "push" + ] } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EnvironmentResponseDto" - } - } + } + }, + { + "name": "templates", + "required": true, + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" } } }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" + { + "name": "emails", + "required": true, + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "search", + "required": true, + "in": "query", + "deprecated": true, + "schema": { + "type": "string" + } + }, + { + "name": "subscriberIds", + "required": true, + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "default": 0, + "type": "number" + } + }, + { + "name": "transactionId", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "headers": { + "Content-Type": { + "$ref": "#/components/headers/Content-Type" + }, + "RateLimit-Limit": { + "$ref": "#/components/headers/RateLimit-Limit" + }, + "RateLimit-Remaining": { + "$ref": "#/components/headers/RateLimit-Remaining" + }, + "RateLimit-Reset": { + "$ref": "#/components/headers/RateLimit-Reset" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Idempotency-Key": { + "$ref": "#/components/headers/Idempotency-Key" + }, + "Idempotency-Replay": { + "$ref": "#/components/headers/Idempotency-Replay" + } + }, + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ActivitiesResponseDto" + } + } + } + }, + "409": { + "description": "The request could not be completed due to a conflict with the current state of the target resource.", + "headers": { + "Content-Type": { + "$ref": "#/components/headers/Content-Type" + }, + "RateLimit-Limit": { + "$ref": "#/components/headers/RateLimit-Limit" + }, + "RateLimit-Remaining": { + "$ref": "#/components/headers/RateLimit-Remaining" + }, + "RateLimit-Reset": { + "$ref": "#/components/headers/RateLimit-Reset" }, "RateLimit-Policy": { "$ref": "#/components/headers/RateLimit-Policy" @@ -1516,7 +1639,7 @@ } }, "tags": [ - "Environments" + "Notifications" ], "security": [ { @@ -1525,11 +1648,11 @@ ] } }, - "/v1/environments/api-keys": { + "/v1/notifications/stats": { "get": { - "operationId": "EnvironmentsController_listOrganizationApiKeys", - "x-speakeasy-group": "Environments.ApiKeys", - "summary": "Get api keys", + "operationId": "NotificationsController_getActivityStats", + "x-speakeasy-group": "Notifications.Stats", + "summary": "Get notification statistics", "parameters": [], "responses": { "200": { @@ -1560,10 +1683,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ApiKey" - } + "$ref": "#/components/schemas/ActivityStatsResponseDto" } } } @@ -1684,7 +1804,7 @@ } }, "tags": [ - "Environments" + "Notifications" ], "security": [ { @@ -1693,16 +1813,25 @@ ] } }, - "/v1/environments/api-keys/regenerate": { - "post": { - "operationId": "EnvironmentsController_regenerateOrganizationApiKeys", - "x-speakeasy-name-override": "regenerate", - "x-speakeasy-group": "Environments.ApiKeys", - "summary": "Regenerate api keys", - "parameters": [], + "/v1/notifications/graph/stats": { + "get": { + "operationId": "NotificationsController_getActivityGraphStats", + "x-speakeasy-name-override": "graph", + "x-speakeasy-group": "Notifications.Stats", + "summary": "Get notification graph statistics", + "parameters": [ + { + "name": "days", + "required": false, + "in": "query", + "schema": { + "type": "number" + } + } + ], "responses": { - "201": { - "description": "Created", + "200": { + "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -1731,7 +1860,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/ApiKey" + "$ref": "#/components/schemas/ActivityGraphStatesResponse" } } } @@ -1853,7 +1982,7 @@ } }, "tags": [ - "Environments" + "Notifications" ], "security": [ { @@ -1862,23 +1991,15 @@ ] } }, - "/v1/execution-details": { + "/v1/notifications/{notificationId}": { "get": { - "operationId": "ExecutionDetailsController_getExecutionDetailsForNotification", - "summary": "Get execution details", + "operationId": "NotificationsController_getNotification", + "summary": "Get notification", "parameters": [ { "name": "notificationId", "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "subscriberId", - "required": true, - "in": "query", + "in": "path", "schema": { "type": "string" } @@ -1913,10 +2034,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ExecutionDetailsResponseDto" - } + "$ref": "#/components/schemas/ActivityNotificationResponseDto" } } } @@ -2037,7 +2155,7 @@ } }, "tags": [ - "Execution Details" + "Notifications" ], "security": [ { @@ -2046,43 +2164,25 @@ ] } }, - "/v1/workflows": { - "get": { - "operationId": "WorkflowController_listWorkflows", - "summary": "Get workflows", - "description": "Workflows were previously named notification templates", - "parameters": [ - { - "name": "page", - "required": false, - "in": "query", - "schema": { - "type": "number" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "schema": { - "maximum": 100, - "default": 10, - "type": "number" - } - }, - { - "name": "query", - "required": false, - "in": "query", - "description": "A query string to filter the results. It allows filtering based on either the name or trigger identifier of the workflow items.", - "schema": { - "type": "string" + "/v1/notification-groups": { + "post": { + "operationId": "NotificationGroupsController_createNotificationGroup", + "summary": "Create workflow group", + "description": "workflow group was previously named notification group", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateNotificationGroupRequestDto" + } } } - ], + }, "responses": { - "200": { - "description": "Ok", + "201": { + "description": "Created", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -2109,7 +2209,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowsResponseDto" + "$ref": "#/components/schemas/NotificationGroupResponseDto" } } } @@ -2230,7 +2330,7 @@ } }, "tags": [ - "Workflows" + "Workflow groups" ], "security": [ { @@ -2238,24 +2338,14 @@ } ] }, - "post": { - "operationId": "WorkflowController_create", - "summary": "Create workflow", - "description": "Workflow was previously named notification template", + "get": { + "operationId": "NotificationGroupsController_listNotificationGroups", + "summary": "Get workflow groups", + "description": "workflow group was previously named notification group", "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateWorkflowRequestDto" - } - } - } - }, "responses": { - "201": { - "description": "Created", + "200": { + "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -2282,7 +2372,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationGroupResponseDto" + } } } } @@ -2403,7 +2496,7 @@ } }, "tags": [ - "Workflows" + "Workflow groups" ], "security": [ { @@ -2412,14 +2505,14 @@ ] } }, - "/v1/workflows/{workflowId}": { - "put": { - "operationId": "WorkflowController_updateWorkflowById", - "summary": "Update workflow", - "description": "Workflow was previously named notification template", + "/v1/notification-groups/{id}": { + "get": { + "operationId": "NotificationGroupsController_getNotificationGroup", + "summary": "Get workflow group", + "description": "workflow group was previously named notification group", "parameters": [ { - "name": "workflowId", + "name": "id", "required": true, "in": "path", "schema": { @@ -2427,16 +2520,6 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateWorkflowRequestDto" - } - } - } - }, "responses": { "200": { "description": "Ok", @@ -2466,7 +2549,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowResponse" + "$ref": "#/components/schemas/NotificationGroupResponseDto" } } } @@ -2587,7 +2670,7 @@ } }, "tags": [ - "Workflows" + "Workflow groups" ], "security": [ { @@ -2595,13 +2678,13 @@ } ] }, - "delete": { - "operationId": "WorkflowController_deleteWorkflowById", - "summary": "Delete workflow", - "description": "Workflow was previously named notification template", + "patch": { + "operationId": "NotificationGroupsController_updateNotificationGroup", + "summary": "Update workflow group", + "description": "workflow group was previously named notification group", "parameters": [ { - "name": "workflowId", + "name": "id", "required": true, "in": "path", "schema": { @@ -2609,8 +2692,19 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateNotificationGroupRequestDto" + } + } + } + }, "responses": { "200": { + "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -2634,11 +2728,10 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, - "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DataBooleanDto" + "$ref": "#/components/schemas/NotificationGroupResponseDto" } } } @@ -2759,7 +2852,7 @@ } }, "tags": [ - "Workflows" + "Workflow groups" ], "security": [ { @@ -2767,13 +2860,13 @@ } ] }, - "get": { - "operationId": "WorkflowController_getWorkflowById", - "summary": "Get workflow", - "description": "Workflow was previously named notification template", + "delete": { + "operationId": "NotificationGroupsController_deleteNotificationGroup", + "summary": "Delete workflow group", + "description": "workflow group was previously named notification group", "parameters": [ { - "name": "workflowId", + "name": "id", "required": true, "in": "path", "schema": { @@ -2810,7 +2903,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowResponse" + "$ref": "#/components/schemas/DeleteNotificationGroupResponseDto" } } } @@ -2931,7 +3024,7 @@ } }, "tags": [ - "Workflows" + "Workflow groups" ], "security": [ { @@ -2940,16 +3033,15 @@ ] } }, - "/v1/workflows/variables": { + "/v1/integrations": { "get": { - "operationId": "WorkflowController_getWorkflowVariables", - "x-speakeasy-group": "Workflows.Variables", - "summary": "Get available variables", - "description": "Get the variables that can be used in the workflow", + "operationId": "IntegrationsController_listIntegrations", + "summary": "Get integrations", + "description": "Return all the integrations the user has created for that organization. Review v.0.17.0 changelog for a breaking change", "parameters": [], "responses": { "200": { - "description": "Ok", + "description": "The list of integrations belonging to the organization that are successfully returned.", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -2976,7 +3068,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/VariablesResponseDto" + "type": "array", + "items": { + "$ref": "#/components/schemas/IntegrationResponseDto" + } } } } @@ -3097,44 +3192,32 @@ } }, "tags": [ - "Workflows" + "Integrations" ], "security": [ { "api-key": [] } ] - } - }, - "/v1/workflows/{workflowId}/status": { - "put": { - "operationId": "WorkflowController_updateActiveStatus", - "x-speakeasy-group": "Workflows.Status", - "summary": "Update workflow status", - "description": "Workflow was previously named notification template", - "parameters": [ - { - "name": "workflowId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], + }, + "post": { + "operationId": "IntegrationsController_createIntegration", + "summary": "Create integration", + "description": "Create an integration for the current environment the user is based on the API key provided", + "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChangeWorkflowStatusRequestDto" + "$ref": "#/components/schemas/CreateIntegrationRequestDto" } } } }, "responses": { - "200": { - "description": "Ok", + "201": { + "description": "Created", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -3161,7 +3244,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WorkflowResponse" + "$ref": "#/components/schemas/IntegrationResponseDto" } } } @@ -3282,7 +3365,7 @@ } }, "tags": [ - "Workflows" + "Integrations" ], "security": [ { @@ -3291,30 +3374,16 @@ ] } }, - "/v1/events/trigger": { - "post": { - "operationId": "EventsController_trigger", - "x-speakeasy-group": "", - "x-speakeasy-usage-example": { - "title": "Trigger Notification Event" - }, - "x-speakeasy-name-override": "trigger", - "summary": "Trigger event", - "description": "\n Trigger event is the main (and only) way to send notifications to subscribers. \n The trigger identifier is used to match the particular workflow associated with it. \n Additional information can be passed according the body interface below.\n ", + "/v1/integrations/active": { + "get": { + "operationId": "IntegrationsController_getActiveIntegrations", + "x-speakeasy-name-override": "listActive", + "summary": "Get active integrations", + "description": "Return all the active integrations the user has created for that organization. Review v.0.17.0 changelog for a breaking change", "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TriggerEventRequestDto" - } - } - } - }, "responses": { - "201": { - "description": "Created", + "200": { + "description": "The list of active integrations belonging to the organization that are successfully returned.", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -3341,7 +3410,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TriggerEventResponseDto" + "type": "array", + "items": { + "$ref": "#/components/schemas/IntegrationResponseDto" + } } } } @@ -3462,7 +3534,7 @@ } }, "tags": [ - "Events" + "Integrations" ], "security": [ { @@ -3471,26 +3543,25 @@ ] } }, - "/v1/events/trigger/bulk": { - "post": { - "operationId": "EventsController_triggerBulk", - "x-speakeasy-name-override": "triggerBulk", - "summary": "Bulk trigger event", - "description": "\n Using this endpoint you can trigger multiple events at once, to avoid multiple calls to the API.\n The bulk API is limited to 100 events per request.\n ", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkTriggerEventDto" - } + "/v1/integrations/webhook/provider/{providerOrIntegrationId}/status": { + "get": { + "operationId": "IntegrationsController_getWebhookSupportStatus", + "x-speakeasy-group": "Integrations.Webhooks", + "summary": "Get webhook support status for provider", + "description": "Return the status of the webhook for this provider, if it is supported or if it is not based on a boolean value", + "parameters": [ + { + "name": "providerOrIntegrationId", + "required": true, + "in": "path", + "schema": { + "type": "string" } } - }, + ], "responses": { - "201": { - "description": "Created", + "200": { + "description": "The status of the webhook for the provider requested", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -3517,10 +3588,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TriggerEventResponseDto" - } + "type": "boolean" } } } @@ -3641,7 +3709,7 @@ } }, "tags": [ - "Events" + "Integrations" ], "security": [ { @@ -3650,19 +3718,26 @@ ] } }, - "/v1/events/trigger/broadcast": { - "post": { - "operationId": "EventsController_broadcastEventToAll", - "x-speakeasy-name-override": "triggerBroadcast", - "summary": "Broadcast event to all", - "description": "Trigger a broadcast event to all existing subscribers, could be used to send announcements, etc.\n In the future could be used to trigger events to a subset of subscribers based on defined filters.", - "parameters": [], + "/v1/integrations/{integrationId}": { + "put": { + "operationId": "IntegrationsController_updateIntegrationById", + "summary": "Update integration", + "parameters": [ + { + "name": "integrationId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TriggerEventToAllRequestDto" + "$ref": "#/components/schemas/UpdateIntegrationRequestDto" } } } @@ -3696,18 +3771,34 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TriggerEventResponseDto" + "$ref": "#/components/schemas/IntegrationResponseDto" } } } }, - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TriggerEventResponseDto" - } + "404": { + "description": "The integration with the integrationId provided does not exist in the database.", + "headers": { + "Content-Type": { + "$ref": "#/components/headers/Content-Type" + }, + "RateLimit-Limit": { + "$ref": "#/components/headers/RateLimit-Limit" + }, + "RateLimit-Remaining": { + "$ref": "#/components/headers/RateLimit-Remaining" + }, + "RateLimit-Reset": { + "$ref": "#/components/headers/RateLimit-Reset" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Idempotency-Key": { + "$ref": "#/components/headers/Idempotency-Key" + }, + "Idempotency-Replay": { + "$ref": "#/components/headers/Idempotency-Replay" } } }, @@ -3827,24 +3918,20 @@ } }, "tags": [ - "Events" + "Integrations" ], "security": [ { "api-key": [] } ] - } - }, - "/v1/events/trigger/{transactionId}": { + }, "delete": { - "operationId": "EventsController_cancel", - "x-speakeasy-name-override": "cancel", - "summary": "Cancel triggered event", - "description": "\n Using a previously generated transactionId during the event trigger,\n will cancel any active or pending workflows. This is useful to cancel active digests, delays etc...\n ", + "operationId": "IntegrationsController_removeIntegration", + "summary": "Delete integration", "parameters": [ { - "name": "transactionId", + "name": "integrationId", "required": true, "in": "path", "schema": { @@ -3854,6 +3941,7 @@ ], "responses": { "200": { + "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -3877,11 +3965,13 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, - "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DataBooleanDto" + "type": "array", + "items": { + "$ref": "#/components/schemas/IntegrationResponseDto" + } } } } @@ -4002,7 +4092,7 @@ } }, "tags": [ - "Events" + "Integrations" ], "security": [ { @@ -4011,91 +4101,24 @@ ] } }, - "/v1/notifications": { - "get": { - "operationId": "NotificationsController_listNotifications", - "summary": "Get notifications", + "/v1/integrations/{integrationId}/set-primary": { + "post": { + "operationId": "IntegrationsController_setIntegrationAsPrimary", + "x-speakeasy-name-override": "setAsPrimary", + "summary": "Set integration as primary", "parameters": [ { - "name": "channels", - "required": true, - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "in_app", - "email", - "sms", - "chat", - "push" - ] - } - } - }, - { - "name": "templates", + "name": "integrationId", "required": true, - "in": "query", + "in": "path", "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "emails", - "required": true, - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "search", - "required": true, - "in": "query", - "deprecated": true, - "schema": { - "type": "string" - } - }, - { - "name": "subscriberIds", - "required": true, - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "page", - "required": false, - "in": "query", - "schema": { - "default": 0, - "type": "number" - } - }, - { - "name": "transactionId", - "required": false, - "in": "query", - "schema": { - "type": "string" + "type": "string" } } ], "responses": { "200": { + "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -4119,15 +4142,40 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, - "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ActivitiesResponseDto" + "$ref": "#/components/schemas/IntegrationResponseDto" } } } }, + "404": { + "description": "The integration with the integrationId provided does not exist in the database.", + "headers": { + "Content-Type": { + "$ref": "#/components/headers/Content-Type" + }, + "RateLimit-Limit": { + "$ref": "#/components/headers/RateLimit-Limit" + }, + "RateLimit-Remaining": { + "$ref": "#/components/headers/RateLimit-Remaining" + }, + "RateLimit-Reset": { + "$ref": "#/components/headers/RateLimit-Reset" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Idempotency-Key": { + "$ref": "#/components/headers/Idempotency-Key" + }, + "Idempotency-Replay": { + "$ref": "#/components/headers/Idempotency-Replay" + } + } + }, "409": { "description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": { @@ -4244,7 +4292,7 @@ } }, "tags": [ - "Notifications" + "Integrations" ], "security": [ { @@ -4253,15 +4301,51 @@ ] } }, - "/v1/notifications/stats": { + "/v1/subscribers": { "get": { - "operationId": "NotificationsController_getActivityStats", - "x-speakeasy-group": "Notifications.Stats", - "summary": "Get notification statistics", - "parameters": [], + "operationId": "SubscribersController_listSubscribers", + "x-speakeasy-pagination": { + "type": "offsetLimit", + "inputs": [ + { + "name": "page", + "in": "parameters", + "type": "page" + }, + { + "name": "limit", + "in": "parameters", + "type": "limit" + } + ], + "outputs": { + "results": "$.data.resultArray" + } + }, + "summary": "Get subscribers", + "description": "Returns a list of subscribers, could paginated using the `page` and `limit` query parameter", + "parameters": [ + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "schema": { + "maximum": 100, + "default": 10, + "type": "number" + } + } + ], "responses": { "200": { - "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -4285,10 +4369,25 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ActivityStatsResponseDto" + "allOf": [ + { + "$ref": "#/components/schemas/PaginatedResponseDto" + }, + { + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SubscriberResponseDto" + } + } + } + } + ] } } } @@ -4409,34 +4508,32 @@ } }, "tags": [ - "Notifications" + "Subscribers" ], "security": [ { "api-key": [] } ] - } - }, - "/v1/notifications/graph/stats": { - "get": { - "operationId": "NotificationsController_getActivityGraphStats", - "x-speakeasy-name-override": "graph", - "x-speakeasy-group": "Notifications.Stats", - "summary": "Get notification graph statistics", - "parameters": [ - { - "name": "days", - "required": false, - "in": "query", - "schema": { - "type": "number" + }, + "post": { + "operationId": "SubscribersController_createSubscriber", + "summary": "Create subscriber", + "description": "Creates a subscriber entity, in the Novu platform. The subscriber will be later used to receive notifications, and access notification feeds. Communication credentials such as email, phone number, and 3 rd party credentials i.e slack tokens could be later associated to this entity.", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSubscriberRequestDto" + } } } - ], + }, "responses": { - "200": { - "description": "Ok", + "201": { + "description": "Created", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -4463,10 +4560,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ActivityGraphStatesResponse" - } + "$ref": "#/components/schemas/SubscriberResponseDto" } } } @@ -4587,7 +4681,7 @@ } }, "tags": [ - "Notifications" + "Subscribers" ], "security": [ { @@ -4596,18 +4690,28 @@ ] } }, - "/v1/notifications/{notificationId}": { + "/v1/subscribers/{subscriberId}": { "get": { - "operationId": "NotificationsController_getNotification", - "summary": "Get notification", + "operationId": "SubscribersController_getSubscriber", + "summary": "Get subscriber", + "description": "Get subscriber by your internal id used to identify the subscriber", "parameters": [ { - "name": "notificationId", + "name": "subscriberId", "required": true, "in": "path", "schema": { "type": "string" } + }, + { + "name": "includeTopics", + "required": false, + "in": "query", + "description": "Includes the topics associated with the subscriber", + "schema": { + "type": "string" + } } ], "responses": { @@ -4639,7 +4743,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ActivityNotificationResponseDto" + "$ref": "#/components/schemas/SubscriberResponseDto" } } } @@ -4760,34 +4864,41 @@ } }, "tags": [ - "Notifications" + "Subscribers" ], "security": [ { "api-key": [] } ] - } - }, - "/v1/notification-groups": { - "post": { - "operationId": "NotificationGroupsController_createNotificationGroup", - "summary": "Create workflow group", - "description": "workflow group was previously named notification group", - "parameters": [], + }, + "put": { + "operationId": "SubscribersController_updateSubscriber", + "summary": "Update subscriber", + "description": "Used to update the subscriber entity with new information", + "parameters": [ + { + "name": "subscriberId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateNotificationGroupRequestDto" + "$ref": "#/components/schemas/UpdateSubscriberRequestDto" } } } }, "responses": { - "201": { - "description": "Created", + "200": { + "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -4814,7 +4925,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationGroupResponseDto" + "$ref": "#/components/schemas/SubscriberResponseDto" } } } @@ -4935,7 +5046,7 @@ } }, "tags": [ - "Workflow groups" + "Subscribers" ], "security": [ { @@ -4943,11 +5054,20 @@ } ] }, - "get": { - "operationId": "NotificationGroupsController_listNotificationGroups", - "summary": "Get workflow groups", - "description": "workflow group was previously named notification group", - "parameters": [], + "delete": { + "operationId": "SubscribersController_removeSubscriber", + "summary": "Delete subscriber", + "description": "Deletes a subscriber entity from the Novu platform", + "parameters": [ + { + "name": "subscriberId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "Ok", @@ -4977,10 +5097,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NotificationGroupResponseDto" - } + "$ref": "#/components/schemas/DeleteSubscriberResponseDto" } } } @@ -5101,7 +5218,7 @@ } }, "tags": [ - "Workflow groups" + "Subscribers" ], "security": [ { @@ -5110,54 +5227,26 @@ ] } }, - "/v1/notification-groups/{id}": { - "get": { - "operationId": "NotificationGroupsController_getNotificationGroup", - "summary": "Get workflow group", - "description": "workflow group was previously named notification group", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "string" + "/v1/subscribers/bulk": { + "post": { + "operationId": "SubscribersController_bulkCreateSubscribers", + "x-speakeasy-name-override": "createBulk", + "summary": "Bulk create subscribers", + "description": "\n Using this endpoint you can create multiple subscribers at once, to avoid multiple calls to the API.\n The bulk API is limited to 500 subscribers per request.\n ", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkSubscriberCreateDto" + } } } - ], + }, "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NotificationGroupResponseDto" - } - } - } + "201": { + "description": "" }, "409": { "description": "The request could not be completed due to a conflict with the current state of the target resource.", @@ -5275,21 +5364,24 @@ } }, "tags": [ - "Workflow groups" + "Subscribers" ], "security": [ { "api-key": [] } ] - }, - "patch": { - "operationId": "NotificationGroupsController_updateNotificationGroup", - "summary": "Update workflow group", - "description": "workflow group was previously named notification group", + } + }, + "/v1/subscribers/{subscriberId}/credentials": { + "put": { + "operationId": "SubscribersController_updateSubscriberChannel", + "x-speakeasy-group": "Subscribers.Credentials", + "summary": "Update subscriber credentials", + "description": "Subscriber credentials associated to the delivery methods such as slack and push tokens.", "parameters": [ { - "name": "id", + "name": "subscriberId", "required": true, "in": "path", "schema": { @@ -5302,7 +5394,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateNotificationGroupRequestDto" + "$ref": "#/components/schemas/UpdateSubscriberChannelRequestDto" } } } @@ -5336,7 +5428,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NotificationGroupResponseDto" + "$ref": "#/components/schemas/SubscriberResponseDto" } } } @@ -5457,7 +5549,7 @@ } }, "tags": [ - "Workflow groups" + "Subscribers" ], "security": [ { @@ -5465,13 +5557,15 @@ } ] }, - "delete": { - "operationId": "NotificationGroupsController_deleteNotificationGroup", - "summary": "Delete workflow group", - "description": "workflow group was previously named notification group", + "patch": { + "operationId": "SubscribersController_modifySubscriberChannel", + "x-speakeasy-name-override": "append", + "x-speakeasy-group": "Subscribers.Credentials", + "summary": "Modify subscriber credentials", + "description": "Subscriber credentials associated to the delivery methods such as slack and push tokens.\n This endpoint appends provided credentials and deviceTokens to the existing ones.", "parameters": [ { - "name": "id", + "name": "subscriberId", "required": true, "in": "path", "schema": { @@ -5479,6 +5573,16 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSubscriberChannelRequestDto" + } + } + } + }, "responses": { "200": { "description": "Ok", @@ -5508,7 +5612,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteNotificationGroupResponseDto" + "$ref": "#/components/schemas/SubscriberResponseDto" } } } @@ -5629,7 +5733,7 @@ } }, "tags": [ - "Workflow groups" + "Subscribers" ], "security": [ { @@ -5638,15 +5742,32 @@ ] } }, - "/v1/integrations": { - "get": { - "operationId": "IntegrationsController_listIntegrations", - "summary": "Get integrations", - "description": "Return all the integrations the user has created for that organization. Review v.0.17.0 changelog for a breaking change", - "parameters": [], + "/v1/subscribers/{subscriberId}/credentials/{providerId}": { + "delete": { + "operationId": "SubscribersController_deleteSubscriberCredentials", + "x-speakeasy-group": "Subscribers.Credentials", + "summary": "Delete subscriber credentials by providerId", + "description": "Delete subscriber credentials such as slack and expo tokens.", + "parameters": [ + { + "name": "subscriberId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "providerId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], "responses": { - "200": { - "description": "The list of integrations belonging to the organization that are successfully returned.", + "204": { "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -5670,16 +5791,7 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IntegrationResponseDto" - } - } - } - } + "description": "" }, "409": { "description": "The request could not be completed due to a conflict with the current state of the target resource.", @@ -5797,32 +5909,45 @@ } }, "tags": [ - "Integrations" + "Subscribers" ], "security": [ { "api-key": [] } ] - }, - "post": { - "operationId": "IntegrationsController_createIntegration", - "summary": "Create integration", - "description": "Create an integration for the current environment the user is based on the API key provided", - "parameters": [], + } + }, + "/v1/subscribers/{subscriberId}/online-status": { + "patch": { + "operationId": "SubscribersController_updateSubscriberOnlineFlag", + "x-speakeasy-name-override": "updateOnlineFlag", + "x-speakeasy-group": "Subscribers.properties", + "summary": "Update subscriber online status", + "description": "Used to update the subscriber isOnline flag.", + "parameters": [ + { + "name": "subscriberId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateIntegrationRequestDto" + "$ref": "#/components/schemas/UpdateSubscriberOnlineFlagRequestDto" } } } }, "responses": { - "201": { - "description": "Created", + "200": { + "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -5849,7 +5974,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IntegrationResponseDto" + "$ref": "#/components/schemas/SubscriberResponseDto" } } } @@ -5970,7 +6095,7 @@ } }, "tags": [ - "Integrations" + "Subscribers" ], "security": [ { @@ -5979,16 +6104,33 @@ ] } }, - "/v1/integrations/active": { + "/v1/subscribers/{subscriberId}/preferences": { "get": { - "operationId": "IntegrationsController_getActiveIntegrations", - "x-speakeasy-name-override": "listActive", - "summary": "Get active integrations", - "description": "Return all the active integrations the user has created for that organization. Review v.0.17.0 changelog for a breaking change", - "parameters": [], + "operationId": "SubscribersController_listSubscriberPreferences", + "x-speakeasy-group": "Subscribers.Preferences", + "summary": "Get subscriber preferences", + "parameters": [ + { + "name": "subscriberId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "includeInactiveChannels", + "required": false, + "in": "query", + "description": "A flag which specifies if the inactive workflow channels should be included in the retrieved preferences. Default is true", + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { - "description": "The list of active integrations belonging to the organization that are successfully returned.", + "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -6017,7 +6159,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/IntegrationResponseDto" + "$ref": "#/components/schemas/UpdateSubscriberPreferenceResponseDto" } } } @@ -6139,24 +6281,22 @@ } }, "tags": [ - "Integrations" + "Subscribers" ], "security": [ { "api-key": [] } ] - } - }, - "/v1/integrations/webhook/provider/{providerOrIntegrationId}/status": { - "get": { - "operationId": "IntegrationsController_getWebhookSupportStatus", - "x-speakeasy-group": "Integrations.Webhooks", - "summary": "Get webhook support status for provider", - "description": "Return the status of the webhook for this provider, if it is supported or if it is not based on a boolean value", + }, + "patch": { + "operationId": "SubscribersController_updateSubscriberGlobalPreferences", + "x-speakeasy-name-override": "updateGlobal", + "x-speakeasy-group": "Subscribers.Preferences", + "summary": "Update subscriber global preferences", "parameters": [ { - "name": "providerOrIntegrationId", + "name": "subscriberId", "required": true, "in": "path", "schema": { @@ -6164,9 +6304,19 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSubscriberGlobalPreferencesRequestDto" + } + } + } + }, "responses": { "200": { - "description": "The status of the webhook for the provider requested", + "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -6193,7 +6343,7 @@ "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/UpdateSubscriberPreferenceResponseDto" } } } @@ -6314,7 +6464,7 @@ } }, "tags": [ - "Integrations" + "Subscribers" ], "security": [ { @@ -6323,30 +6473,44 @@ ] } }, - "/v1/integrations/{integrationId}": { - "put": { - "operationId": "IntegrationsController_updateIntegrationById", - "summary": "Update integration", + "/v1/subscribers/{subscriberId}/preferences/{parameter}": { + "get": { + "operationId": "SubscribersController_getSubscriberPreferenceByLevel", + "x-speakeasy-name-override": "retrieveByLevel", + "x-speakeasy-group": "Subscribers.Preferences", + "summary": "Get subscriber preferences by level", "parameters": [ { - "name": "integrationId", + "name": "includeInactiveChannels", + "required": false, + "in": "query", + "description": "A flag which specifies if the inactive workflow channels should be included in the retrieved preferences. Default is true", + "schema": { + "type": "boolean" + } + }, + { + "name": "parameter", "required": true, "in": "path", + "description": "the preferences level to be retrieved (template / global) ", "schema": { + "enum": [ + "global", + "template" + ], "type": "string" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateIntegrationRequestDto" - } + }, + { + "name": "subscriberId", + "required": true, + "in": "path", + "schema": { + "type": "string" } } - }, + ], "responses": { "200": { "description": "Ok", @@ -6376,37 +6540,14 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IntegrationResponseDto" + "type": "array", + "items": { + "$ref": "#/components/schemas/GetSubscriberPreferencesResponseDto" + } } } } }, - "404": { - "description": "The integration with the integrationId provided does not exist in the database.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, "409": { "description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": { @@ -6523,7 +6664,7 @@ } }, "tags": [ - "Integrations" + "Subscribers" ], "security": [ { @@ -6531,12 +6672,21 @@ } ] }, - "delete": { - "operationId": "IntegrationsController_removeIntegration", - "summary": "Delete integration", + "patch": { + "operationId": "SubscribersController_updateSubscriberPreference", + "x-speakeasy-group": "Subscribers.Preferences", + "summary": "Update subscriber preference", "parameters": [ { - "name": "integrationId", + "name": "subscriberId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "parameter", "required": true, "in": "path", "schema": { @@ -6544,6 +6694,16 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSubscriberPreferenceRequestDto" + } + } + } + }, "responses": { "200": { "description": "Ok", @@ -6573,10 +6733,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IntegrationResponseDto" - } + "$ref": "#/components/schemas/UpdateSubscriberPreferenceResponseDto" } } } @@ -6697,7 +6854,7 @@ } }, "tags": [ - "Integrations" + "Subscribers" ], "security": [ { @@ -6706,24 +6863,67 @@ ] } }, - "/v1/integrations/{integrationId}/set-primary": { - "post": { - "operationId": "IntegrationsController_setIntegrationAsPrimary", - "x-speakeasy-name-override": "setAsPrimary", - "summary": "Set integration as primary", + "/v1/subscribers/{subscriberId}/notifications/feed": { + "get": { + "operationId": "SubscribersController_getNotificationsFeed", + "x-speakeasy-group": "Subscribers.Notifications", + "summary": "Get in-app notification feed for a particular subscriber", "parameters": [ { - "name": "integrationId", + "name": "subscriberId", "required": true, "in": "path", "schema": { "type": "string" } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "schema": { + "maximum": 100, + "default": 10, + "type": "number" + } + }, + { + "name": "read", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "seen", + "required": false, + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "payload", + "required": false, + "in": "query", + "description": "Base64 encoded string of the partial payload JSON object", + "example": "btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string like eyJmb28iOjEyM30=", + "schema": { + "type": "string" + } } ], "responses": { "200": { - "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -6747,50 +6947,29 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/IntegrationResponseDto" - } - } - } - }, - "201": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IntegrationResponseDto" + "allOf": [ + { + "$ref": "#/components/schemas/PaginatedResponseDto" + }, + { + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FeedResponseDto" + } + } + } + } + ] } } } }, - "404": { - "description": "The integration with the integrationId provided does not exist in the database.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, "409": { "description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": { @@ -6907,7 +7086,7 @@ } }, "tags": [ - "Integrations" + "Subscribers" ], "security": [ { @@ -6916,41 +7095,41 @@ ] } }, - "/v1/changes": { + "/v1/subscribers/{subscriberId}/notifications/unseen": { "get": { - "operationId": "ChangesController_getChanges", - "summary": "Get changes", + "operationId": "SubscribersController_getUnseenCount", + "x-speakeasy-name-override": "unseenCount", + "x-speakeasy-group": "Subscribers.Notifications", + "summary": "Get the unseen in-app notifications count for subscribers feed", "parameters": [ { - "name": "page", - "required": false, + "name": "seen", + "required": true, "in": "query", "schema": { - "type": "number" + "type": "boolean" } }, { - "name": "limit", - "required": false, - "in": "query", + "name": "subscriberId", + "required": true, + "in": "path", "schema": { - "maximum": 100, - "default": 10, - "type": "number" + "type": "string" } }, { - "name": "promoted", + "name": "limit", "required": true, "in": "query", "schema": { - "default": "false", - "type": "string" + "type": "number" } } ], "responses": { "200": { + "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -6974,11 +7153,10 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, - "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChangesResponseDto" + "$ref": "#/components/schemas/UnseenCountResponse" } } } @@ -7099,7 +7277,7 @@ } }, "tags": [ - "Changes" + "Subscribers" ], "security": [ { @@ -7108,42 +7286,42 @@ ] } }, - "/v1/changes/count": { - "get": { - "operationId": "ChangesController_getChangesCount", - "x-speakeasy-name-override": "count", - "summary": "Get changes count", - "parameters": [], - "responses": { - "200": { - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" + "/v1/subscribers/{subscriberId}/messages/mark-as": { + "post": { + "operationId": "SubscribersController_markMessagesAs", + "x-speakeasy-name-override": "markAllAs", + "x-speakeasy-group": "Subscribers.Messages", + "summary": "Mark a subscriber messages as seen, read, unseen or unread", + "parameters": [ + { + "name": "subscriberId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MessageMarkAsRequestDto" } - }, + } + } + }, + "responses": { + "201": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DataNumberDto" + "type": "array", + "items": { + "$ref": "#/components/schemas/MessageEntity" + } } } } @@ -7264,7 +7442,7 @@ } }, "tags": [ - "Changes" + "Subscribers" ], "security": [ { @@ -7273,55 +7451,39 @@ ] } }, - "/v1/changes/bulk/apply": { + "/v1/subscribers/{subscriberId}/messages/mark-all": { "post": { - "operationId": "ChangesController_bulkApplyDiff", - "x-speakeasy-name-override": "applyBulk", - "summary": "Apply changes", - "parameters": [], + "operationId": "SubscribersController_markAllUnreadAsRead", + "x-speakeasy-name-override": "markAll", + "x-speakeasy-group": "Subscribers.Messages", + "summary": "Marks all the subscriber messages as read, unread, seen or unseen. Optionally you can pass feed id (or array) to mark messages of a particular feed.", + "parameters": [ + { + "name": "subscriberId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkApplyChangeDto" + "$ref": "#/components/schemas/MarkAllMessageAsRequestDto" } } } }, "responses": { "201": { - "description": "Created", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, + "description": "", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ChangeResponseDto" - } + "type": "number" } } } @@ -7442,7 +7604,7 @@ } }, "tags": [ - "Changes" + "Subscribers" ], "security": [ { @@ -7451,14 +7613,31 @@ ] } }, - "/v1/changes/{changeId}/apply": { + "/v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}": { "post": { - "operationId": "ChangesController_applyDiff", - "x-speakeasy-name-override": "apply", - "summary": "Apply change", + "operationId": "SubscribersController_markActionAsSeen", + "x-speakeasy-name-override": "updateAsSeen", + "x-speakeasy-group": "Subscribers.Messages", + "summary": "Mark message action as seen", "parameters": [ { - "name": "changeId", + "name": "messageId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "type", + "required": true, + "in": "path", + "schema": { + + } + }, + { + "name": "subscriberId", "required": true, "in": "path", "schema": { @@ -7466,6 +7645,16 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MarkMessageActionAsSeenDto" + } + } + } + }, "responses": { "201": { "description": "Created", @@ -7495,10 +7684,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ChangeResponseDto" - } + "$ref": "#/components/schemas/MessageResponseDto" } } } @@ -7619,7 +7805,7 @@ } }, "tags": [ - "Changes" + "Subscribers" ], "security": [ { @@ -7628,93 +7814,69 @@ ] } }, - "/v1/subscribers": { + "/v1/subscribers/{subscriberId}/credentials/{providerId}/oauth/callback": { "get": { - "operationId": "SubscribersController_listSubscribers", - "x-speakeasy-pagination": { - "type": "offsetLimit", - "inputs": [ - { - "name": "page", - "in": "parameters", - "type": "page" - }, - { - "name": "limit", - "in": "parameters", - "type": "limit" - } - ], - "outputs": { - "results": "$.data.resultArray" - } - }, - "summary": "Get subscribers", - "description": "Returns a list of subscribers, could paginated using the `page` and `limit` query parameter", + "operationId": "SubscribersController_chatOauthCallback", + "x-speakeasy-name-override": "chatAccessOauthCallBack", + "x-speakeasy-group": "Subscribers.Authentication", + "summary": "Handle providers oauth redirect", "parameters": [ { - "name": "page", - "required": false, + "name": "subscriberId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "providerId", + "required": true, + "in": "path", + "schema": { + + } + }, + { + "name": "code", + "required": true, "in": "query", "schema": { - "type": "number" + "type": "string" } }, { - "name": "limit", + "name": "hmacHash", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "environmentId", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "integrationIdentifier", "required": false, "in": "query", "schema": { - "maximum": 100, - "default": 10, - "type": "number" + "type": "string" } } ], "responses": { "200": { - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, "description": "", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/PaginatedResponseDto" - }, - { - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SubscriberResponseDto" - } - } - } - } - ] + "type": "object" } } } @@ -7842,55 +8004,59 @@ "api-key": [] } ] - }, - "post": { - "operationId": "SubscribersController_createSubscriber", - "summary": "Create subscriber", - "description": "Creates a subscriber entity, in the Novu platform. The subscriber will be later used to receive notifications, and access notification feeds. Communication credentials such as email, phone number, and 3 rd party credentials i.e slack tokens could be later associated to this entity.", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateSubscriberRequestDto" - } + } + }, + "/v1/subscribers/{subscriberId}/credentials/{providerId}/oauth": { + "get": { + "operationId": "SubscribersController_chatAccessOauth", + "x-speakeasy-name-override": "chatAccessOauth", + "x-speakeasy-group": "Subscribers.Authentication", + "summary": "Handle chat oauth", + "parameters": [ + { + "name": "subscriberId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "providerId", + "required": true, + "in": "path", + "schema": { + + } + }, + { + "name": "hmacHash", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "environmentId", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "integrationIdentifier", + "required": false, + "in": "query", + "schema": { + "type": "string" } } - }, + ], "responses": { - "201": { - "description": "Created", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SubscriberResponseDto" - } - } - } + "200": { + "description": "" }, "409": { "description": "The request could not be completed due to a conflict with the current state of the target resource.", @@ -8017,24 +8183,67 @@ ] } }, - "/v1/subscribers/{subscriberId}": { + "/v1/messages": { "get": { - "operationId": "SubscribersController_getSubscriber", - "summary": "Get subscriber", - "description": "Get subscriber by your internal id used to identify the subscriber", + "operationId": "MessagesController_getMessages", + "summary": "Get messages", + "description": "Returns a list of messages, could paginate using the `page` query parameter", "parameters": [ + { + "name": "channel", + "required": false, + "in": "query", + "schema": { + "enum": [ + "in_app", + "email", + "sms", + "chat", + "push" + ], + "type": "string" + } + }, { "name": "subscriberId", - "required": true, - "in": "path", + "required": false, + "in": "query", "schema": { "type": "string" } + }, + { + "name": "transactionId", + "required": false, + "in": "query", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "default": 0, + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "schema": { + "default": 10, + "type": "number" + } } ], "responses": { "200": { - "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -8058,10 +8267,11 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SubscriberResponseDto" + "$ref": "#/components/schemas/ActivitiesResponseDto" } } } @@ -8182,21 +8392,23 @@ } }, "tags": [ - "Subscribers" + "Messages" ], "security": [ { "api-key": [] } ] - }, - "put": { - "operationId": "SubscribersController_updateSubscriber", - "summary": "Update subscriber", - "description": "Used to update the subscriber entity with new information", + } + }, + "/v1/messages/{messageId}": { + "delete": { + "operationId": "MessagesController_deleteMessage", + "summary": "Delete message", + "description": "Deletes a message entity from the Novu platform", "parameters": [ { - "name": "subscriberId", + "name": "messageId", "required": true, "in": "path", "schema": { @@ -8204,16 +8416,6 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSubscriberRequestDto" - } - } - } - }, "responses": { "200": { "description": "Ok", @@ -8243,7 +8445,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SubscriberResponseDto" + "$ref": "#/components/schemas/DeleteMessageResponseDto" } } } @@ -8364,21 +8566,40 @@ } }, "tags": [ - "Subscribers" + "Messages" ], "security": [ { "api-key": [] } ] - }, + } + }, + "/v1/messages/transaction/{transactionId}": { "delete": { - "operationId": "SubscribersController_removeSubscriber", - "summary": "Delete subscriber", - "description": "Deletes a subscriber entity from the Novu platform", + "operationId": "MessagesController_deleteMessagesByTransactionId", + "x-speakeasy-name-override": "deleteByTransactionId", + "summary": "Delete messages by transactionId", + "description": "Deletes messages entity from the Novu platform using TransactionId of message", "parameters": [ { - "name": "subscriberId", + "name": "channel", + "required": false, + "in": "query", + "description": "The channel of the message to be deleted", + "schema": { + "enum": [ + "in_app", + "email", + "sms", + "chat", + "push" + ], + "type": "string" + } + }, + { + "name": "transactionId", "required": true, "in": "path", "schema": { @@ -8387,8 +8608,7 @@ } ], "responses": { - "200": { - "description": "Ok", + "204": { "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -8412,13 +8632,7 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteSubscriberResponseDto" - } - } - } + "description": "" }, "409": { "description": "The request could not be completed due to a conflict with the current state of the target resource.", @@ -8536,7 +8750,7 @@ } }, "tags": [ - "Subscribers" + "Messages" ], "security": [ { @@ -8545,29 +8759,25 @@ ] } }, - "/v1/subscribers/bulk": { + "/v1/topics": { "post": { - "operationId": "SubscribersController_bulkCreateSubscribers", - "x-speakeasy-name-override": "createBulk", - "summary": "Bulk create subscribers", - "description": "\n Using this endpoint you can create multiple subscribers at once, to avoid multiple calls to the API.\n The bulk API is limited to 500 subscribers per request.\n ", + "operationId": "TopicsController_createTopic", + "summary": "Topic creation", + "description": "Create a topic", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkSubscriberCreateDto" + "$ref": "#/components/schemas/CreateTopicRequestDto" } } } }, "responses": { "201": { - "description": "" - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", + "description": "Created", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -8589,25 +8799,18 @@ }, "Idempotency-Replay": { "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" } }, "content": { "application/json": { "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" + "$ref": "#/components/schemas/CreateTopicResponseDto" } } } }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", + "409": { + "description": "The request could not be completed due to a conflict with the current state of the target resource.", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -8632,19 +8835,22 @@ }, "Retry-After": { "$ref": "#/components/headers/Retry-After" + }, + "Link": { + "$ref": "#/components/headers/Link" } }, "content": { "application/json": { "schema": { "type": "string", - "example": "API rate limit exceeded" + "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" } } } }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", + "429": { + "description": "The client has sent too many requests in a given amount of time. ", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -8675,51 +8881,97 @@ "application/json": { "schema": { "type": "string", - "example": "Please wait some time, then try again." + "example": "API rate limit exceeded" } } } - } + }, + "503": { + "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", + "headers": { + "Content-Type": { + "$ref": "#/components/headers/Content-Type" + }, + "RateLimit-Limit": { + "$ref": "#/components/headers/RateLimit-Limit" + }, + "RateLimit-Remaining": { + "$ref": "#/components/headers/RateLimit-Remaining" + }, + "RateLimit-Reset": { + "$ref": "#/components/headers/RateLimit-Reset" + }, + "RateLimit-Policy": { + "$ref": "#/components/headers/RateLimit-Policy" + }, + "Idempotency-Key": { + "$ref": "#/components/headers/Idempotency-Key" + }, + "Idempotency-Replay": { + "$ref": "#/components/headers/Idempotency-Replay" + }, + "Retry-After": { + "$ref": "#/components/headers/Retry-After" + } + }, + "content": { + "application/json": { + "schema": { + "type": "string", + "example": "Please wait some time, then try again." + } + } + } + } }, "tags": [ - "Subscribers" + "Topics" ], "security": [ { "api-key": [] } ] - } - }, - "/v1/subscribers/{subscriberId}/credentials": { - "put": { - "operationId": "SubscribersController_updateSubscriberChannel", - "x-speakeasy-group": "Subscribers.Credentials", - "summary": "Update subscriber credentials", - "description": "Subscriber credentials associated to the delivery methods such as slack and push tokens.", + }, + "get": { + "operationId": "TopicsController_listTopics", + "summary": "Filter topics", + "description": "Returns a list of topics that can be paginated using the `page` query parameter and filtered by the topic key with the `key` query parameter", "parameters": [ { - "name": "subscriberId", - "required": true, - "in": "path", + "name": "page", + "required": false, + "in": "query", + "description": "Number of page for the pagination", + "schema": { + "minimum": 0, + "default": 0, + "type": "number" + } + }, + { + "name": "pageSize", + "required": false, + "in": "query", + "description": "Size of page for the pagination", + "schema": { + "minimum": 0, + "default": 10, + "type": "number" + } + }, + { + "name": "key", + "required": false, + "in": "query", + "description": "Topic key", "schema": { "type": "string" } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSubscriberChannelRequestDto" - } - } - } - }, "responses": { "200": { - "description": "Ok", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -8743,10 +8995,11 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SubscriberResponseDto" + "$ref": "#/components/schemas/FilterTopicsResponseDto" } } } @@ -8867,25 +9120,28 @@ } }, "tags": [ - "Subscribers" + "Topics" ], "security": [ { "api-key": [] } ] - }, - "patch": { - "operationId": "SubscribersController_modifySubscriberChannel", - "x-speakeasy-name-override": "append", - "x-speakeasy-group": "Subscribers.Credentials", - "summary": "Modify subscriber credentials", - "description": "Subscriber credentials associated to the delivery methods such as slack and push tokens.\n This endpoint appends provided credentials and deviceTokens to the existing ones.", + } + }, + "/v1/topics/{topicKey}/subscribers": { + "post": { + "operationId": "TopicsController_addSubscribers", + "x-speakeasy-name-override": "assign", + "x-speakeasy-group": "Topics.Subscribers", + "summary": "Subscribers addition", + "description": "Add subscribers to a topic by key", "parameters": [ { - "name": "subscriberId", + "name": "topicKey", "required": true, "in": "path", + "description": "The topic key", "schema": { "type": "string" } @@ -8896,14 +9152,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateSubscriberChannelRequestDto" + "$ref": "#/components/schemas/AddSubscribersRequestDto" } } } }, "responses": { - "200": { - "description": "Ok", + "204": { "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -8927,13 +9182,7 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SubscriberResponseDto" - } - } - } + "description": "" }, "409": { "description": "The request could not be completed due to a conflict with the current state of the target resource.", @@ -9051,7 +9300,7 @@ } }, "tags": [ - "Subscribers" + "Topics" ], "security": [ { @@ -9060,56 +9309,42 @@ ] } }, - "/v1/subscribers/{subscriberId}/credentials/{providerId}": { - "delete": { - "operationId": "SubscribersController_deleteSubscriberCredentials", - "x-speakeasy-group": "Subscribers.Credentials", - "summary": "Delete subscriber credentials by providerId", - "description": "Delete subscriber credentials such as slack and expo tokens.", + "/v1/topics/{topicKey}/subscribers/{externalSubscriberId}": { + "get": { + "operationId": "TopicsController_getTopicSubscriber", + "x-speakeasy-group": "Topics.Subscribers", + "summary": "Check topic subscriber", + "description": "Check if a subscriber belongs to a certain topic", "parameters": [ { - "name": "subscriberId", + "name": "externalSubscriberId", "required": true, "in": "path", + "description": "The external subscriber id", "schema": { "type": "string" } }, { - "name": "providerId", + "name": "topicKey", "required": true, "in": "path", + "description": "The topic key", "schema": { "type": "string" } } ], "responses": { - "204": { - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TopicSubscriberDto" + } } - }, - "description": "" + } }, "409": { "description": "The request could not be completed due to a conflict with the current state of the target resource.", @@ -9227,7 +9462,7 @@ } }, "tags": [ - "Subscribers" + "Topics" ], "security": [ { @@ -9236,18 +9471,18 @@ ] } }, - "/v1/subscribers/{subscriberId}/online-status": { - "patch": { - "operationId": "SubscribersController_updateSubscriberOnlineFlag", - "x-speakeasy-name-override": "updateOnlineFlag", - "x-speakeasy-group": "Subscribers.properties", - "summary": "Update subscriber online status", - "description": "Used to update the subscriber isOnline flag.", + "/v1/topics/{topicKey}/subscribers/removal": { + "post": { + "operationId": "TopicsController_removeSubscribers", + "x-speakeasy-group": "Topics.Subscribers", + "summary": "Subscribers removal", + "description": "Remove subscribers from a topic", "parameters": [ { - "name": "subscriberId", + "name": "topicKey", "required": true, "in": "path", + "description": "The topic key", "schema": { "type": "string" } @@ -9258,14 +9493,13 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateSubscriberOnlineFlagRequestDto" + "$ref": "#/components/schemas/RemoveSubscribersRequestDto" } } } }, "responses": { - "200": { - "description": "Ok", + "204": { "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -9289,13 +9523,7 @@ "$ref": "#/components/headers/Idempotency-Replay" } }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SubscriberResponseDto" - } - } - } + "description": "" }, "409": { "description": "The request could not be completed due to a conflict with the current state of the target resource.", @@ -9413,7 +9641,7 @@ } }, "tags": [ - "Subscribers" + "Topics" ], "security": [ { @@ -9422,24 +9650,25 @@ ] } }, - "/v1/subscribers/{subscriberId}/preferences": { - "get": { - "operationId": "SubscribersController_listSubscriberPreferences", - "x-speakeasy-group": "Subscribers.Preferences", - "summary": "Get subscriber preferences", + "/v1/topics/{topicKey}": { + "delete": { + "operationId": "TopicsController_deleteTopic", + "summary": "Delete topic", + "description": "Delete a topic by its topic key if it has no subscribers", "parameters": [ { - "name": "subscriberId", + "name": "topicKey", "required": true, "in": "path", + "description": "The topic key", "schema": { "type": "string" } } ], "responses": { - "200": { - "description": "Ok", + "204": { + "description": "The topic has been deleted correctly", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -9462,20 +9691,10 @@ "Idempotency-Replay": { "$ref": "#/components/headers/Idempotency-Replay" } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/UpdateSubscriberPreferenceResponseDto" - } - } - } } }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", + "404": { + "description": "The topic with the key provided does not exist in the database so it can not be deleted.", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -9497,168 +9716,11 @@ }, "Idempotency-Replay": { "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Subscribers" - ], - "security": [ - { - "api-key": [] - } - ] - }, - "patch": { - "operationId": "SubscribersController_updateSubscriberGlobalPreferences", - "x-speakeasy-name-override": "updateGlobal", - "x-speakeasy-group": "Subscribers.Preferences", - "summary": "Update subscriber global preferences", - "parameters": [ - { - "name": "subscriberId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSubscriberGlobalPreferencesRequestDto" - } - } - } - }, - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSubscriberPreferenceResponseDto" - } } } }, "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", + "description": "The topic you are trying to delete has subscribers assigned to it. Delete the subscribers before deleting the topic.", "headers": { "Content-Type": { "$ref": "#/components/headers/Content-Type" @@ -9680,12 +9742,6 @@ }, "Idempotency-Replay": { "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" } }, "content": { @@ -9773,34 +9829,24 @@ } }, "tags": [ - "Subscribers" + "Topics" ], "security": [ { "api-key": [] } ] - } - }, - "/v1/subscribers/{subscriberId}/preferences/{parameter}": { + }, "get": { - "operationId": "SubscribersController_getSubscriberPreferenceByLevel", - "x-speakeasy-name-override": "retrieveByLevel", - "x-speakeasy-group": "Subscribers.Preferences", - "summary": "Get subscriber preferences by level", + "operationId": "TopicsController_getTopic", + "summary": "Get topic", + "description": "Get a topic by its topic key", "parameters": [ { - "name": "parameter", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "subscriberId", + "name": "topicKey", "required": true, "in": "path", + "description": "The topic key", "schema": { "type": "string" } @@ -9835,10 +9881,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GetSubscriberPreferencesResponseDto" - } + "$ref": "#/components/schemas/GetTopicResponseDto" } } } @@ -9959,7 +10002,7 @@ } }, "tags": [ - "Subscribers" + "Topics" ], "security": [ { @@ -9968,22 +10011,16 @@ ] }, "patch": { - "operationId": "SubscribersController_updateSubscriberPreference", - "x-speakeasy-group": "Subscribers.Preferences", - "summary": "Update subscriber preference", + "operationId": "TopicsController_renameTopic", + "x-speakeasy-name-override": "rename", + "summary": "Rename a topic", + "description": "Rename a topic by providing a new name", "parameters": [ { - "name": "subscriberId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "parameter", + "name": "topicKey", "required": true, "in": "path", + "description": "The topic key", "schema": { "type": "string" } @@ -9994,7 +10031,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateSubscriberPreferenceRequestDto" + "$ref": "#/components/schemas/RenameTopicRequestDto" } } } @@ -10028,7 +10065,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateSubscriberPreferenceResponseDto" + "$ref": "#/components/schemas/RenameTopicResponseDto" } } } @@ -10149,7 +10186,7 @@ } }, "tags": [ - "Subscribers" + "Topics" ], "security": [ { @@ -10157,7324 +10194,311 @@ } ] } + } + }, + "info": { + "title": "Novu API", + "description": "Novu REST API. Please see https://docs.novu.co/api-reference for more details.", + "version": "1.0", + "contact": { + "name": "Novu Support", + "url": "https://discord.gg/novu", + "email": "support@novu.co" }, - "/v1/subscribers/{subscriberId}/notifications/feed": { - "get": { - "operationId": "SubscribersController_getNotificationsFeed", - "x-speakeasy-group": "Subscribers.Notifications", - "summary": "Get in-app notification feed for a particular subscriber", - "parameters": [ - { - "name": "subscriberId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "page", - "required": false, - "in": "query", - "schema": { - "type": "number" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "schema": { - "maximum": 100, - "default": 10, - "type": "number" - } - }, - { - "name": "read", - "required": false, - "in": "query", - "schema": { - "type": "boolean" - } - }, - { - "name": "seen", - "required": false, - "in": "query", - "schema": { - "type": "boolean" - } - }, - { - "name": "payload", - "required": false, - "in": "query", - "description": "Base64 encoded string of the partial payload JSON object", - "example": "btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string like eyJmb28iOjEyM30=", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/PaginatedResponseDto" - }, - { - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FeedResponseDto" - } - } - } - } - ] - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Subscribers" - ], - "security": [ - { - "api-key": [] - } - ] + "termsOfService": "https://novu.co/terms", + "license": { + "name": "MIT", + "url": "https://opensource.org/license/mit" + } + }, + "tags": [ + { + "name": "Events", + "description": "Events represent a change in state of a subscriber. They are used to trigger workflows, and enable you to send notifications to subscribers based on their actions.", + "externalDocs": { + "url": "https://docs.novu.co/workflows" } }, - "/v1/subscribers/{subscriberId}/notifications/unseen": { - "get": { - "operationId": "SubscribersController_getUnseenCount", - "x-speakeasy-name-override": "unseenCount", - "x-speakeasy-group": "Subscribers.Notifications", - "summary": "Get the unseen in-app notifications count for subscribers feed", - "parameters": [ - { - "name": "seen", - "required": true, - "in": "query", - "schema": { - "type": "boolean" - } - }, - { - "name": "subscriberId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "required": true, - "in": "query", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UnseenCountResponse" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Subscribers" - ], - "security": [ - { - "api-key": [] - } - ] + { + "name": "Subscribers", + "description": "A subscriber in Novu represents someone who should receive a message. A subscriber’s profile information contains important attributes about the subscriber that will be used in messages (name, email). The subscriber object can contain other key-value pairs that can be used to further personalize your messages.", + "externalDocs": { + "url": "https://docs.novu.co/subscribers/subscribers" } }, - "/v1/subscribers/{subscriberId}/messages/mark-as": { - "post": { - "operationId": "SubscribersController_markMessagesAs", - "x-speakeasy-name-override": "markAllAs", - "x-speakeasy-group": "Subscribers.Messages", - "summary": "Mark a subscriber messages as seen, read, unseen or unread", - "parameters": [ - { - "name": "subscriberId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MessageMarkAsRequestDto" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MessageEntity" - } - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Subscribers" - ], - "security": [ - { - "api-key": [] - } - ] + { + "name": "Topics", + "description": "Topics are a way to group subscribers together so that they can be notified of events at once. A topic is identified by a custom key. This can be helpful for things like sending out marketing emails or notifying users of new features. Topics can also be used to send notifications to the subscribers who have been grouped together based on their interests, location, activities and much more.", + "externalDocs": { + "url": "https://docs.novu.co/subscribers/topics" } }, - "/v1/subscribers/{subscriberId}/messages/mark-all": { - "post": { - "operationId": "SubscribersController_markAllUnreadAsRead", - "x-speakeasy-name-override": "markAll", - "x-speakeasy-group": "Subscribers.Messages", - "summary": "Marks all the subscriber messages as read, unread, seen or unseen. Optionally you can pass feed id (or array) to mark messages of a particular feed.", - "parameters": [ - { - "name": "subscriberId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MarkAllMessageAsRequestDto" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "number" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Subscribers" - ], - "security": [ - { - "api-key": [] - } - ] + { + "name": "Notification", + "description": "A notification conveys information from source to recipient, triggered by a workflow acting as a message blueprint. Notifications can be individual or bundled as digest for user-friendliness.", + "externalDocs": { + "url": "https://docs.novu.co/getting-started/introduction" } }, - "/v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}": { - "post": { - "operationId": "SubscribersController_markActionAsSeen", - "x-speakeasy-name-override": "updateAsSeen", - "x-speakeasy-group": "Subscribers.Messages", - "summary": "Mark message action as seen", - "parameters": [ - { - "name": "messageId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "type", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "subscriberId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MarkMessageActionAsSeenDto" - } - } - } - }, - "responses": { - "201": { - "description": "Created", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MessageResponseDto" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Subscribers" - ], - "security": [ - { - "api-key": [] - } - ] + { + "name": "Integrations", + "description": "With the help of the Integration Store, you can easily integrate your favorite delivery provider. During the runtime of the API, the Integrations Store is responsible for storing the configurations of all the providers.", + "externalDocs": { + "url": "https://docs.novu.co/channels-and-providers/integration-store" } }, - "/v1/subscribers/{subscriberId}/credentials/{providerId}/oauth/callback": { - "get": { - "operationId": "SubscribersController_chatOauthCallback", - "x-speakeasy-name-override": "chatAccessOauthCallBack", - "x-speakeasy-group": "Subscribers.Authentication", - "summary": "Handle providers oauth redirect", - "parameters": [ - { - "name": "subscriberId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "providerId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "code", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "hmacHash", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "environmentId", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "integrationIdentifier", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Subscribers" - ], - "security": [ - { - "api-key": [] - } - ] + { + "name": "Layouts", + "description": "Novu allows the creation of layouts - a specific HTML design or structure to wrap content of email notifications. Layouts can be manipulated and assigned to new or existing workflows within the Novu platform, allowing users to create, manage, and assign these layouts to workflows, so they can be reused to structure the appearance of notifications sent through the platform.", + "externalDocs": { + "url": "https://docs.novu.co/content-creation-design/layouts" } }, - "/v1/subscribers/{subscriberId}/credentials/{providerId}/oauth": { - "get": { - "operationId": "SubscribersController_chatAccessOauth", - "x-speakeasy-name-override": "chatAccessOauth", - "x-speakeasy-group": "Subscribers.Authentication", - "summary": "Handle chat oauth", - "parameters": [ - { - "name": "subscriberId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "providerId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "hmacHash", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "environmentId", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "integrationIdentifier", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Subscribers" - ], - "security": [ - { - "api-key": [] - } - ] + { + "name": "Workflows", + "description": "All notifications are sent via a workflow. Each workflow acts as a container for the logic and blueprint that are associated with a type of notification in your system.", + "externalDocs": { + "url": "https://docs.novu.co/workflows" } }, - "/v1/feeds": { - "post": { - "operationId": "FeedsController_createFeed", - "summary": "Create feed", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateFeedRequestDto" - } - } - } - }, - "responses": { - "201": { - "description": "Created", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FeedResponseDto" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Feeds" - ], - "security": [ - { - "api-key": [] - } - ] - }, - "get": { - "operationId": "FeedsController_getFeeds", - "summary": "Get feeds", - "parameters": [], - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FeedResponseDto" - } - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Feeds" - ], - "security": [ - { - "api-key": [] - } - ] + { + "name": "Notification Templates", + "description": "Deprecated. Use Workflows (/workflows) instead, which provide the same functionality under a new name." + }, + { + "name": "Workflow groups", + "description": "Workflow groups are used to organize workflows into logical groups." + }, + { + "name": "Changes", + "description": "Changes represent a change in state of an environment. They are analagous to a pending pull request in git, enabling you to test changes before they are applied to your environment and atomically apply them when you are ready.", + "externalDocs": { + "url": "https://docs.novu.co/platform/environments#promoting-pending-changes-to-production" } }, - "/v1/feeds/{feedId}": { - "delete": { - "operationId": "FeedsController_deleteFeedById", - "summary": "Delete feed", - "parameters": [ - { - "name": "feedId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FeedResponseDto" - } - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Feeds" - ], - "security": [ - { - "api-key": [] - } - ] + { + "name": "Environments", + "description": "Novu uses the concept of environments to ensure logical separation of your data and configuration. This means that subscribers, and preferences created in one environment are never accessible to another.", + "externalDocs": { + "url": "https://docs.novu.co/platform/environments" } }, - "/v1/layouts": { - "post": { - "operationId": "LayoutsController_PropertyDescriptor", - "x-speakeasy-name-override": "create", - "summary": "Layout creation", - "description": "Create a layout", - "parameters": [], - "responses": { - "201": { - "description": "Created", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateLayoutResponseDto" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Layouts" - ], - "security": [ - { - "api-key": [] - } - ] - }, - "get": { - "operationId": "LayoutsController_listLayouts", - "summary": "Filter layouts", - "description": "Returns a list of layouts that can be paginated using the `page` query parameter and filtered by the environment where it is executed from the organization the user belongs to.", - "parameters": [ - { - "name": "page", - "required": false, - "in": "query", - "description": "Number of page for pagination", - "schema": { - "minimum": 0, - "type": "number" - } - }, - { - "name": "pageSize", - "required": false, - "in": "query", - "description": "Size of page for pagination", - "schema": { - "minimum": 0, - "type": "number" - } - }, - { - "name": "sortBy", - "required": false, - "in": "query", - "description": "Sort field. Currently only supported `createdAt`", - "schema": { - "type": "string" - } - }, - { - "name": "orderBy", - "required": false, - "in": "query", - "description": "Direction of the sorting query param", - "schema": { - "enum": [ - "ASC", - "DESC" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The list of layouts that match the criteria of the query params are successfully returned.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "400": { - "description": "Page size can not be larger than the page size limit.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Layouts" - ], - "security": [ - { - "api-key": [] - } - ] + { + "name": "Inbound Parse", + "description": "Inbound Webhook is a feature that allows processing of incoming emails for a domain or subdomain. The feature parses the contents of the email and POSTs the information to a specified URL in a multipart/form-data format.", + "externalDocs": { + "url": "https://docs.novu.co/platform/inbound-parse-webhook" } }, - "/v1/layouts/{layoutId}": { - "get": { - "operationId": "LayoutsController_getLayout", - "summary": "Get layout", - "description": "Get a layout by its ID", - "parameters": [ - { - "name": "layoutId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetLayoutResponseDto" - } - } - } - }, - "404": { - "description": "The layout with the layoutId provided does not exist in the database.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Layouts" - ], - "security": [ - { - "api-key": [] - } - ] - }, - "delete": { - "operationId": "LayoutsController_deleteLayout", - "summary": "Delete layout", - "description": "Execute a soft delete of a layout given a certain ID.", - "parameters": [ - { - "name": "layoutId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "The layout has been deleted correctly", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "404": { - "description": "The layout with the layoutId provided does not exist in the database so it can not be deleted.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "409": { - "description": "Either you are trying to delete a layout that is being used or a layout that is the default in the environment.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Layouts" - ], - "security": [ - { - "api-key": [] - } - ] - }, - "patch": { - "operationId": "LayoutsController_updateLayout", - "summary": "Update a layout", - "description": "Update the name, content and variables of a layout. Also change it to be default or no.", - "parameters": [ - { - "name": "layoutId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateLayoutRequestDto" - } - } - } - }, - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateLayoutResponseDto" - } - } - } - }, - "400": { - "description": "The payload provided or the URL param are not right.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "404": { - "description": "The layout with the layoutId provided does not exist in the database so it can not be updated.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "409": { - "description": "One default layout is needed. If you are trying to turn a default layout as not default, you should turn a different layout as default first and automatically it will be done by the system.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "example": "One default layout is required" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Layouts" - ], - "security": [ - { - "api-key": [] - } - ] - } - }, - "/v1/layouts/{layoutId}/default": { - "post": { - "operationId": "LayoutsController_setDefaultLayout", - "x-speakeasy-name-override": "setAsDefault", - "summary": "Set default layout", - "description": "Sets the default layout for the environment and updates to non default to the existing default layout (if any).", - "parameters": [ - { - "name": "layoutId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "The selected layout has been set as the default for the environment.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "404": { - "description": "The layout with the layoutId provided does not exist in the database so it can not be set as the default for the environment.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Layouts" - ], - "security": [ - { - "api-key": [] - } - ] - } - }, - "/v1/messages": { - "get": { - "operationId": "MessagesController_getMessages", - "summary": "Get messages", - "description": "Returns a list of messages, could paginate using the `page` query parameter", - "parameters": [ - { - "name": "channel", - "required": false, - "in": "query", - "schema": { - "enum": [ - "in_app", - "email", - "sms", - "chat", - "push" - ], - "type": "string" - } - }, - { - "name": "subscriberId", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "transactionId", - "required": false, - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "page", - "required": false, - "in": "query", - "schema": { - "default": 0, - "type": "number" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "schema": { - "default": 10, - "type": "number" - } - } - ], - "responses": { - "200": { - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ActivitiesResponseDto" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Messages" - ], - "security": [ - { - "api-key": [] - } - ] - } - }, - "/v1/messages/{messageId}": { - "delete": { - "operationId": "MessagesController_deleteMessage", - "summary": "Delete message", - "description": "Deletes a message entity from the Novu platform", - "parameters": [ - { - "name": "messageId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteMessageResponseDto" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Messages" - ], - "security": [ - { - "api-key": [] - } - ] - } - }, - "/v1/messages/transaction/{transactionId}": { - "delete": { - "operationId": "MessagesController_deleteMessagesByTransactionId", - "x-speakeasy-name-override": "deleteByTransactionId", - "summary": "Delete messages by transactionId", - "description": "Deletes messages entity from the Novu platform using TransactionId of message", - "parameters": [ - { - "name": "channel", - "required": false, - "in": "query", - "description": "The channel of the message to be deleted", - "schema": { - "enum": [ - "in_app", - "email", - "sms", - "chat", - "push" - ], - "type": "string" - } - }, - { - "name": "transactionId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "description": "" - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Messages" - ], - "security": [ - { - "api-key": [] - } - ] - } - }, - "/v1/topics": { - "post": { - "operationId": "TopicsController_createTopic", - "summary": "Topic creation", - "description": "Create a topic", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTopicRequestDto" - } - } - } - }, - "responses": { - "201": { - "description": "Created", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTopicResponseDto" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Topics" - ], - "security": [ - { - "api-key": [] - } - ] - }, - "get": { - "operationId": "TopicsController_listTopics", - "summary": "Filter topics", - "description": "Returns a list of topics that can be paginated using the `page` query parameter and filtered by the topic key with the `key` query parameter", - "parameters": [ - { - "name": "page", - "required": false, - "in": "query", - "description": "Number of page for the pagination", - "schema": { - "minimum": 0, - "default": 0, - "type": "number" - } - }, - { - "name": "pageSize", - "required": false, - "in": "query", - "description": "Size of page for the pagination", - "schema": { - "minimum": 0, - "default": 10, - "type": "number" - } - }, - { - "name": "key", - "required": false, - "in": "query", - "description": "Topic key", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FilterTopicsResponseDto" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Topics" - ], - "security": [ - { - "api-key": [] - } - ] - } - }, - "/v1/topics/{topicKey}/subscribers": { - "post": { - "operationId": "TopicsController_addSubscribers", - "x-speakeasy-name-override": "assign", - "x-speakeasy-group": "Topics.Subscribers", - "summary": "Subscribers addition", - "description": "Add subscribers to a topic by key", - "parameters": [ - { - "name": "topicKey", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AddSubscribersRequestDto" - } - } - } - }, - "responses": { - "200": { - "description": "" - }, - "204": { - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "description": "" - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Topics" - ], - "security": [ - { - "api-key": [] - } - ] - } - }, - "/v1/topics/{topicKey}/subscribers/{externalSubscriberId}": { - "get": { - "operationId": "TopicsController_getTopicSubscriber", - "x-speakeasy-group": "Topics.Subscribers", - "summary": "Check topic subscriber", - "description": "Check if a subscriber belongs to a certain topic", - "parameters": [ - { - "name": "topicKey", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "externalSubscriberId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TopicSubscriberDto" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Topics" - ], - "security": [ - { - "api-key": [] - } - ] - } - }, - "/v1/topics/{topicKey}/subscribers/removal": { - "post": { - "operationId": "TopicsController_removeSubscribers", - "x-speakeasy-group": "Topics.Subscribers", - "summary": "Subscribers removal", - "description": "Remove subscribers from a topic", - "parameters": [ - { - "name": "topicKey", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RemoveSubscribersRequestDto" - } - } - } - }, - "responses": { - "204": { - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "description": "" - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Topics" - ], - "security": [ - { - "api-key": [] - } - ] - } - }, - "/v1/topics/{topicKey}": { - "delete": { - "operationId": "TopicsController_deleteTopic", - "summary": "Delete topic", - "description": "Delete a topic by its topic key if it has no subscribers", - "parameters": [ - { - "name": "topicKey", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "The topic has been deleted correctly", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "404": { - "description": "The topic with the key provided does not exist in the database so it can not be deleted.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "409": { - "description": "The topic you are trying to delete has subscribers assigned to it. Delete the subscribers before deleting the topic.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Topics" - ], - "security": [ - { - "api-key": [] - } - ] - }, - "get": { - "operationId": "TopicsController_getTopic", - "summary": "Get topic", - "description": "Get a topic by its topic key", - "parameters": [ - { - "name": "topicKey", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTopicResponseDto" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Topics" - ], - "security": [ - { - "api-key": [] - } - ] - }, - "patch": { - "operationId": "TopicsController_renameTopic", - "x-speakeasy-name-override": "rename", - "summary": "Rename a topic", - "description": "Rename a topic by providing a new name", - "parameters": [ - { - "name": "topicKey", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RenameTopicRequestDto" - } - } - } - }, - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RenameTopicResponseDto" - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Topics" - ], - "security": [ - { - "api-key": [] - } - ] - } - }, - "/v1/tenants": { - "get": { - "operationId": "TenantController_listTenants", - "x-speakeasy-pagination": { - "type": "offsetLimit", - "inputs": [ - { - "name": "page", - "in": "parameters", - "type": "page" - }, - { - "name": "limit", - "in": "parameters", - "type": "limit" - } - ], - "outputs": { - "results": "$.data.resultArray" - } - }, - "summary": "Get tenants", - "description": "Returns a list of tenants, could paginated using the `page` and `limit` query parameter", - "parameters": [ - { - "name": "page", - "required": false, - "in": "query", - "schema": { - "type": "number" - } - }, - { - "name": "limit", - "required": false, - "in": "query", - "schema": { - "maximum": 100, - "default": 10, - "type": "number" - } - } - ], - "responses": { - "200": { - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/PaginatedResponseDto" - }, - { - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GetTenantResponseDto" - } - } - } - } - ] - } - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Tenants" - ], - "security": [ - { - "api-key": [] - } - ] - }, - "post": { - "operationId": "TenantController_createTenant", - "summary": "Create tenant", - "description": "Create tenant under the current environment", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTenantRequestDto" - } - } - } - }, - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTenantResponseDto" - } - } - } - }, - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateTenantResponseDto" - } - } - } - }, - "409": { - "description": "A tenant with the same identifier is already exist.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Tenants" - ], - "security": [ - { - "api-key": [] - } - ] - } - }, - "/v1/tenants/{identifier}": { - "get": { - "operationId": "TenantController_getTenantById", - "summary": "Get tenant", - "description": "Get tenant by your internal id used to identify the tenant", - "parameters": [ - { - "name": "identifier", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GetTenantResponseDto" - } - } - } - }, - "404": { - "description": "The tenant with the identifier provided does not exist in the database.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Tenants" - ], - "security": [ - { - "api-key": [] - } - ] - }, - "patch": { - "operationId": "TenantController_updateTenant", - "summary": "Update tenant", - "description": "Update tenant by your internal id used to identify the tenant", - "parameters": [ - { - "name": "identifier", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateTenantRequestDto" - } - } - } - }, - "responses": { - "200": { - "description": "Ok", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateTenantResponseDto" - } - } - } - }, - "404": { - "description": "The tenant with the identifier provided does not exist in the database.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Tenants" - ], - "security": [ - { - "api-key": [] - } - ] - }, - "delete": { - "operationId": "TenantController_removeTenant", - "summary": "Delete tenant", - "description": "Deletes a tenant entity from the Novu platform", - "parameters": [ - { - "name": "identifier", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "The tenant has been deleted correctly", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "404": { - "description": "The tenant with the identifier provided does not exist in the database so it can not be deleted.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - } - } - }, - "409": { - "description": "The request could not be completed due to a conflict with the current state of the target resource.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - }, - "Link": { - "$ref": "#/components/headers/Link" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second" - } - } - } - }, - "429": { - "description": "The client has sent too many requests in a given amount of time. ", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "API rate limit exceeded" - } - } - } - }, - "503": { - "description": "The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.", - "headers": { - "Content-Type": { - "$ref": "#/components/headers/Content-Type" - }, - "RateLimit-Limit": { - "$ref": "#/components/headers/RateLimit-Limit" - }, - "RateLimit-Remaining": { - "$ref": "#/components/headers/RateLimit-Remaining" - }, - "RateLimit-Reset": { - "$ref": "#/components/headers/RateLimit-Reset" - }, - "RateLimit-Policy": { - "$ref": "#/components/headers/RateLimit-Policy" - }, - "Idempotency-Key": { - "$ref": "#/components/headers/Idempotency-Key" - }, - "Idempotency-Replay": { - "$ref": "#/components/headers/Idempotency-Replay" - }, - "Retry-After": { - "$ref": "#/components/headers/Retry-After" - } - }, - "content": { - "application/json": { - "schema": { - "type": "string", - "example": "Please wait some time, then try again." - } - } - } - } - }, - "tags": [ - "Tenants" - ], - "security": [ - { - "api-key": [] - } - ] - } - } - }, - "info": { - "title": "Novu API", - "description": "Novu REST API. Please see https://docs.novu.co/api-reference for more details.", - "version": "1.0", - "contact": { - "name": "Novu Support", - "url": "https://discord.gg/novu", - "email": "support@novu.co" - }, - "termsOfService": "https://novu.co/terms", - "license": { - "name": "MIT", - "url": "https://opensource.org/license/mit" - } - }, - "tags": [ - { - "name": "Events", - "description": "Events represent a change in state of a subscriber. They are used to trigger workflows, and enable you to send notifications to subscribers based on their actions.", - "externalDocs": { - "url": "https://docs.novu.co/workflows" - } - }, - { - "name": "Subscribers", - "description": "A subscriber in Novu represents someone who should receive a message. A subscriber’s profile information contains important attributes about the subscriber that will be used in messages (name, email). The subscriber object can contain other key-value pairs that can be used to further personalize your messages.", - "externalDocs": { - "url": "https://docs.novu.co/subscribers/subscribers" - } - }, - { - "name": "Topics", - "description": "Topics are a way to group subscribers together so that they can be notified of events at once. A topic is identified by a custom key. This can be helpful for things like sending out marketing emails or notifying users of new features. Topics can also be used to send notifications to the subscribers who have been grouped together based on their interests, location, activities and much more.", - "externalDocs": { - "url": "https://docs.novu.co/subscribers/topics" - } - }, - { - "name": "Notification", - "description": "A notification conveys information from source to recipient, triggered by a workflow acting as a message blueprint. Notifications can be individual or bundled as digest for user-friendliness.", - "externalDocs": { - "url": "https://docs.novu.co/getting-started/introduction" - } - }, - { - "name": "Integrations", - "description": "With the help of the Integration Store, you can easily integrate your favorite delivery provider. During the runtime of the API, the Integrations Store is responsible for storing the configurations of all the providers.", - "externalDocs": { - "url": "https://docs.novu.co/channels-and-providers/integration-store" - } - }, - { - "name": "Layouts", - "description": "Novu allows the creation of layouts - a specific HTML design or structure to wrap content of email notifications. Layouts can be manipulated and assigned to new or existing workflows within the Novu platform, allowing users to create, manage, and assign these layouts to workflows, so they can be reused to structure the appearance of notifications sent through the platform.", - "externalDocs": { - "url": "https://docs.novu.co/content-creation-design/layouts" - } - }, - { - "name": "Workflows", - "description": "All notifications are sent via a workflow. Each workflow acts as a container for the logic and blueprint that are associated with a type of notification in your system.", - "externalDocs": { - "url": "https://docs.novu.co/workflows" - } - }, - { - "name": "Notification Templates", - "description": "Deprecated. Use Workflows (/workflows) instead, which provide the same functionality under a new name." - }, - { - "name": "Workflow groups", - "description": "Workflow groups are used to organize workflows into logical groups." - }, - { - "name": "Changes", - "description": "Changes represent a change in state of an environment. They are analagous to a pending pull request in git, enabling you to test changes before they are applied to your environment and atomically apply them when you are ready.", - "externalDocs": { - "url": "https://docs.novu.co/platform/environments#promoting-pending-changes-to-production" - } - }, - { - "name": "Environments", - "description": "Novu uses the concept of environments to ensure logical separation of your data and configuration. This means that subscribers, and preferences created in one environment are never accessible to another.", - "externalDocs": { - "url": "https://docs.novu.co/platform/environments" - } - }, - { - "name": "Inbound Parse", - "description": "Inbound Webhook is a feature that allows processing of incoming emails for a domain or subdomain. The feature parses the contents of the email and POSTs the information to a specified URL in a multipart/form-data format.", - "externalDocs": { - "url": "https://docs.novu.co/platform/inbound-parse-webhook" - } - }, - { - "name": "Feeds", - "description": "Novu provides a notification activity feed that monitors every outgoing message associated with its relevant metadata. This can be used to monitor activity and discover potential issues with a specific provider or a channel type.", - "externalDocs": { - "url": "https://docs.novu.co/activity-feed" - } - }, - { - "name": "Tenants", - "description": "A tenant represents a group of users. As a developer, when your apps have organizations, they are referred to as tenants. Tenants in Novu provides the ability to tailor specific notification experiences to users of different groups or organizations.", - "externalDocs": { - "url": "https://docs.novu.co/tenants" - } - }, - { - "name": "Messages", - "description": "A message in Novu represents a notification delivered to a recipient on a particular channel. Messages contain information about the request that triggered its delivery, a view of the data sent to the recipient, and a timeline of its lifecycle events. Learn more about messages.", - "externalDocs": { - "url": "https://docs.novu.co/workflows/messages" - } - }, - { - "name": "Organizations", - "description": "An organization serves as a separate entity within your Novu account. Each organization you create has its own separate integration store, workflows, subscribers, and API keys. This separation of resources allows you to manage multi-tenant environments and separate domains within a single account.", - "externalDocs": { - "url": "https://docs.novu.co/platform/organizations" - } - }, - { - "name": "Execution Details", - "description": "Execution details are used to track the execution of a workflow. They provided detailed information on the execution of a workflow, including the status of each step, the input and output of each step, and the overall status of the execution.", - "externalDocs": { - "url": "https://docs.novu.co/activity-feed" - } - } - ], - "servers": [ - { - "url": "https://api.novu.co" - }, - { - "url": "https://eu.api.novu.co" - } - ], - "components": { - "securitySchemes": { - "api-key": { - "type": "apiKey", - "in": "header", - "name": "Authorization", - "description": "API key authentication. Allowed headers-- \"Authorization: ApiKey \"." - } - }, - "schemas": { - "DataWrapperDto": { - "type": "object", - "properties": { - "data": { - "type": "object" - } - }, - "required": [ - "data" - ] - }, - "OrganizationBrandingResponseDto": { - "type": "object", - "properties": { - "direction": { - "enum": [ - "ltr", - "trl" - ], - "type": "string" - }, - "logo": { - "type": "string" - }, - "color": { - "type": "string" - }, - "fontColor": { - "type": "string" - }, - "contentBackground": { - "type": "string" - }, - "fontFamily": { - "type": "string" - } - }, - "required": [ - "logo", - "color", - "fontColor", - "contentBackground" - ] - }, - "IPartnerConfigurationResponseDto": { - "type": "object", - "properties": { - "projectIds": { - "type": "array", - "items": { - "type": "string" - } - }, - "accessToken": { - "type": "string" - }, - "configurationId": { - "type": "string" - }, - "teamId": { - "type": "string" - }, - "partnerType": { - "type": "string", - "enum": [ - "vercel" - ], - "description": "Partner Type Enum" - } - }, - "required": [ - "accessToken", - "configurationId", - "partnerType" - ] - }, - "OrganizationResponseDto": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "logo": { - "type": "string" - }, - "branding": { - "$ref": "#/components/schemas/OrganizationBrandingResponseDto" - }, - "partnerConfigurations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IPartnerConfigurationResponseDto" - } - } - }, - "required": [ - "name", - "branding" - ] - }, - "CreateOrganizationDto": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "logo": { - "type": "string" - }, - "jobTitle": { - "enum": [ - "engineer", - "engineering_manager", - "architect", - "product_manager", - "designer", - "cxo_founder", - "marketing_manager", - "other" - ], - "type": "string" - }, - "domain": { - "type": "string" - }, - "productUseCases": { - "type": "object" - } - }, - "required": [ - "name" - ] - }, - "MemberUserDto": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "email": { - "type": "string" - } - }, - "required": [ - "_id", - "firstName", - "lastName", - "email" - ] - }, - "MemberInviteDTO": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "token": { - "type": "string" - }, - "invitationDate": { - "format": "date-time", - "type": "string" - }, - "answerDate": { - "format": "date-time", - "type": "string" - }, - "_inviterId": { - "type": "string" - } - }, - "required": [ - "email", - "token", - "invitationDate", - "_inviterId" - ] - }, - "MemberResponseDto": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "_userId": { - "type": "string" - }, - "user": { - "$ref": "#/components/schemas/MemberUserDto" - }, - "roles": { - "enum": [ - "admin", - "member" - ], - "type": "string" - }, - "invite": { - "$ref": "#/components/schemas/MemberInviteDTO" - }, - "memberStatus": { - "enum": [ - "new", - "active", - "invited" - ], - "type": "string" - }, - "_organizationId": { - "type": "string" - } - }, - "required": [ - "_id", - "_userId", - "_organizationId" - ] - }, - "UpdateBrandingDetailsDto": { - "type": "object", - "properties": { - "logo": { - "type": "string" - }, - "color": { - "type": "string" - }, - "fontColor": { - "type": "string" - }, - "contentBackground": { - "type": "string" - }, - "fontFamily": { - "type": "string" - } - }, - "required": [ - "logo", - "color", - "fontColor", - "contentBackground" - ] - }, - "RenameOrganizationDto": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - }, - "required": [ - "name" - ] - }, - "EnvironmentResponseDto": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "_organizationId": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "apiKeys": { - "type": "array", - "items": { - "type": "object" - } - }, - "_parentId": { - "type": "string" - } - }, - "required": [ - "name", - "_organizationId", - "identifier", - "_parentId" - ] - }, - "ApiKey": { - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "_userId": { - "type": "string" - } - }, - "required": [ - "key", - "_userId" - ] - }, - "ExecutionDetailsResponseDto": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "_organizationId": { - "type": "string" - }, - "_jobId": { - "type": "string" - }, - "_environmentId": { - "type": "string" - }, - "_notificationId": { - "type": "string" - }, - "_notificationTemplateId": { - "type": "string" - }, - "_subscriberId": { - "type": "string" - }, - "_messageId": { - "type": "string" - }, - "providerId": { - "type": "string" - }, - "transactionId": { - "type": "string" - }, - "channel": { - "type": "string", - "enum": [ - "in_app", - "email", - "sms", - "chat", - "push", - "digest", - "trigger", - "delay", - "custom" - ] - }, - "detail": { - "type": "string" - }, - "source": { - "type": "string", - "enum": [ - "Credentials", - "Internal", - "Payload", - "Webhook" - ] - }, - "status": { - "type": "string", - "enum": [ - "Success", - "Warning", - "Failed", - "Pending", - "Queued", - "ReadConfirmation" - ] - }, - "isTest": { - "type": "boolean" - }, - "isRetry": { - "type": "boolean" - }, - "createdAt": { - "type": "string" - } - }, - "required": [ - "_organizationId", - "_jobId", - "_environmentId", - "_notificationId", - "_notificationTemplateId", - "_subscriberId", - "transactionId", - "channel", - "detail", - "source", - "status", - "isTest", - "isRetry" - ] - }, - "NotificationGroup": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "_environmentId": { - "type": "string" - }, - "_organizationId": { - "type": "string" - }, - "_parentId": { - "type": "string" - } - }, - "required": [ - "name", - "_environmentId", - "_organizationId" - ] - }, - "PreferenceChannels": { - "type": "object", - "properties": { - "email": { - "type": "boolean" - }, - "sms": { - "type": "boolean" - }, - "in_app": { - "type": "boolean" - }, - "chat": { - "type": "boolean" - }, - "push": { - "type": "boolean" - } - } - }, - "DigestRegularMetadata": { - "type": "object", - "properties": { - "amount": { - "type": "number" - }, - "unit": { - "type": "string", - "enum": [ - "seconds", - "minutes", - "hours", - "days", - "weeks", - "months" - ] - }, - "digestKey": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "regular", - "backoff" - ] - }, - "backoff": { - "type": "boolean" - }, - "backoffAmount": { - "type": "number" - }, - "backoffUnit": { - "type": "string", - "enum": [ - "seconds", - "minutes", - "hours", - "days", - "weeks", - "months" - ] - }, - "updateMode": { - "type": "boolean" - } - }, - "required": [ - "type" - ] - }, - "TimedConfig": { - "type": "object", - "properties": { - "atTime": { - "type": "string" - }, - "weekDays": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday", - "sunday" - ] - } - }, - "monthDays": { - "type": "array", - "items": { - "type": "string" - } - }, - "ordinal": { - "type": "string", - "enum": [ - "1", - "2", - "3", - "4", - "5", - "last" - ] - }, - "ordinalValue": { - "type": "string", - "enum": [ - "day", - "weekday", - "weekend", - "sunday", - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday" - ] - }, - "monthlyType": { - "type": "string", - "enum": [ - "each", - "on" - ] - } - } - }, - "DigestTimedMetadata": { - "type": "object", - "properties": { - "amount": { - "type": "number" - }, - "unit": { - "type": "string", - "enum": [ - "seconds", - "minutes", - "hours", - "days", - "weeks", - "months" - ] - }, - "digestKey": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "timed" - ] - }, - "timed": { - "$ref": "#/components/schemas/TimedConfig" - } - }, - "required": [ - "type" - ] - }, - "DelayRegularMetadata": { - "type": "object", - "properties": { - "amount": { - "type": "number" - }, - "unit": { - "type": "string", - "enum": [ - "seconds", - "minutes", - "hours", - "days", - "weeks", - "months" - ] - }, - "type": { - "type": "string", - "enum": [ - "regular" - ] - } - }, - "required": [ - "type" - ] - }, - "DelayScheduledMetadata": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "scheduled" - ] - }, - "delayPath": { - "type": "string" - } - }, - "required": [ - "type", - "delayPath" - ] - }, - "MessageTemplate": { - "type": "object", - "properties": {} - }, - "FieldFilterPart": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "value": { - "type": "string" - }, - "operator": { - "type": "string", - "enum": [ - "LARGER", - "SMALLER", - "LARGER_EQUAL", - "SMALLER_EQUAL", - "EQUAL", - "NOT_EQUAL", - "ALL_IN", - "ANY_IN", - "NOT_IN", - "BETWEEN", - "NOT_BETWEEN", - "LIKE", - "NOT_LIKE", - "IN" - ] - }, - "on": { - "type": "string", - "enum": [ - "subscriber", - "payload" - ] - } - }, - "required": [ - "field", - "value", - "operator", - "on" - ] - }, - "StepFilter": { - "type": "object", - "properties": { - "isNegated": { - "type": "boolean" - }, - "type": { - "type": "string", - "enum": [ - "BOOLEAN", - "TEXT", - "DATE", - "NUMBER", - "STATEMENT", - "LIST", - "MULTI_LIST", - "GROUP" - ] - }, - "value": { - "type": "string", - "enum": [ - "AND", - "OR" - ] - }, - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FieldFilterPart" - } - } - }, - "required": [ - "isNegated", - "type", - "value", - "children" - ] - }, - "NotificationStepVariant": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "uuid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "_templateId": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "shouldStopOnFail": { - "type": "boolean" - }, - "template": { - "$ref": "#/components/schemas/MessageTemplate" - }, - "filters": { - "type": "array", - "items": { - "$ref": "#/components/schemas/StepFilter" - } - }, - "_parentId": { - "type": "object" - }, - "metadata": { - "oneOf": [ - { - "$ref": "#/components/schemas/DigestRegularMetadata" - }, - { - "$ref": "#/components/schemas/DigestTimedMetadata" - }, - { - "$ref": "#/components/schemas/DelayRegularMetadata" - }, - { - "$ref": "#/components/schemas/DelayScheduledMetadata" - } - ] - }, - "replyCallback": { - "type": "object" - } - } - }, - "NotificationStep": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "uuid": { - "type": "string" - }, - "name": { - "type": "string" - }, - "_templateId": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "shouldStopOnFail": { - "type": "boolean" - }, - "template": { - "$ref": "#/components/schemas/MessageTemplate" - }, - "filters": { - "type": "array", - "items": { - "$ref": "#/components/schemas/StepFilter" - } - }, - "_parentId": { - "type": "object" - }, - "metadata": { - "oneOf": [ - { - "$ref": "#/components/schemas/DigestRegularMetadata" - }, - { - "$ref": "#/components/schemas/DigestTimedMetadata" - }, - { - "$ref": "#/components/schemas/DelayRegularMetadata" - }, - { - "$ref": "#/components/schemas/DelayScheduledMetadata" - } - ] - }, - "replyCallback": { - "type": "object" - }, - "variants": { - "$ref": "#/components/schemas/NotificationStepVariant" - } - } - }, - "NotificationTriggerVariable": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - }, - "required": [ - "name" - ] - }, - "NotificationTrigger": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "event" - ] - }, - "identifier": { - "type": "string" - }, - "variables": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NotificationTriggerVariable" - } - }, - "subscriberVariables": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NotificationTriggerVariable" - } - } - }, - "required": [ - "type", - "identifier", - "variables" - ] - }, - "WorkflowResponse": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "draft": { - "type": "boolean" - }, - "preferenceSettings": { - "$ref": "#/components/schemas/PreferenceChannels" - }, - "critical": { - "type": "boolean" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "steps": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NotificationStep" - } - }, - "_organizationId": { - "type": "string" - }, - "_creatorId": { - "type": "string" - }, - "_environmentId": { - "type": "string" - }, - "triggers": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NotificationTrigger" - } - }, - "_notificationGroupId": { - "type": "string" - }, - "_parentId": { - "type": "string" - }, - "deleted": { - "type": "boolean" - }, - "deletedAt": { - "type": "string" - }, - "deletedBy": { - "type": "string" - }, - "notificationGroup": { - "$ref": "#/components/schemas/NotificationGroup" - }, - "data": { - "type": "object" - }, - "workflowIntegrationStatus": { - "type": "object" - } - }, - "required": [ - "name", - "description", - "active", - "draft", - "preferenceSettings", - "critical", - "tags", - "steps", - "_organizationId", - "_creatorId", - "_environmentId", - "triggers", - "_notificationGroupId", - "deleted", - "deletedAt", - "deletedBy" - ] - }, - "WorkflowsResponseDto": { - "type": "object", - "properties": { - "totalCount": { - "type": "number" - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WorkflowResponse" - } - }, - "pageSize": { - "type": "number" - }, - "page": { - "type": "number" + { + "name": "Feeds", + "description": "Novu provides a notification activity feed that monitors every outgoing message associated with its relevant metadata. This can be used to monitor activity and discover potential issues with a specific provider or a channel type.", + "externalDocs": { + "url": "https://docs.novu.co/activity-feed" + } + }, + { + "name": "Tenants", + "description": "A tenant represents a group of users. As a developer, when your apps have organizations, they are referred to as tenants. Tenants in Novu provides the ability to tailor specific notification experiences to users of different groups or organizations.", + "externalDocs": { + "url": "https://docs.novu.co/tenants" + } + }, + { + "name": "Messages", + "description": "A message in Novu represents a notification delivered to a recipient on a particular channel. Messages contain information about the request that triggered its delivery, a view of the data sent to the recipient, and a timeline of its lifecycle events. Learn more about messages.", + "externalDocs": { + "url": "https://docs.novu.co/workflows/messages" + } + }, + { + "name": "Organizations", + "description": "An organization serves as a separate entity within your Novu account. Each organization you create has its own separate integration store, workflows, subscribers, and API keys. This separation of resources allows you to manage multi-tenant environments and separate domains within a single account.", + "externalDocs": { + "url": "https://docs.novu.co/platform/organizations" + } + }, + { + "name": "Execution Details", + "description": "Execution details are used to track the execution of a workflow. They provided detailed information on the execution of a workflow, including the status of each step, the input and output of each step, and the overall status of the execution.", + "externalDocs": { + "url": "https://docs.novu.co/activity-feed" + } + } + ], + "servers": [ + { + "url": "https://api.novu.co" + }, + { + "url": "https://eu.api.novu.co" + } + ], + "components": { + "securitySchemes": { + "api-key": { + "type": "apiKey", + "in": "header", + "name": "Authorization", + "description": "API key authentication. Allowed headers-- \"Authorization: ApiKey \u003Capi_key\u003E\"." + } + }, + "schemas": { + "DataWrapperDto": { + "type": "object", + "properties": { + "data": { + "type": "object" } }, "required": [ - "totalCount", - "data", - "pageSize", - "page" + "data" ] }, - "UpdateWorkflowRequestDto": { + "EnvironmentResponseDto": { "type": "object", "properties": { - "name": { + "_id": { "type": "string" }, - "tags": { - "type": "array", - "items": { - "type": "string" - } + "name": { + "type": "string" }, - "description": { - "type": "string", - "maxLength": 300 + "_organizationId": { + "type": "string" }, "identifier": { "type": "string" }, - "steps": { + "apiKeys": { "type": "array", "items": { - "$ref": "#/components/schemas/NotificationStep" + "type": "string" } }, - "notificationGroupId": { + "_parentId": { "type": "string" }, - "critical": { - "type": "boolean" - }, - "preferenceSettings": { - "$ref": "#/components/schemas/PreferenceChannels" - }, - "data": { - "type": "object" + "slug": { + "type": "string" } }, "required": [ "name", - "notificationGroupId" - ] - }, - "DataBooleanDto": { - "type": "object", - "properties": { - "data": { - "type": "boolean" - } - }, - "required": [ - "data" + "_organizationId", + "identifier", + "_parentId" ] }, - "VariablesResponseDto": { + "ApiKey": { "type": "object", "properties": { - "translations": { - "type": "object" + "key": { + "type": "string" }, - "system": { - "type": "object" + "_userId": { + "type": "string" } }, "required": [ - "translations", - "system" + "key", + "_userId" ] }, - "CreateWorkflowRequestDto": { + "ExecutionDetailsResponseDto": { "type": "object", "properties": { - "name": { + "_id": { "type": "string" }, - "notificationGroupId": { + "_organizationId": { "type": "string" }, - "notificationGroup": { - "type": "object" + "_jobId": { + "type": "string" }, - "tags": { - "type": "array", - "items": { - "type": "string" - } + "_environmentId": { + "type": "string" }, - "description": { - "type": "string", - "maxLength": 1000 + "_notificationId": { + "type": "string" }, - "steps": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NotificationStep" - } + "_notificationTemplateId": { + "type": "string" }, - "active": { - "type": "boolean" + "_subscriberId": { + "type": "string" }, - "draft": { - "type": "boolean", - "deprecated": true + "_messageId": { + "type": "string" }, - "critical": { - "type": "boolean" + "providerId": { + "type": "string" }, - "preferenceSettings": { - "$ref": "#/components/schemas/PreferenceChannels" + "transactionId": { + "type": "string" + }, + "channel": { + "type": "string", + "enum": [ + "in_app", + "email", + "sms", + "chat", + "push", + "digest", + "trigger", + "delay", + "custom" + ] }, - "blueprintId": { + "detail": { "type": "string" }, - "data": { - "type": "object" - } - }, - "required": [ - "name", - "notificationGroupId", - "steps" - ] - }, - "ChangeWorkflowStatusRequestDto": { - "type": "object", - "properties": { - "active": { + "source": { + "type": "string", + "enum": [ + "Credentials", + "Internal", + "Payload", + "Webhook" + ] + }, + "status": { + "type": "string", + "enum": [ + "Success", + "Warning", + "Failed", + "Pending", + "Queued", + "ReadConfirmation" + ] + }, + "isTest": { "type": "boolean" + }, + "isRetry": { + "type": "boolean" + }, + "createdAt": { + "type": "string" } }, "required": [ - "active" + "_organizationId", + "_jobId", + "_environmentId", + "_notificationId", + "_notificationTemplateId", + "_subscriberId", + "transactionId", + "channel", + "detail", + "source", + "status", + "isTest", + "isRetry" ] }, "TriggerEventResponseDto": { @@ -17518,8 +10542,7 @@ "type": "object", "properties": { "topicKey": { - "type": "string", - "example": "topic_key" + "type": "string" }, "type": { "enum": [ @@ -17549,38 +10572,6 @@ } } }, - "ChannelCredentialsDto": { - "type": "object", - "properties": { - "webhookUrl": { - "type": "string" - }, - "deviceTokens": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "SubscriberChannelDto": { - "type": "object", - "properties": { - "integrationIdentifier": { - "type": "string" - }, - "providerId": { - "type": "object" - }, - "credentials": { - "$ref": "#/components/schemas/ChannelCredentialsDto" - } - }, - "required": [ - "providerId", - "credentials" - ] - }, "SubscriberPayloadDto": { "type": "object", "properties": { @@ -17613,7 +10604,7 @@ "channels": { "type": "array", "items": { - "$ref": "#/components/schemas/SubscriberChannelDto" + "type": "string" } } }, @@ -17696,6 +10687,12 @@ "$ref": "#/components/schemas/TenantPayloadDto" } ] + }, + "bridgeUrl": { + "type": "string" + }, + "controls": { + "type": "object" } }, "required": [ @@ -17779,170 +10776,136 @@ "payload" ] }, - "ActivityNotificationSubscriberResponseDto": { + "DataBooleanDto": { "type": "object", "properties": { - "firstName": { - "type": "string" + "data": { + "type": "boolean" + } + }, + "required": [ + "data" + ] + }, + "ActivitiesResponseDto": { + "type": "object", + "properties": { + "hasMore": { + "type": "boolean" }, - "_id": { - "type": "string" + "data": { + "type": "array", + "items": { + "type": "string" + } }, - "lastName": { - "type": "string" + "pageSize": { + "type": "number" }, - "email": { - "type": "string" + "page": { + "type": "number" + } + }, + "required": [ + "hasMore", + "data", + "pageSize", + "page" + ] + }, + "ActivityStatsResponseDto": { + "type": "object", + "properties": { + "weeklySent": { + "type": "number" }, - "phone": { - "type": "string" + "monthlySent": { + "type": "number" } }, "required": [ - "_id" + "weeklySent", + "monthlySent" ] }, - "ActivityNotificationTemplateResponseDto": { + "ActivityGraphStatesResponse": { "type": "object", "properties": { "_id": { "type": "string" }, - "name": { - "type": "string" + "count": { + "type": "number" }, - "triggers": { + "templates": { "type": "array", "items": { - "$ref": "#/components/schemas/NotificationTrigger" + "type": "string" + } + }, + "channels": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "in_app", + "email", + "sms", + "chat", + "push" + ] } } }, "required": [ - "name", - "triggers" + "_id", + "count", + "templates", + "channels" ] }, - "ActivityNotificationExecutionDetailResponseDto": { + "ActivityNotificationSubscriberResponseDto": { "type": "object", "properties": { - "_id": { - "type": "string" - }, - "_jobId": { + "firstName": { "type": "string" }, - "status": { - "enum": [ - "Success", - "Warning", - "Failed", - "Pending", - "Queued", - "ReadConfirmation" - ], + "_id": { "type": "string" }, - "detail": { + "lastName": { "type": "string" }, - "isRetry": { - "type": "boolean" - }, - "isTest": { - "type": "boolean" - }, - "providerId": { - "type": "object" - }, - "raw": { + "email": { "type": "string" }, - "source": { - "enum": [ - "Credentials", - "Internal", - "Payload", - "Webhook" - ], - "type": "string" - } - }, - "required": [ - "_id", - "_jobId", - "status", - "detail", - "isRetry", - "isTest", - "providerId", - "source" - ] - }, - "MessageTemplateDto": { - "type": "object", - "properties": {} - }, - "ActivityNotificationStepResponseDto": { - "type": "object", - "properties": { - "_id": { + "phone": { "type": "string" - }, - "active": { - "type": "boolean" - }, - "filters": { - "$ref": "#/components/schemas/StepFilter" - }, - "template": { - "$ref": "#/components/schemas/MessageTemplateDto" } }, "required": [ - "_id", - "active", - "filters" + "_id" ] }, - "ActivityNotificationJobResponseDto": { + "ActivityNotificationTemplateResponseDto": { "type": "object", "properties": { "_id": { "type": "string" }, - "type": { + "name": { "type": "string" }, - "digest": { - "type": "object" - }, - "executionDetails": { + "triggers": { "type": "array", "items": { - "$ref": "#/components/schemas/ActivityNotificationExecutionDetailResponseDto" + "type": "string" } - }, - "step": { - "$ref": "#/components/schemas/ActivityNotificationStepResponseDto" - }, - "payload": { - "type": "object" - }, - "providerId": { - "type": "object" - }, - "status": { - "type": "string" } }, "required": [ - "_id", - "type", - "executionDetails", - "step", - "providerId", - "status" + "name", + "triggers" ] }, "ActivityNotificationResponseDto": { @@ -18000,7 +10963,7 @@ "jobs": { "type": "array", "items": { - "$ref": "#/components/schemas/ActivityNotificationJobResponseDto" + "type": "string" } } }, @@ -18010,83 +10973,6 @@ "transactionId" ] }, - "ActivitiesResponseDto": { - "type": "object", - "properties": { - "hasMore": { - "type": "boolean" - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ActivityNotificationResponseDto" - } - }, - "pageSize": { - "type": "number" - }, - "page": { - "type": "number" - } - }, - "required": [ - "hasMore", - "data", - "pageSize", - "page" - ] - }, - "ActivityStatsResponseDto": { - "type": "object", - "properties": { - "weeklySent": { - "type": "number" - }, - "monthlySent": { - "type": "number" - } - }, - "required": [ - "weeklySent", - "monthlySent" - ] - }, - "ActivityGraphStatesResponse": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "count": { - "type": "number" - }, - "templates": { - "type": "array", - "items": { - "type": "string" - } - }, - "channels": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "in_app", - "email", - "sms", - "chat", - "push" - ] - } - } - }, - "required": [ - "_id", - "count", - "templates", - "channels" - ] - }, "NotificationGroupResponseDto": { "type": "object", "properties": { @@ -18260,16 +11146,102 @@ "state": { "type": "string" }, - "externalLink": { - "type": "string" + "externalLink": { + "type": "string" + }, + "channelId": { + "type": "string" + }, + "phoneNumberIdentification": { + "type": "string" + }, + "accessKey": { + "type": "string" + } + } + }, + "FieldFilterPart": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "value": { + "type": "string" + }, + "operator": { + "type": "string", + "enum": [ + "LARGER", + "SMALLER", + "LARGER_EQUAL", + "SMALLER_EQUAL", + "EQUAL", + "NOT_EQUAL", + "ALL_IN", + "ANY_IN", + "NOT_IN", + "BETWEEN", + "NOT_BETWEEN", + "LIKE", + "NOT_LIKE", + "IN" + ] + }, + "on": { + "type": "string", + "enum": [ + "subscriber", + "payload" + ] + } + }, + "required": [ + "field", + "value", + "operator", + "on" + ] + }, + "StepFilter": { + "type": "object", + "properties": { + "isNegated": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "BOOLEAN", + "TEXT", + "DATE", + "NUMBER", + "STATEMENT", + "LIST", + "MULTI_LIST", + "GROUP" + ] }, - "channelId": { - "type": "string" + "value": { + "type": "string", + "enum": [ + "AND", + "OR" + ] }, - "phoneNumberIdentification": { - "type": "string" + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldFilterPart" + } } - } + }, + "required": [ + "isNegated", + "type", + "value", + "children" + ] }, "IntegrationResponseDto": { "type": "object", @@ -18408,6 +11380,10 @@ "credentials": { "$ref": "#/components/schemas/CredentialsDto" }, + "removeNovuBranding": { + "type": "boolean", + "description": "If true, the Novu branding will be removed from the Inbox component" + }, "check": { "type": "boolean" }, @@ -18419,112 +11395,6 @@ } } }, - "ChangeResponseDto": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "_creatorId": { - "type": "string" - }, - "_environmentId": { - "type": "string" - }, - "_organizationId": { - "type": "string" - }, - "_entityId": { - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "type": { - "enum": [ - "Feed", - "MessageTemplate", - "Layout", - "DefaultLayout", - "NotificationTemplate", - "NotificationGroup", - "TranslationGroup", - "Translation" - ], - "type": "string" - }, - "change": { - "type": "object" - }, - "createdAt": { - "type": "string" - }, - "_parentId": { - "type": "string" - } - }, - "required": [ - "_creatorId", - "_environmentId", - "_organizationId", - "_entityId", - "enabled", - "type", - "change", - "createdAt" - ] - }, - "ChangesResponseDto": { - "type": "object", - "properties": { - "totalCount": { - "type": "number" - }, - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ChangeResponseDto" - } - }, - "pageSize": { - "type": "number" - }, - "page": { - "type": "number" - } - }, - "required": [ - "totalCount", - "data", - "pageSize", - "page" - ] - }, - "DataNumberDto": { - "type": "object", - "properties": { - "data": { - "type": "number" - } - }, - "required": [ - "data" - ] - }, - "BulkApplyChangeDto": { - "type": "object", - "properties": { - "changeIds": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "changeIds" - ] - }, "PaginatedResponseDto": { "type": "object", "properties": { @@ -18683,6 +11553,13 @@ "$ref": "#/components/schemas/ChannelSettings" } }, + "topics": { + "description": "Topics that subscriber belongs to", + "type": "array", + "items": { + "type": "string" + } + }, "isOnline": { "type": "boolean" }, @@ -18749,7 +11626,7 @@ "channels": { "type": "array", "items": { - "$ref": "#/components/schemas/SubscriberChannelDto" + "type": "string" } } }, @@ -18763,7 +11640,7 @@ "subscribers": { "type": "array", "items": { - "$ref": "#/components/schemas/CreateSubscriberRequestDto" + "type": "string" } } }, @@ -18794,6 +11671,12 @@ }, "data": { "type": "object" + }, + "channels": { + "type": "array", + "items": { + "type": "string" + } } } }, @@ -18902,6 +11785,26 @@ "triggers" ] }, + "PreferenceChannels": { + "type": "object", + "properties": { + "email": { + "type": "boolean" + }, + "sms": { + "type": "boolean" + }, + "in_app": { + "type": "boolean" + }, + "chat": { + "type": "boolean" + }, + "push": { + "type": "boolean" + } + } + }, "Preference": { "type": "object", "properties": { @@ -18969,86 +11872,198 @@ } }, "required": [ - "preference" + "preference" + ] + }, + "ChannelPreference": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "in_app", + "email", + "sms", + "chat", + "push" + ], + "description": "The type of channel that is enabled or not" + }, + "enabled": { + "type": "boolean", + "description": "If channel is enabled or not" + } + }, + "required": [ + "type", + "enabled" + ] + }, + "UpdateSubscriberPreferenceRequestDto": { + "type": "object", + "properties": { + "channel": { + "description": "The subscriber preferences for every ChannelTypeEnum for the workflow assigned.", + "allOf": [ + { + "$ref": "#/components/schemas/ChannelPreference" + } + ] + }, + "enabled": { + "type": "boolean", + "description": "Sets if the workflow is fully enabled for all channels or not for the subscriber." + } + } + }, + "UpdateSubscriberGlobalPreferencesRequestDto": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable or disable the subscriber global preferences." + }, + "preferences": { + "description": "The subscriber global preferences for every ChannelTypeEnum.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ChannelPreference" + } + } + } + }, + "FeedResponseDto": { + "type": "object", + "properties": { + "totalCount": { + "type": "number" + }, + "hasMore": { + "type": "boolean" + }, + "data": { + "type": "array", + "items": { + "type": "string" + } + }, + "pageSize": { + "type": "number" + }, + "page": { + "type": "number" + } + }, + "required": [ + "hasMore", + "data", + "pageSize", + "page" + ] + }, + "UnseenCountResponse": { + "type": "object", + "properties": { + "count": { + "type": "number" + } + }, + "required": [ + "count" ] }, - "ChannelPreference": { + "MessageMarkAsRequestDto": { "type": "object", "properties": { - "type": { - "type": "string", + "messageId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "markAs": { "enum": [ - "in_app", - "email", - "sms", - "chat", - "push" + "read", + "seen", + "unread", + "unseen" ], - "description": "The type of channel that is enabled or not" - }, - "enabled": { - "type": "boolean", - "description": "If channel is enabled or not" + "type": "string" } }, "required": [ - "type", - "enabled" + "messageId", + "markAs" ] }, - "UpdateSubscriberPreferenceRequestDto": { + "MessageEntity": { "type": "object", "properties": { - "channel": { - "description": "The subscriber preferences for every ChannelTypeEnum for the workflow assigned.", - "allOf": [ - { - "$ref": "#/components/schemas/ChannelPreference" - } - ] - }, - "enabled": { - "type": "boolean", - "description": "Sets if the workflow is fully enabled for all channels or not for the subscriber." - } + } }, - "UpdateSubscriberGlobalPreferencesRequestDto": { + "MarkAllMessageAsRequestDto": { "type": "object", "properties": { - "enabled": { - "type": "boolean", - "description": "Enable or disable the subscriber global preferences." + "feedIdentifier": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ], + "description": "Optional feed identifier or array of feed identifiers" }, - "preferences": { - "description": "The subscriber global preferences for every ChannelTypeEnum.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ChannelPreference" - } + "markAs": { + "enum": [ + "read", + "seen", + "unread", + "unseen" + ], + "type": "string", + "description": "Mark all subscriber messages as read, unread, seen or unseen" } - } + }, + "required": [ + "markAs" + ] }, "EmailBlockStyles": { "type": "object", "properties": { "textAlign": { + "type": "string", "enum": [ + "center", "left", - "right", - "center" - ], - "type": "string" + "right" + ] } - } + }, + "required": [ + "textAlign" + ] }, "EmailBlock": { "type": "object", "properties": { "type": { "enum": [ - "text", - "button" + "button", + "text" ], "type": "string" }, @@ -19079,12 +12094,11 @@ "type": "object", "properties": { "type": { + "type": "string", "enum": [ "primary", - "secondary", - "clicked" - ], - "type": "string" + "secondary" + ] }, "content": { "type": "string" @@ -19105,12 +12119,11 @@ "type": "object" }, "type": { + "type": "string", "enum": [ "primary", - "secondary", - "clicked" - ], - "type": "string" + "secondary" + ] } } }, @@ -19118,11 +12131,11 @@ "type": "object", "properties": { "status": { + "type": "string", "enum": [ "pending", "done" - ], - "type": "string" + ] }, "buttons": { "type": "array", @@ -19155,425 +12168,343 @@ "data" ] }, - "Actor": { - "type": "object", - "properties": { - "data": { - "type": "string", - "nullable": true - }, - "type": { - "enum": [ - "none", - "user", - "system_icon", - "system_custom" - ], - "type": "string" - } - }, - "required": [ - "data", - "type" - ] - }, - "NotificationDto": { + "NotificationGroup": { "type": "object", "properties": { "_id": { "type": "string" }, - "_templateId": { + "name": { "type": "string" }, "_environmentId": { "type": "string" }, - "_messageTemplateId": { - "type": "string" - }, "_organizationId": { "type": "string" }, - "_notificationId": { - "type": "string" - }, - "_subscriberId": { - "type": "string" - }, - "_feedId": { - "type": "string" - }, - "_jobId": { - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "updatedAt": { - "type": "string" - }, - "expireAt": { - "type": "string" - }, - "actor": { - "$ref": "#/components/schemas/Actor" - }, - "subscriber": { - "$ref": "#/components/schemas/SubscriberResponseDto" - }, - "transactionId": { - "type": "string" - }, - "templateIdentifier": { - "type": "string" - }, - "providerId": { + "_parentId": { "type": "string" + } + }, + "required": [ + "name", + "_environmentId", + "_organizationId" + ] + }, + "DigestRegularMetadata": { + "type": "object", + "properties": { + "amount": { + "type": "number" }, - "content": { - "type": "string" + "unit": { + "type": "string", + "enum": [ + "seconds", + "minutes", + "hours", + "days", + "weeks", + "months" + ] }, - "subject": { + "digestKey": { "type": "string" }, - "channel": { + "type": { + "type": "string", "enum": [ - "in_app", - "email", - "sms", - "chat", - "push" - ], - "type": "string" + "regular", + "backoff" + ] }, - "read": { + "backoff": { "type": "boolean" }, - "seen": { - "type": "boolean" + "backoffAmount": { + "type": "number" }, - "deleted": { + "backoffUnit": { + "type": "string", + "enum": [ + "seconds", + "minutes", + "hours", + "days", + "weeks", + "months" + ] + }, + "updateMode": { "type": "boolean" + } + }, + "required": [ + "type" + ] + }, + "TimedConfig": { + "type": "object", + "properties": { + "atTime": { + "type": "string" }, - "deviceTokens": { + "weekDays": { "type": "array", "items": { - "type": "string" + "type": "string", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ] } }, - "cta": { - "$ref": "#/components/schemas/MessageCTA" + "monthDays": { + "type": "array", + "items": { + "type": "string" + } }, - "status": { + "ordinal": { "type": "string", "enum": [ - "sent", - "error", - "warning" + "1", + "2", + "3", + "4", + "5", + "last" ] }, - "payload": { - "type": "object", - "description": "The payload that was used to send the notification trigger" + "ordinalValue": { + "type": "string", + "enum": [ + "day", + "weekday", + "weekend", + "sunday", + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday" + ] }, - "overrides": { - "type": "object", - "description": "Provider specific overrides used when triggering the notification" + "monthlyType": { + "type": "string", + "enum": [ + "each", + "on" + ] } - }, - "required": [ - "_templateId", - "_environmentId", - "_messageTemplateId", - "_organizationId", - "_notificationId", - "_subscriberId", - "_feedId", - "_jobId", - "transactionId", - "content", - "channel", - "read", - "seen", - "deleted", - "cta", - "status", - "payload", - "overrides" - ] + } }, - "FeedResponseDto": { + "DigestTimedMetadata": { "type": "object", "properties": { - "_id": { - "type": "string" + "amount": { + "type": "number" }, - "name": { - "type": "string" + "unit": { + "type": "string", + "enum": [ + "seconds", + "minutes", + "hours", + "days", + "weeks", + "months" + ] }, - "identifier": { + "digestKey": { "type": "string" }, - "_environmentId": { - "type": "string" + "type": { + "type": "string", + "enum": [ + "timed" + ] }, - "_organizationId": { - "type": "string" + "timed": { + "$ref": "#/components/schemas/TimedConfig" } }, "required": [ - "name", - "identifier", - "_environmentId", - "_organizationId" + "type" ] }, - "UnseenCountResponse": { + "DelayRegularMetadata": { "type": "object", "properties": { - "count": { + "amount": { "type": "number" + }, + "unit": { + "type": "string", + "enum": [ + "seconds", + "minutes", + "hours", + "days", + "weeks", + "months" + ] + }, + "type": { + "type": "string", + "enum": [ + "regular" + ] } }, "required": [ - "count" + "type" ] }, - "MessageMarkAsRequestDto": { + "DelayScheduledMetadata": { "type": "object", "properties": { - "messageId": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } + "type": { + "type": "string", + "enum": [ + "scheduled" ] }, - "markAs": { - "enum": [ - "read", - "seen", - "unread", - "unseen" - ], + "delayPath": { "type": "string" } }, "required": [ - "messageId", - "markAs" + "type", + "delayPath" ] }, - "MessageEntity": { - "type": "object", - "properties": {} - }, - "MarkAllMessageAsRequestDto": { + "MessageTemplate": { "type": "object", "properties": { - "feedIdentifier": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ], - "description": "Optional feed identifier or array of feed identifiers" - }, - "markAs": { - "enum": [ - "read", - "seen", - "unread", - "unseen" - ], - "type": "string", - "description": "Mark all subscriber messages as read, unread, seen or unseen" - } - }, - "required": [ - "markAs" - ] + + } }, - "MessageResponseDto": { + "NotificationStepVariant": { "type": "object", "properties": { "_id": { "type": "string" }, - "_templateId": { - "type": "string" - }, - "_environmentId": { - "type": "string" - }, - "_messageTemplateId": { + "uuid": { "type": "string" }, - "_organizationId": { + "name": { "type": "string" }, - "_notificationId": { + "_templateId": { "type": "string" }, - "_subscriberId": { - "type": "string" + "active": { + "type": "boolean" }, - "subscriber": { - "$ref": "#/components/schemas/SubscriberResponseDto" + "shouldStopOnFail": { + "type": "boolean" }, "template": { - "$ref": "#/components/schemas/WorkflowResponse" - }, - "templateIdentifier": { - "type": "string" - }, - "createdAt": { - "type": "string" + "$ref": "#/components/schemas/MessageTemplate" }, - "lastSeenDate": { - "type": "string" + "filters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StepFilter" + } }, - "lastReadDate": { - "type": "string" + "_parentId": { + "type": "object" }, - "content": { + "metadata": { "oneOf": [ { - "$ref": "#/components/schemas/EmailBlock" + "$ref": "#/components/schemas/DigestRegularMetadata" }, { - "type": "string" + "$ref": "#/components/schemas/DigestTimedMetadata" + }, + { + "$ref": "#/components/schemas/DelayRegularMetadata" + }, + { + "$ref": "#/components/schemas/DelayScheduledMetadata" } ] }, - "transactionId": { - "type": "string" - }, - "subject": { - "type": "string" - }, - "channel": { - "enum": [ - "in_app", - "email", - "sms", - "chat", - "push" - ], - "type": "string" - }, - "read": { - "type": "boolean" - }, - "seen": { - "type": "boolean" - }, - "email": { + "replyCallback": { + "type": "object" + } + } + }, + "NotificationStep": { + "type": "object", + "properties": { + "_id": { "type": "string" }, - "phone": { + "uuid": { "type": "string" }, - "directWebhookUrl": { + "name": { "type": "string" }, - "providerId": { + "_templateId": { "type": "string" }, - "deviceTokens": { + "active": { + "type": "boolean" + }, + "shouldStopOnFail": { + "type": "boolean" + }, + "template": { + "$ref": "#/components/schemas/MessageTemplate" + }, + "filters": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/StepFilter" } }, - "title": { - "type": "string" - }, - "cta": { - "$ref": "#/components/schemas/MessageCTA" - }, - "_feedId": { - "type": "string", - "nullable": true + "_parentId": { + "type": "object" }, - "status": { - "type": "string", - "enum": [ - "sent", - "error", - "warning" + "metadata": { + "oneOf": [ + { + "$ref": "#/components/schemas/DigestRegularMetadata" + }, + { + "$ref": "#/components/schemas/DigestTimedMetadata" + }, + { + "$ref": "#/components/schemas/DelayRegularMetadata" + }, + { + "$ref": "#/components/schemas/DelayScheduledMetadata" + } ] }, - "errorId": { - "type": "string" - }, - "errorText": { - "type": "string" - }, - "payload": { - "type": "object", - "description": "The payload that was used to send the notification trigger" - }, - "overrides": { - "type": "object", - "description": "Provider specific overrides used when triggering the notification" - } - }, - "required": [ - "_templateId", - "_environmentId", - "_messageTemplateId", - "_organizationId", - "_notificationId", - "_subscriberId", - "createdAt", - "content", - "transactionId", - "channel", - "read", - "seen", - "cta", - "status", - "errorId", - "errorText", - "payload", - "overrides" - ] - }, - "MarkMessageActionAsSeenDto": { - "type": "object", - "properties": { - "status": { - "enum": [ - "pending", - "done" - ], - "type": "string", - "description": "Message action status" + "replyCallback": { + "type": "object" }, - "payload": { - "type": "object", - "description": "Message action payload" + "variants": { + "$ref": "#/components/schemas/NotificationStepVariant" } - }, - "required": [ - "status" - ] + } }, - "CreateFeedRequestDto": { + "NotificationTriggerVariable": { "type": "object", "properties": { "name": { @@ -19584,114 +12515,188 @@ "name" ] }, - "CreateLayoutResponseDto": { + "NotificationTrigger": { "type": "object", "properties": { - "_id": { + "type": { + "type": "string", + "enum": [ + "event" + ] + }, + "identifier": { "type": "string" + }, + "variables": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationTriggerVariable" + } + }, + "subscriberVariables": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationTriggerVariable" + } } }, "required": [ - "_id" + "type", + "identifier", + "variables" ] }, - "GetLayoutResponseDto": { + "WorkflowResponse": { "type": "object", "properties": { "_id": { "type": "string" }, - "_organizationId": { + "name": { "type": "string" }, - "_environmentId": { + "description": { "type": "string" }, - "_creatorId": { - "type": "string" + "active": { + "type": "boolean" }, - "name": { - "type": "string" + "draft": { + "type": "boolean" }, - "identifier": { - "type": "string" + "preferenceSettings": { + "$ref": "#/components/schemas/PreferenceChannels" }, - "description": { - "type": "string" + "critical": { + "type": "boolean" }, - "channel": { - "enum": [ - "in_app", - "email", - "sms", - "chat", - "push" - ], + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "steps": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NotificationStep" + } + }, + "_organizationId": { "type": "string" }, - "content": { + "_creatorId": { "type": "string" }, - "contentType": { + "_environmentId": { "type": "string" }, - "variables": { + "triggers": { "type": "array", "items": { - "type": "object" + "$ref": "#/components/schemas/NotificationTrigger" } }, - "isDefault": { - "type": "boolean" + "_notificationGroupId": { + "type": "string" }, - "isDeleted": { + "_parentId": { + "type": "string" + }, + "deleted": { "type": "boolean" }, - "createdAt": { + "deletedAt": { "type": "string" }, - "updatedAt": { + "deletedBy": { "type": "string" }, - "_parentId": { - "type": "string" + "notificationGroup": { + "$ref": "#/components/schemas/NotificationGroup" + }, + "data": { + "type": "object" + }, + "workflowIntegrationStatus": { + "type": "object" } }, "required": [ + "name", + "description", + "active", + "draft", + "preferenceSettings", + "critical", + "tags", + "steps", "_organizationId", - "_environmentId", "_creatorId", - "name", - "identifier", - "channel", - "content", - "contentType", - "isDefault", - "isDeleted" + "_environmentId", + "triggers", + "_notificationGroupId", + "deleted", + "deletedAt", + "deletedBy" ] }, - "UpdateLayoutResponseDto": { + "MessageResponseDto": { "type": "object", "properties": { "_id": { "type": "string" }, - "_organizationId": { + "_templateId": { + "type": "string" + }, + "_environmentId": { + "type": "string" + }, + "_messageTemplateId": { + "type": "string" + }, + "_organizationId": { + "type": "string" + }, + "_notificationId": { + "type": "string" + }, + "_subscriberId": { + "type": "string" + }, + "subscriber": { + "$ref": "#/components/schemas/SubscriberResponseDto" + }, + "template": { + "$ref": "#/components/schemas/WorkflowResponse" + }, + "templateIdentifier": { "type": "string" }, - "_environmentId": { + "createdAt": { "type": "string" }, - "_creatorId": { + "lastSeenDate": { "type": "string" }, - "name": { + "lastReadDate": { "type": "string" }, - "identifier": { + "content": { + "oneOf": [ + { + "$ref": "#/components/schemas/EmailBlock" + }, + { + "type": "string" + } + ] + }, + "transactionId": { "type": "string" }, - "description": { + "subject": { "type": "string" }, "channel": { @@ -19704,80 +12709,102 @@ ], "type": "string" }, - "content": { + "read": { + "type": "boolean" + }, + "seen": { + "type": "boolean" + }, + "email": { "type": "string" }, - "contentType": { + "phone": { "type": "string" }, - "variables": { + "directWebhookUrl": { + "type": "string" + }, + "providerId": { + "type": "string" + }, + "deviceTokens": { "type": "array", "items": { - "type": "object" + "type": "string" } }, - "isDefault": { - "type": "boolean" + "title": { + "type": "string" }, - "isDeleted": { - "type": "boolean" + "cta": { + "$ref": "#/components/schemas/MessageCTA" }, - "createdAt": { - "type": "string" + "_feedId": { + "type": "object", + "nullable": true }, - "updatedAt": { + "status": { + "type": "string", + "enum": [ + "sent", + "error", + "warning" + ] + }, + "errorId": { "type": "string" }, - "_parentId": { + "errorText": { "type": "string" + }, + "payload": { + "type": "object", + "description": "The payload that was used to send the notification trigger" + }, + "overrides": { + "type": "object", + "description": "Provider specific overrides used when triggering the notification" } }, "required": [ - "_organizationId", + "_templateId", "_environmentId", - "_creatorId", - "name", - "identifier", - "channel", + "_messageTemplateId", + "_organizationId", + "_notificationId", + "_subscriberId", + "createdAt", "content", - "contentType", - "isDefault", - "isDeleted" + "transactionId", + "channel", + "read", + "seen", + "cta", + "status", + "errorId", + "errorText", + "payload", + "overrides" ] }, - "UpdateLayoutRequestDto": { + "MarkMessageActionAsSeenDto": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "User defined custom name and provided by the user that will name the Layout updated." - }, - "identifier": { - "type": "string", - "description": "User defined custom key that will be a unique identifier for the Layout updated." - }, - "description": { - "type": "string", - "description": "User defined description of the layout" - }, - "content": { + "status": { + "enum": [ + "pending", + "done" + ], "type": "string", - "description": "User defined content for the layout." - }, - "variables": { - "description": "User defined variables to render in the layout placeholders.", - "type": "array", - "items": { - "type": "object" - } + "description": "Message action status" }, - "isDefault": { - "type": "boolean", - "description": "Variable that defines if the layout is chosen as default when creating a layout." + "payload": { + "type": "object", + "description": "Message action payload" } }, "required": [ - "identifier" + "status" ] }, "DeleteMessageResponseDto": { @@ -19802,7 +12829,19 @@ }, "CreateTopicResponseDto": { "type": "object", - "properties": {} + "properties": { + "_id": { + "type": "string", + "description": "The unique identifier for the Topic created." + }, + "key": { + "type": "string", + "description": "User defined custom key and provided by the user that will be an unique identifier for the Topic created." + } + }, + "required": [ + "key" + ] }, "CreateTopicRequestDto": { "type": "object", @@ -20019,135 +13058,10 @@ "name" ] }, - "GetTenantResponseDto": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "name": { - "type": "string" - }, - "data": { - "type": "object" - }, - "_environmentId": { - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "updatedAt": { - "type": "string" - } - }, - "required": [ - "_id", - "identifier", - "_environmentId", - "createdAt", - "updatedAt" - ] - }, - "CreateTenantResponseDto": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "name": { - "type": "string" - }, - "data": { - "type": "object" - }, - "_environmentId": { - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "updatedAt": { - "type": "string" - } - }, - "required": [ - "_id", - "identifier", - "_environmentId", - "createdAt", - "updatedAt" - ] - }, - "CreateTenantRequestDto": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "name": { - "type": "string" - }, - "data": { - "type": "object" - } - }, - "required": [ - "identifier", - "name" - ] - }, - "UpdateTenantResponseDto": { - "type": "object", - "properties": { - "_id": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "name": { - "type": "string" - }, - "data": { - "type": "object" - }, - "_environmentId": { - "type": "string" - }, - "createdAt": { - "type": "string" - }, - "updatedAt": { - "type": "string" - } - }, - "required": [ - "_id", - "identifier", - "_environmentId", - "createdAt", - "updatedAt" - ] - }, - "UpdateTenantRequestDto": { + "GeneratePreviewResponseDto": { "type": "object", "properties": { - "identifier": { - "type": "string" - }, - "name": { - "type": "string" - }, - "data": { - "type": "object" - } + } } }, diff --git a/src/funcs/cancelByTransactionId.ts b/src/funcs/cancel.ts similarity index 98% rename from src/funcs/cancelByTransactionId.ts rename to src/funcs/cancel.ts index 6198c6de..9589a631 100644 --- a/src/funcs/cancelByTransactionId.ts +++ b/src/funcs/cancel.ts @@ -29,7 +29,7 @@ import { Result } from "../types/fp.js"; * Using a previously generated transactionId during the event trigger, * will cancel any active or pending workflows. This is useful to cancel active digests, delays etc... */ -export async function cancelByTransactionId( +export async function cancel( client: NovuCore, transactionId: string, options?: RequestOptions, diff --git a/src/lib/config.ts b/src/lib/config.ts index b62e3d45..c8302a5a 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -55,7 +55,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null { export const SDK_METADATA = { language: "typescript", openapiDocVersion: "1.0", - sdkVersion: "0.0.1-alpha.21", - genVersion: "2.461.4", - userAgent: "speakeasy-sdk/typescript 0.0.1-alpha.21 2.461.4 1.0 @novu/api", + sdkVersion: "0.0.1-alpha.25", + genVersion: "2.462.1", + userAgent: "speakeasy-sdk/typescript 0.0.1-alpha.25 2.462.1 1.0 @novu/api", } as const; diff --git a/src/sdk/sdk.ts b/src/sdk/sdk.ts index 91eb14be..7f057cee 100644 --- a/src/sdk/sdk.ts +++ b/src/sdk/sdk.ts @@ -2,7 +2,7 @@ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ -import { cancelByTransactionId } from "../funcs/cancelByTransactionId.js"; +import { cancel } from "../funcs/cancel.js"; import { trigger } from "../funcs/trigger.js"; import { triggerBroadcast } from "../funcs/triggerBroadcast.js"; import { triggerBulk } from "../funcs/triggerBulk.js"; @@ -126,11 +126,11 @@ export class Novu extends ClientSDK { * Using a previously generated transactionId during the event trigger, * will cancel any active or pending workflows. This is useful to cancel active digests, delays etc... */ - async cancelByTransactionId( + async cancel( transactionId: string, options?: RequestOptions, ): Promise { - return unwrapAsync(cancelByTransactionId( + return unwrapAsync(cancel( this, transactionId, options,