> ## Documentation Index
> Fetch the complete documentation index at: https://novu-c5de82d9-docs-homepage-redesign.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Retrieve subscriber notifications

> Retrieve subscriber in-app (inbox) notifications by its unique key identifier **subscriberId**.



## OpenAPI

````yaml https://spec.speakeasy.com/novu/novu/json-development-with-code-samples get /v1/subscribers/{subscriberId}/notifications/feed
openapi: 3.0.0
info:
  title: Novu API
  description: >-
    Novu REST API. Please see https://docs.novu.co/api-reference for more
    details.
  version: 3.15.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
servers:
  - url: https://api.novu.co
  - url: https://eu.api.novu.co
security:
  - secretKey: []
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: 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/platform/integrations/overview
  - 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: 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: Environments
    description: >-
      Environments allow you to manage different stages of your application
      development lifecycle. Each environment has its own set of API keys and
      configurations, enabling you to separate development, staging, and
      production workflows.
    externalDocs:
      url: https://docs.novu.co/platform/environments
  - name: Layouts
    description: Layouts are reusable wrappers for your email notifications.
    externalDocs:
      url: https://docs.novu.co/platform/workflow/layouts
  - name: Translations
    description: Used to localize your notifications to different languages.
    externalDocs:
      url: https://docs.novu.co/platform/workflow/advanced-features/translations
  - name: Domains
    description: Used to manage your inbound email domains.
    externalDocs:
      url: https://docs.novu.co/platform/domains
externalDocs:
  description: Novu Documentation
  url: https://docs.novu.co
paths:
  /v1/subscribers/{subscriberId}/notifications/feed:
    get:
      tags:
        - Subscribers
      summary: Retrieve subscriber notifications
      description: >-
        Retrieve subscriber in-app (inbox) notifications by its unique key
        identifier **subscriberId**.
      operationId: SubscribersV1Controller_getNotificationsFeed
      parameters:
        - name: subscriberId
          required: true
          in: path
          schema:
            type: string
        - name: page
          required: false
          in: query
          example: 0
          schema:
            minimum: 0
            type: number
        - name: limit
          required: false
          in: query
          example: 10
          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
        - name: idempotency-key
          in: header
          description: A header for idempotency purposes
          required: false
          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/FeedResponseDto'
        '400':
          description: Bad Request
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/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/ErrorDto'
        '401':
          description: Unauthorized
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/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/ErrorDto'
        '403':
          description: Forbidden
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/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/ErrorDto'
        '404':
          description: Not Found
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/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/ErrorDto'
        '405':
          description: Method Not Allowed
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/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/ErrorDto'
        '409':
          description: Conflict
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/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/ErrorDto'
        '413':
          description: Payload Too Large
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/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/ErrorDto'
        '414':
          description: URI Too Long
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDto'
        '415':
          description: Unsupported Media Type
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/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/ErrorDto'
        '422':
          description: Unprocessable Entity
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/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/ValidationErrorDto'
        '429':
          description: 'The client has sent too many requests in a given amount of time. '
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Idempotency-Replay:
              $ref: '#/components/headers/Idempotency-Replay'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                type: string
                example: API rate limit exceeded
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/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/ErrorDto'
        '503':
          description: >-
            The server is currently unable to handle the request due to a
            temporary overload or scheduled maintenance, which will likely be
            alleviated after some delay.
          headers:
            Content-Type:
              $ref: '#/components/headers/Content-Type'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Idempotency-Key:
              $ref: '#/components/headers/Idempotency-Key'
            Idempotency-Replay:
              $ref: '#/components/headers/Idempotency-Replay'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                type: string
                example: Please wait some time, then try again.
      security:
        - secretKey: []
      x-codeSamples:
        - lang: php
          label: PHP
          source: >-
            declare(strict_types=1);


            require 'vendor/autoload.php';


            use novu;

            use novu\Models\Operations;


            $sdk = novu\Novu::builder()
                ->setSecurity(
                    'YOUR_SECRET_KEY_HERE'
                )
                ->build();

            $request = new
            Operations\SubscribersV1ControllerGetNotificationsFeedRequest(
                subscriberId: '<id>',
                page: 0,
                payload: 'btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string like eyJmb28iOjEyM30=',
            );


            $response = $sdk->subscribers->notifications->getFeed(
                request: $request
            );


            if ($response->feedResponseDto !== null) {
                // handle response
            }
        - lang: python
          label: Python
          source: |-
            from novu_py import Novu


            with Novu(
                secret_key="YOUR_SECRET_KEY_HERE",
            ) as novu:

                res = novu.subscribers.notifications.feed(request={
                    "subscriber_id": "<id>",
                    "page": 0,
                    "payload": "btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string like eyJmb28iOjEyM30=",
                })

                # Handle response
                print(res)
        - lang: go
          label: Go
          source: "package main\n\nimport(\n\t\"context\"\n\t\"github.com/novuhq/novu-go/v3\"\n\t\"github.com/novuhq/novu-go/v3/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n    ctx := context.Background()\n\n    s := v3.New(\n        v3.WithSecurity(\"YOUR_SECRET_KEY_HERE\"),\n    )\n\n    res, err := s.Subscribers.Notifications.Feed(ctx, operations.SubscribersV1ControllerGetNotificationsFeedRequest{\n        SubscriberID: \"<id>\",\n        Page: v3.Pointer[float64](0.0),\n        Payload: v3.Pointer(\"btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string like eyJmb28iOjEyM30=\"),\n    })\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res.FeedResponseDto != nil {\n        // handle response\n    }\n}"
        - lang: typescript
          label: TypeScript
          source: |-
            import { Novu } from "@novu/api";

            const novu = new Novu({
              secretKey: "YOUR_SECRET_KEY_HERE",
            });

            async function run() {
              const result = await novu.subscribers.notifications.feed({
                subscriberId: "<id>",
                page: 0,
                payload: "btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string like eyJmb28iOjEyM30=",
              });

              console.log(result);
            }

            run();
        - lang: csharp
          label: Csharp (SDK)
          source: >-
            using Novu;

            using Novu.Models.Components;

            using Novu.Models.Requests;


            var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE");


            SubscribersV1ControllerGetNotificationsFeedRequest req = new
            SubscribersV1ControllerGetNotificationsFeedRequest() {
                SubscriberId = "<id>",
                Page = 0D,
                Payload = "btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string like eyJmb28iOjEyM30=",
            };


            var res = await sdk.SubscribersNotifications.FeedAsync(req);


            // handle response
