> ## Documentation Index
> Fetch the complete documentation index at: https://moengage.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Search Campaigns

> This API fetches a list of Push, Email, or SMS campaigns with all current fields and status. You can pass multiple filters to find specific campaigns.


#### Search Capabilities

* Filter by channel, delivery type, status, tags, name, ID, created by, created date
* Include child campaigns (flow nodes, periodic children)
* Include archived campaigns
* Paginated results (max 15 per page)

<Note>
  **Differences in V5**

  The V5 Search Campaigns API (`POST /v5/campaigns/search`) introduces the following behavioral changes:

  * **Single-campaign retrieval** is no longer handled by the search endpoint. Use `GET /v5/campaigns/{campaign_id}` instead.
  * The `campaign_fields.id` field (string) is renamed to `campaign_fields.ids` (array of strings) in V5.
  * The `campaign_fields.delivery_type` field is renamed to `campaign_fields.campaign_delivery_type` in V5. Sending the V1 field name returns zero results with no error.
  * `request_id` is required in V1. In V5, it is optional.
  * The response identifier field `campaign_id` is renamed to `id` in V5.

  For a full comparison, see [V1 vs. V5 Search Campaigns: Behavioral Differences](/api/campaigns/search-campaigns-v5-migration).
</Note>

#### Rate Limits

| Rate Limit Name            | Rate Limit                                                                         |
| :------------------------- | :--------------------------------------------------------------------------------- |
| Search campaign per second | The total number of search campaign requests per second per client allowed is 10.  |
| Search campaign per minute | The total number of search campaign requests per minute per client allowed is 100. |
| Search campaign per hour   | The total number of search campaign requests per hour per client allowed is 6000.  |

<Note>
  **Notes**

  * Breaching the limits will reject the request.
  * Per hour and per day limits will consider the calculation based on the last hour and last 24 hrs respectively.
</Note>


## OpenAPI

````yaml /api/campaigns/campaigns.yaml post /campaigns/search
openapi: 3.0.3
info:
  title: MoEngage Campaigns API
  version: '2025-11-20'
  description: >
    The MoEngage Campaigns API allows you to create and manage Push and Email
    campaigns programmatically.


    **Supported Channels:**

    - Push (Android, iOS, Web)

    - Email


    **Supported Delivery Types:**

    - ONE_TIME

    - PERIODIC

    - EVENT_TRIGGERED

    - BUSINESS_EVENT_TRIGGERED

    - DEVICE_TRIGGERED (Push only)

    - LOCATION_TRIGGERED (Push only)

    - BROADCAST_LIVE_ACTIVITY (Push iOS only)

     | Rate Limit Name | Rate Limit |
     | :--- | :--- |
     | Create campaign per second | The total number of create campaign operations per second per client allowed is 5. |
     | Create campaign per minute | The total number of create campaign operations per minute per client allowed is 25. |
     | Create campaign per hour | The total number of create campaign operations per hour per client allowed is 100. |

     You can create 5 campaigns per minute, 25 campaigns per hour, and 100 campaigns per day.

     <Note>
       * Breaching the limits will reject the request.
        * Per hour and per day limits will consider the calculation based on the last hour and last 24 hrs respectively.
     </Note>

    For more details, visit [MoEngage Developer
    Documentation](https://developers.moengage.com).
  contact:
    name: MoEngage Developer Team
    email: support@moengage.com
    url: https://developers.moengage.com
servers:
  - url: https://api-{dc}.moengage.com/core-services/v1
    description: MoEngage Campaigns API Server
    variables:
      dc:
        default: '01'
        description: >-
          The ‘dc’ in the API Endpoint URL refers to the MoEngage Data Center
          (DC). MoEngage hosts each customer in a different DC. You can find
          your DC number and replace the value of ‘dc’ in the URL by referring
          to the DC and API endpoint mapping
          [here](/api/introduction#data-centers). Your MoEngage Data Center (DC)
          can be 01, 02, 03, 04, 05, 06, or 101.
security:
  - BasicAuth: []
paths:
  /campaigns/search:
    post:
      tags:
        - Get Campaign Details
      summary: Search Campaigns
      description: >
        This API fetches a list of Push, Email, or SMS campaigns with all
        current fields and status. You can pass multiple filters to find
        specific campaigns.
      operationId: search_campaigns
      parameters:
        - $ref: '#/components/parameters/MOE-APPKEY'
      requestBody:
        description: >
          Provide the search criteria and pagination parameters for finding
          campaigns.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CampaignSearchRequest'
            examples:
              search_by_channel_email:
                summary: Search by Channel (Email)
                value:
                  request_id: search_req_12345
                  campaign_fields:
                    channels:
                      - EMAIL
                  limit: 15
                  page: 1
              search_by_channel_push:
                summary: Search by Channel (Push)
                value:
                  request_id: search_req_67890
                  campaign_fields:
                    channels:
                      - PUSH
                  limit: 15
                  page: 1
              search_by_channel_sms:
                summary: Search by Channel (SMS)
                value:
                  request_id: search_req_sms
                  campaign_fields:
                    channels:
                      - SMS
                  limit: 15
                  page: 1
              search_by_delivery_type:
                summary: Search by Delivery Type
                value:
                  request_id: search_req_periodic
                  campaign_fields:
                    delivery_type:
                      - PERIODIC
                  limit: 15
                  page: 1
              search_by_created_date:
                summary: Search by Created Date
                value:
                  request_id: search_req_date
                  campaign_fields:
                    created_date:
                      from_date: '2024-06-16'
                      to_date: '2024-06-21'
                  limit: 10
                  page: 1
              search_by_campaign_name:
                summary: Search by Campaign Name
                value:
                  request_id: search_req_name
                  campaign_fields:
                    name: Summer Sale Campaign
                  limit: 5
                  page: 1
              search_by_campaign_id:
                summary: Search by Campaign ID
                value:
                  request_id: search_req_id
                  campaign_fields:
                    id: camp_abc123xyz
                  limit: 1
                  page: 1
              search_all_filters:
                summary: Search with Multiple Filters
                value:
                  request_id: search_req_all
                  campaign_fields:
                    channels:
                      - PUSH
                    created_by:
                      - john.doe@example.com
                    created_date:
                      from_date: '2024-01-01'
                      to_date: '2024-12-31'
                    delivery_type:
                      - ONE_TIME
                    status:
                      - ACTIVE
                    tags:
                      - summer
                      - sale
                  include_child_campaigns: true
                  include_archive_campaigns: false
                  limit: 15
                  page: 1
      responses:
        '200':
          description: Successfully retrieved campaign list
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CampaignDetailsResponse'
              examples:
                email_campaign:
                  summary: Email Campaign Response
                  value:
                    - campaign_id: camp_email_123
                      status: Active
                      channel: EMAIL
                      campaign_delivery_type: PERIODIC
                      created_by: john.doe@example.com
                      created_at: '2024-07-04 08:00:54.847000'
                      sent_time: '2024-07-04 20:32:00'
                      basic_details:
                        name: Weekly Newsletter
                        content_type: PROMOTIONAL
                        subscription_category: marketing
                        tags:
                          - newsletter
                      connector:
                        connector_type: SENDGRID
                        connector_name: default
                push_campaign:
                  summary: Push Campaign Response
                  value:
                    - campaign_id: camp_push_456
                      status: Scheduled
                      channel: PUSH
                      campaign_delivery_type: ONE_TIME
                      created_by: jane.smith@example.com
                      created_at: '2025-06-26 12:09:20.209000'
                      sent_time: '2025-06-26 12:47:00.196000'
                      basic_details:
                        name: Flash Sale Notification
                        platforms:
                          - ANDROID
                          - IOS
                        tags:
                          - sale
                sms_campaign:
                  summary: SMS Campaign Response
                  value:
                    - campaign_id: camp_sms_789
                      status: Active
                      channel: SMS
                      campaign_delivery_type: ONE_TIME
                      created_by: admin@example.com
                      created_at: '2024-05-20 06:04:50.505000'
                      sent_time: '2024-05-20 06:04:50.505000'
                      sender_name: MoEngage
                      basic_details:
                        name: Discount Code SMS
                        tags:
                          - discount
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  parameters:
    MOE-APPKEY:
      name: MOE-APPKEY
      in: header
      required: true
      description: >
        This is the Workspace ID of your MoEngage account that must be passed
        with the request. You can find it in the MoEngage dashboard at
        **Settings** > **Account** > **APIs** > **Workspace ID (earlier app
        id)**.
      schema:
        type: string
      example: YOUR_WORKSPACE_ID
  schemas:
    CampaignSearchRequest:
      type: object
      required:
        - request_id
        - limit
        - page
      properties:
        request_id:
          type: string
          description: A unique identifier for this search request.
          example: search_req_12345
        campaign_fields:
          $ref: '#/components/schemas/CampaignSearchFields'
        include_child_campaigns:
          type: boolean
          description: >
            Whether to include child campaigns (flow nodes and periodic
            children).


            Set to `true` to fetch details of periodic child campaigns and flow
            campaign nodes. Flow campaigns can be identified by the presence of
            `flow_id` and `flow_name` in the response.
          default: false
        include_archive_campaigns:
          type: boolean
          description: Whether to include archived campaigns in the results.
          default: false
        limit:
          type: integer
          description: |
            The number of campaigns to display per page.

            **Maximum:** 15
          minimum: 1
          maximum: 15
          example: 10
        page:
          type: integer
          description: >
            The page number to retrieve.


            For example, if there are 200 campaigns and the limit is 10, there
            will be 20 pages.
          minimum: 1
          example: 1
    CampaignDetailsResponse:
      type: object
      description: Detailed information about a campaign.
      properties:
        campaign_id:
          type: string
          description: The unique ID of the campaign.
          example: camp_abc123xyz
        status:
          type: string
          enum:
            - ACTIVE
            - SCHEDULED
            - PAUSED
            - SENT
            - STOPPED
            - ARCHIVED
          description: The current status of the campaign.
        channel:
          type: string
          enum:
            - PUSH
            - EMAIL
            - SMS
          description: The communication channel.
        campaign_delivery_type:
          type: string
          enum:
            - ONE_TIME
            - PERIODIC
            - EVENT_TRIGGERED
            - BUSINESS_EVENT_TRIGGERED
            - DEVICE_TRIGGERED
            - LOCATION_TRIGGERED
            - BROADCAST_LIVE_ACTIVITY
          description: The delivery type of the campaign.
        created_by:
          type: string
          format: email
          description: The email ID of the user who created the campaign.
        updated_by:
          type: string
          format: email
          description: The email ID of the user who last updated the campaign.
        created_at:
          type: string
          description: The timestamp when the campaign was created, in UTC.
          example: '2024-07-04 08:00:54.847000'
        updated_at:
          type: string
          description: The timestamp when the campaign was last updated, in UTC.
        sent_time:
          type: string
          description: The timestamp when the campaign was sent, in UTC.
          example: '2024-07-04 20:32:00'
        flow_id:
          type: string
          description: |
            The flow ID (only for flow campaigns).

            Only applicable when `include_child_campaigns` is true.
        flow_name:
          type: string
          description: |
            The flow name (only for flow campaigns).

            Only applicable when `include_child_campaigns` is true.
        parent_id:
          type: string
          description: >
            The campaign ID of the parent campaign.


            Only applicable for periodic child campaigns when
            `include_child_campaigns` is true.
        basic_details:
          type: object
          description: |
            Basic details of the campaign.

            Structure varies by channel (Push/Email/SMS).
        campaign_content:
          type: object
          description: The campaign content including locales and variations.
        trigger_condition:
          type: object
          description: >
            Trigger condition details for event-triggered campaigns.

            Structure varies by channel (Push supports INTELLIGENT_DELAY, Email
            does not).
        segmentation_details:
          $ref: '#/components/schemas/SegmentationDetails'
        scheduling_details:
          $ref: '#/components/schemas/SchedulingDetails'
        delivery_controls:
          type: object
          description: Delivery control settings for the campaign.
        advanced:
          type: object
          description: Advanced campaign settings (for Push campaigns).
        conversion_goal_details:
          $ref: '#/components/schemas/ConversionGoalDetails'
        control_group_details:
          $ref: '#/components/schemas/ControlGroupDetails'
        utm_params:
          $ref: '#/components/schemas/UTMParams'
        connector:
          type: object
          description: |
            Connector configuration (for Email and SMS campaigns).
          properties:
            connector_type:
              type: string
              example: SENDGRID
            connector_name:
              type: string
              example: default
        sender_name:
          type: string
          description: |
            The sender name configured for the campaign.

            Only applicable for SMS campaigns.
        campaign_audience_limit:
          $ref: '#/components/schemas/CampaignAudienceLimit'
    CampaignSearchFields:
      type: object
      description: Filter criteria for searching campaigns.
      properties:
        channels:
          type: array
          items:
            type: string
            enum:
              - PUSH
              - EMAIL
              - SMS
          description: Filter campaigns by channel type.
          example:
            - PUSH
            - EMAIL
        created_by:
          type: array
          items:
            type: string
            format: email
          description: |
            Filter campaigns by the email ID of the user who created them.

            **Note:** Only email IDs are supported.
          example:
            - john.doe@example.com
        created_date:
          type: object
          description: Filter campaigns by creation date range.
          properties:
            from_date:
              type: string
              format: date
              description: |
                The starting point of the date range.

                **Recommended format:** YYYY-MM-DD
              example: '2024-01-01'
            to_date:
              type: string
              format: date
              description: |
                The ending point of the date range.

                **Recommended format:** YYYY-MM-DD
              example: '2024-12-31'
        delivery_type:
          type: array
          items:
            type: string
            enum:
              - ONE_TIME
              - PERIODIC
              - EVENT_TRIGGERED
              - BUSINESS_EVENT_TRIGGERED
              - DEVICE_TRIGGERED
              - LOCATION_TRIGGERED
              - BROADCAST_LIVE_ACTIVITY
          description: Filter campaigns by delivery type.
          example:
            - ONE_TIME
            - PERIODIC
        id:
          type: string
          description: Filter by specific campaign ID.
          example: camp_abc123xyz
        name:
          type: string
          description: Filter by campaign name.
          example: Summer Sale Campaign
        status:
          type: array
          items:
            type: string
            enum:
              - ACTIVE
              - SCHEDULED
              - PAUSED
              - SENT
              - STOPPED
              - ARCHIVED
          description: Filter campaigns by status.
          example:
            - ACTIVE
            - SCHEDULED
        tags:
          type: array
          items:
            type: string
          description: Filter campaigns by tags.
          example:
            - sale
            - promotion
    SegmentationDetails:
      type: object
      description: Defines the target audience for the campaign.
      properties:
        included_filters:
          $ref: '#/components/schemas/FilterGroup'
        excluded_filters:
          $ref: '#/components/schemas/FilterGroup'
        is_all_user_campaign:
          type: boolean
          description: Whether to include all users in the campaign.
        send_campaign_to_opt_out_users:
          type: boolean
          description: Whether to send the campaign to users who have opted out.
    SchedulingDetails:
      type: object
      description: >-
        Defines when the campaign should be sent. All date-time values must be
        passed in UTC.
      required:
        - delivery_type
      properties:
        delivery_type:
          type: string
          enum:
            - ASAP
            - AT_FIXED_TIME
            - SEND_IN_BTS
            - SEND_IN_USER_TIMEZONE
          description: When to deliver the campaign.
        start_time:
          type: string
          format: date-time
          description: >
            The start time for the campaign in ISO 8601 format. Pass this value
            in UTC.


            Example: "2024-06-21T12:59:00"
        expiry_time:
          type: string
          format: date-time
          description: >-
            The expiry time for the campaign in ISO 8601 format. Pass this value
            in UTC.
        periodic_details:
          $ref: '#/components/schemas/PeriodicDetails'
        bts_details:
          $ref: '#/components/schemas/BTSDetails'
        user_timezone_details:
          $ref: '#/components/schemas/UserTimezoneDetails'
    ConversionGoalDetails:
      type: object
      description: Configuration for tracking campaign conversion goals.
      properties:
        attribution_window_in_hours:
          type: integer
          description: The attribution window in hours.
          example: 36
        goals:
          type: array
          items:
            $ref: '#/components/schemas/Goal'
          description: List of conversion goals to track.
    ControlGroupDetails:
      type: object
      description: Configuration for control groups.
      properties:
        is_campaign_control_group_enabled:
          type: boolean
          description: Whether the campaign control group is enabled.
        campaign_control_group_percentage:
          type: integer
          description: |
            The percentage of users added to the exclusion list.

            **Required** if is_campaign_control_group_enabled is true.
          minimum: 0
          maximum: 100
        is_global_control_group_enabled:
          type: boolean
          description: Whether the global control group is enabled.
    UTMParams:
      type: object
      description: UTM parameters for tracking campaign performance.
      required:
        - utm_source
        - utm_medium
      properties:
        utm_source:
          type: string
          description: |
            The source of the traffic (e.g., YouTube, Instagram, Google).

            **Required** when using UTM parameters.
          example: google
        utm_medium:
          type: string
          description: |
            The channel type (e.g., Push, SMS, Email).

            **Required** when using UTM parameters.
          example: email
        utm_campaign:
          type: string
          description: The name of the campaign (e.g., Newyear, Bigbillionday).
          example: summer_sale
        utm_term:
          type: string
          description: Search terms for paid traffic (e.g., Mobile+sale).
        utm_content:
          type: string
          description: The content element that differentiates links (e.g., banner, video).
        utm_custom:
          type: string
          description: Custom UTM parameter (maximum of 5 custom parameters).
    CampaignAudienceLimit:
      type: object
      description: Configuration for limiting campaign audience.
      properties:
        limit:
          type: integer
          description: >
            The maximum number of times an audience can be included or targeted
            within the campaign.
        metrics:
          type: string
          description: >
            The type of measurement being tracked (e.g., impressions, clicks,
            conversions).
        frequency:
          type: string
          description: >
            How often the limit and metrics are applied (e.g., daily, weekly,
            monthly).
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: The error code (e.g., "400 Bad Request").
            message:
              type: string
              description: Description of why the request failed.
            target:
              type: string
              description: The target of the error.
            details:
              type: array
              items:
                type: object
                properties:
                  target:
                    type: string
                  message:
                    type: string
            request_id:
              type: string
              description: The request ID associated with this error.
    FilterGroup:
      type: object
      description: >
        A group of filters combined with a logical operator.


        For detailed segmentation payload and supported fields, refer to [Create
        Custom Segment](/api/filter-segments/create-filter-segment).
      required:
        - filter_operator
        - filters
      properties:
        filter_operator:
          type: string
          enum:
            - and
            - or
          description: The logical operator to combine filters.
        filters:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/UserAttributeFilter'
              - $ref: '#/components/schemas/ActionFilter'
              - $ref: '#/components/schemas/CustomSegmentFilter'
          description: |
            The list of filters to be combined using the filter operator.

            Supported filter types:
            - User attributes-based filters
            - Action-based filters (with or without attributes)
            - Custom segments
    PeriodicDetails:
      type: object
      description: |
        Configuration for periodic campaigns.

        **Required** for PERIODIC campaigns.
      properties:
        sending_frequency:
          type: string
          enum:
            - DAILY
            - WEEKLY
            - MONTHLY
          description: The frequency to send the campaign.
        repeat_frequency:
          type: integer
          description: The repeat frequency of the campaign.
        no_of_occurences:
          type: integer
          description: The number of occurrences of the campaign.
        repeat_on_date_of_month:
          type: array
          items:
            type: integer
          description: |
            The dates of the month on which the campaign should be repeated.

            Example: [5, 25] to send on the 5th and 25th of each month.
        repeat_on_days_of_week:
          type: array
          items:
            type: string
            enum:
              - MONDAY
              - TUESDAY
              - WEDNESDAY
              - THURSDAY
              - FRIDAY
              - SATURDAY
              - SUNDAY
          description: The days of the week on which the campaign should repeat.
        repeat_on_days_of_week_for_month:
          type: array
          items:
            type: object
            properties:
              week_granularity:
                type: string
                enum:
                  - FIRST
                  - SECOND
                  - THIRD
                  - FOURTH
                  - LAST
              repeat_on_days_of_week:
                type: array
                items:
                  type: string
                  enum:
                    - MONDAY
                    - TUESDAY
                    - WEDNESDAY
                    - THURSDAY
                    - FRIDAY
                    - SATURDAY
                    - SUNDAY
          description: Configuration for repeating on specific weeks of the month.
    BTSDetails:
      type: object
      description: >
        Best Time to Send (BTS) configuration.


        BTS provides a prescriptive time slot to send a campaign to increase the
        chance of user interaction.
      properties:
        send_in_bts:
          type: boolean
          description: Whether to send the campaign at the best time.
        if_user_bts_is_not_available:
          type: string
          description: When to send the campaign if the user's best time is not available.
        if_user_bts_outside_time_window:
          type: string
          description: >-
            When to send the campaign if the user's best time is outside the
            time window.
        window_end_time:
          type: string
          description: The window end time.
          example: 6:43 am
    UserTimezoneDetails:
      type: object
      description: Configuration for sending in the user's timezone.
      properties:
        send_in_user_timezone:
          type: boolean
          description: >-
            Whether to send the campaign on a specific date and time within the
            user's timezone.
        send_if_user_timezone_has_passed:
          type: boolean
          description: Whether to send the campaign if the user's timezone has passed.
    Goal:
      type: object
      description: A single conversion goal configuration.
      properties:
        goal_name:
          type: string
          description: The name of the goal.
          example: Goal 1
        goal_event_name:
          type: string
          description: The event name associated with this goal.
        goal_event_attribute:
          $ref: '#/components/schemas/GoalEventAttribute'
        is_primary_goal:
          type: boolean
          description: Whether this is the primary goal.
        revenue_attribute:
          type: string
          description: The revenue attribute to track.
        revenue_currency:
          type: string
          description: The currency for revenue tracking.
    UserAttributeFilter:
      type: object
      description: Filter based on user attributes.
      required:
        - filter_type
        - data_type
        - name
        - operator
      properties:
        filter_type:
          type: string
          enum:
            - user_attributes
        data_type:
          type: string
          enum:
            - string
            - double
            - datetime
            - bool
          description: The data type of the attribute being filtered.
        category:
          type: string
          description: The category of the attribute (e.g., "Tracked Standard Attribute").
        name:
          type: string
          description: The name of the attribute to filter on (e.g., "uid").
        operator:
          type: string
          description: >
            The operator to use in the filter. Allowed values depend on
            data_type:

            - bool: is, exists

            - double: in, between, lessThan, greaterThan, exists

            - string: in, contains, containsInTheFollowing,
            startWithInTheFollowing, endsWithInTheFollowing, exists, is

            - datetime: inTheLast, on, between, before, after, inTheNext,
            exists, today
        value:
          description: The value to filter on (not required for 'exists' operator).
        case_sensitive:
          type: boolean
          description: Whether the filter comparison should be case-sensitive.
        negate:
          type: boolean
          description: Whether to negate the filter condition.
        project_name:
          type: string
          description: |
            The name of the project associated with the user attributes.

            **Required** if the Portfolio feature is enabled in your workspace.
    ActionFilter:
      type: object
      description: Filter based on user actions/events.
      required:
        - filter_type
        - action_name
      properties:
        filter_type:
          type: string
          enum:
            - actions
        action_name:
          type: string
          description: The name of the action/event to filter on.
        execution:
          type: object
          properties:
            type:
              type: string
              enum:
                - atleast
                - atmost
                - exactly
            count:
              type: integer
        executed:
          type: boolean
          description: Whether the action was executed.
        attributes:
          $ref: '#/components/schemas/FilterGroup'
        condition:
          type: string
          description: The condition type (e.g., "IF").
    CustomSegmentFilter:
      type: object
      description: Filter using a custom segment.
      required:
        - filter_type
        - id
      properties:
        filter_type:
          type: string
          enum:
            - custom_segments
        name:
          type: string
          description: The name of the custom segment.
        id:
          type: string
          description: The ID of the custom segment.
    GoalEventAttribute:
      type: object
      description: Attributes associated with the conversion goal event.
      properties:
        name:
          type: string
          description: The name of the goal event attribute.
        condition:
          type: string
          description: >-
            The condition used while creating the goal (e.g., "is", "contains",
            "between").
        data_type:
          type: string
          enum:
            - STRING
            - DOUBLE
            - BOOL
            - NUMBER
            - GEOPOINT
            - DATETIME
            - ARRAY_DOUBLE
            - ARRAY_STRING
            - OBJECT
            - ARRAY_OBJECT
          description: The data type of the attribute.
        value:
          type: string
          description: >
            The value of the goal event attribute.

            Supported data types: STRING, DOUBLE, BOOL, NUMBER, GEOPOINT,
            DATETIME, ARRAY_DOUBLE, ARRAY_STRING.
        value1:
          type: string
          description: >
            A secondary value, used for conditions like 'between'.

            Supported data types: STRING, DOUBLE, BOOL, NUMBER, GEOPOINT,
            DATETIME, ARRAY_DOUBLE, ARRAY_STRING.
        negate:
          type: boolean
          description: Whether to negate the filter condition.
        value_type:
          type: string
          description: The type of value being filtered.
        array_filter_type:
          type: string
          description: The logical filter type for array attributes.
        filters:
          type: array
          description: A list of sub-filters used when data_type is OBJECT or ARRAY_OBJECT.
          items:
            type: object
        is_case_sensitive:
          type: boolean
          description: Whether the goal event attribute is case-sensitive.
  responses:
    BadRequest:
      description: Bad Request - Missing or invalid parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: 400 Bad Request
              message: request_id key is mandatory field
              target: request_id
              details:
                - target: request_id
                  message: request_id key is mandatory field
              request_id: '11'
    Unauthorized:
      description: Authentication Failure - Invalid or missing authentication credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: 401 Authentication error
              message: Authentication required
              details:
                - code: InvalidValue
                  target: APP_SECRET_KEY
                  message:
                    - code: InvalidValue
                      target: APP_SECRET_KEY
                      message: Invalid APP_SECRET_KEY is provided.
              request_id: ''
    InternalServerError:
      description: Internal Server Error - Unexpected system error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: 500 Internal Server Error
              message: Something went wrong. Please contact Moengage team
              target: string
              details:
                - message: 'Expecting value: line 1 column 1 (char 0)'
                  target: ''
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: >
        Authentication is done via Basic Auth. This requires a base64-encoded
        string of your credentials in the format 'username:password'.


        - **Username**: Use your MoEngage workspace ID (also known as the App
        ID). You can find it in the MoEngage dashboard at **Settings** >
        **Account** > **APIs** > **Workspace ID (earlier app id)**.

        - **Password**: Use your API Key, which you can find within the
        **Campaign report/Business events/Custom templates/Catalog API/Inform
        Report** tile.


        For more information on authentication and getting your credentials,
        refer
        [here](https://www.moengage.com/docs/api/introduction#getting-your-credentials).

````