components:
  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"
    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'
    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'
  schemas:
    FeedResponseDto:
      type: object
      properties:
        totalCount:
          type: number
          description: Total number of notifications available.
          example: 5
        hasMore:
          type: boolean
          description: Indicates if there are more notifications to load.
          example: true
        data:
          description: Array of notifications returned in the response.
          type: array
          items:
            $ref: '#/components/schemas/NotificationFeedItemDto'
        pageSize:
          type: number
          description: The number of notifications returned in this response.
          example: 2
        page:
          type: number
          description: The current page number of the notifications.
          example: 1
      required:
        - hasMore
        - data
        - pageSize
        - page
    ErrorDto:
      type: object
      properties:
        statusCode:
          type: number
          description: HTTP status code of the error response.
          example: 404
        timestamp:
          type: string
          description: Timestamp of when the error occurred.
          example: '2024-12-12T13:00:00Z'
        path:
          type: string
          description: The path where the error occurred.
          example: /api/v1/resource
        message:
          description: Value that failed validation
          oneOf:
            - type: string
              nullable: true
            - type: number
            - type: boolean
            - type: object
              nullable: true
            - type: array
              items:
                anyOf:
                  - type: string
                    nullable: true
                  - type: number
                  - type: boolean
                  - type: object
                    additionalProperties: true
          example: 'xx xx xx '
        ctx:
          type: object
          description: Optional context object for additional error details.
          additionalProperties: true
          example:
            workflowId: some_wf_id
            stepId: some_wf_id
        errorId:
          type: string
          description: >-
            Optional unique identifier for the error, useful for tracking using
            Sentry and 
                  New Relic, only available for 500.
          example: abc123
      required:
        - statusCode
        - timestamp
        - path
    ValidationErrorDto:
      type: object
      properties:
        statusCode:
          type: number
          description: HTTP status code of the error response.
          example: 404
        timestamp:
          type: string
          description: Timestamp of when the error occurred.
          example: '2024-12-12T13:00:00Z'
        path:
          type: string
          description: The path where the error occurred.
          example: /api/v1/resource
        message:
          description: Value that failed validation
          oneOf:
            - type: string
              nullable: true
            - type: number
            - type: boolean
            - type: object
              nullable: true
            - type: array
              items:
                anyOf:
                  - type: string
                    nullable: true
                  - type: number
                  - type: boolean
                  - type: object
                    additionalProperties: true
          example: 'xx xx xx '
        ctx:
          type: object
          description: Optional context object for additional error details.
          additionalProperties: true
          example:
            workflowId: some_wf_id
            stepId: some_wf_id
        errorId:
          type: string
          description: >-
            Optional unique identifier for the error, useful for tracking using
            Sentry and 
                  New Relic, only available for 500.
          example: abc123
        errors:
          type: object
          description: A record of validation errors keyed by field name
          additionalProperties:
            $ref: '#/components/schemas/ConstraintValidation'
          example:
            fieldName1:
              messages:
                - Field is required
                - Must be a valid email address
              value: invalidEmail
            fieldName2:
              messages:
                - Must be at least 18 years old
              value: 17
            fieldName3:
              messages:
                - Must be a boolean value
              value: true
            fieldName4:
              messages:
                - Must be a valid object
              value:
                key: value
            fieldName5:
              messages:
                - Field is missing
              value: null
            fieldName6:
              messages:
                - Undefined value
      required:
        - statusCode
        - timestamp
        - path
        - errors
    NotificationFeedItemDto:
      type: object
      properties:
        _id:
          type: string
          description: Unique identifier for the notification.
          example: 615c1f2f9b0c5b001f8e4e3b
        _templateId:
          type: string
          description: Identifier for the template used to generate the notification.
          example: template_12345
        _environmentId:
          type: string
          description: Identifier for the environment where the notification is sent.
          example: env_67890
        _messageTemplateId:
          type: string
          description: Identifier for the message template used.
          example: message_template_54321
        _organizationId:
          type: string
          description: Identifier for the organization sending the notification.
          example: org_98765
        _notificationId:
          type: string
          description: Unique identifier for the notification instance.
          example: notification_123456
        _subscriberId:
          type: string
          description: Unique identifier for the subscriber receiving the notification.
          example: subscriber_112233
        _feedId:
          type: string
          nullable: true
          description: Identifier for the feed associated with the notification.
          example: feed_445566
        _jobId:
          type: string
          description: Identifier for the job that triggered the notification.
          example: job_778899
        createdAt:
          type: string
          description: Timestamp indicating when the notification was created.
          format: date-time
          nullable: true
          example: '2024-12-10T10:10:59.639Z'
        updatedAt:
          type: string
          nullable: true
          description: Timestamp indicating when the notification was last updated.
          format: date-time
          example: '2024-12-10T10:10:59.639Z'
        actor:
          description: Actor details related to the notification, if applicable.
          allOf:
            - $ref: '#/components/schemas/ActorFeedItemDto'
        subscriber:
          description: Subscriber details associated with this notification.
          allOf:
            - $ref: '#/components/schemas/SubscriberFeedResponseDto'
        transactionId:
          type: string
          description: >-
            Unique identifier for the transaction associated with the
            notification.
          example: transaction_123456
        templateIdentifier:
          type: string
          nullable: true
          description: Identifier for the template used, if applicable.
          example: template_abcdef
        providerId:
          type: string
          nullable: true
          description: Identifier for the provider that sends the notification.
          example: provider_xyz
        content:
          type: string
          description: The main content of the notification.
          example: This is a test notification content.
        subject:
          type: string
          nullable: true
          description: The subject line for email notifications, if applicable.
          example: Test Notification Subject
        channel:
          $ref: '#/components/schemas/ChannelTypeEnum'
        read:
          type: boolean
          description: Indicates whether the notification has been read by the subscriber.
          example: false
        seen:
          type: boolean
          description: Indicates whether the notification has been seen by the subscriber.
          example: true
        archived:
          type: boolean
          description: >-
            Indicates whether the notification has been archived by the
            subscriber.
          example: false
        deviceTokens:
          nullable: true
          description: Device tokens for push notifications, if applicable.
          example:
            - token1
            - token2
          type: array
          items:
            type: string
        cta:
          description: Call-to-action information associated with the notification.
          allOf:
            - $ref: '#/components/schemas/MessageCTA'
        status:
          type: string
          description: Current status of the notification.
          enum:
            - sent
            - error
            - warning
          example: sent
        payload:
          type: object
          description: The payload that was used to send the notification trigger.
          additionalProperties: true
          example:
            key: value
        data:
          type: object
          nullable: true
          description: The data sent with the notification.
          example:
            key: value
          additionalProperties: true
        overrides:
          type: object
          description: Provider-specific overrides used when triggering the notification.
          additionalProperties: true
          example:
            overrideKey: overrideValue
        tags:
          nullable: true
          description: Tags associated with the workflow that triggered the notification.
          example:
            - tag1
            - tag2
          type: array
          items:
            type: string
      required:
        - _id
        - _templateId
        - _environmentId
        - _organizationId
        - _notificationId
        - _subscriberId
        - _jobId
        - transactionId
        - content
        - channel
        - read
        - seen
        - archived
        - cta
        - status
    ConstraintValidation:
      type: object
      properties:
        messages:
          type: array
          items:
            type: string
          description: List of validation error messages
          example:
            - Field is required
            - Invalid format
        value:
          description: Value that failed validation
          oneOf:
            - type: string
              nullable: true
            - type: number
            - type: boolean
            - type: object
            - type: array
              items:
                anyOf:
                  - type: string
                    nullable: true
                  - type: number
                  - type: boolean
                  - type: object
                    additionalProperties: true
          example: 'xx xx xx '
      required:
        - messages
    ActorFeedItemDto:
      type: object
      properties:
        data:
          type: string
          description: The data associated with the actor, can be null if not applicable.
          nullable: true
          example: null
        type:
          $ref: '#/components/schemas/ActorTypeEnum'
      required:
        - data
        - type
    SubscriberFeedResponseDto:
      type: object
      properties:
        _id:
          type: string
          description: >-
            The internal ID generated by Novu for your subscriber. This ID does
            not match the `subscriberId` used in your queries. Refer to
            `subscriberId` for that identifier.
        firstName:
          type: string
          description: The first name of the subscriber.
        lastName:
          type: string
          description: The last name of the subscriber.
        avatar:
          type: string
          description: The URL of the subscriber's avatar image.
        subscriberId:
          type: string
          description: >-
            The identifier used to create this subscriber, which typically
            corresponds to the user ID in your system.
      required:
        - subscriberId
    ChannelTypeEnum:
      type: string
      description: Channel type through which the message is sent
      enum:
        - in_app
        - email
        - sms
        - chat
        - push
    MessageCTA:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ChannelCTATypeEnum'
        data:
          description: Data associated with the call to action
          allOf:
            - $ref: '#/components/schemas/MessageCTAData'
        action:
          description: Action associated with the call to action
          allOf:
            - $ref: '#/components/schemas/MessageAction'
    ActorTypeEnum:
      type: string
      description: The type of the actor, indicating the role in the notification process.
      enum:
        - none
        - user
        - system_icon
        - system_custom
    ChannelCTATypeEnum:
      type: string
      description: Type of call to action
      enum:
        - redirect
    MessageCTAData:
      type: object
      properties:
        url:
          type: string
          description: URL for the call to action
    MessageAction:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/MessageActionStatusEnum'
        buttons:
          description: List of buttons associated with the message action
          type: array
          items:
            $ref: '#/components/schemas/MessageButton'
        result:
          description: Result of the message action
          allOf:
            - $ref: '#/components/schemas/MessageActionResult'
    MessageActionStatusEnum:
      type: string
      description: Status of the message action
      enum:
        - pending
        - done
    MessageButton:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ButtonTypeEnum'
        content:
          type: string
          description: Content of the button
        resultContent:
          type: string
          description: Content of the result when the button is clicked
      required:
        - type
        - content
    MessageActionResult:
      type: object
      properties:
        payload:
          type: object
          description: Payload of the action result
          additionalProperties: true
        type:
          $ref: '#/components/schemas/ButtonTypeEnum'
    ButtonTypeEnum:
      type: string
      description: Type of button for the action result
      enum:
        - primary
        - secondary
  securitySchemes:
    secretKey:
      type: apiKey
      name: Authorization
      in: header
      description: >-
        API key authentication. Allowed headers-- "Authorization: ApiKey
        <novu_secret_key>".
      x-speakeasy-example: YOUR_SECRET_KEY_HERE

````