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

# List Campaigns

> Returns all campaigns visible to the current user (both types: `TARGET_USER` and `KEYWORD` — user-facing 'Prospects campaign' and 'Topic campaign' respectively).



## OpenAPI

````yaml https://api.goextrovert.com/client/v2/docs-json get /client/v2/campaign
openapi: 3.0.0
info:
  title: Extrovert Client API
  description: >-
    Public API for Extrovert platform integration. Use your API key for
    authentication.
  version: '1.0'
  contact: {}
servers:
  - url: https://api.goextrovert.com/
    description: API Server
security: []
tags: []
paths:
  /client/v2/campaign:
    get:
      tags:
        - Campaigns
      summary: List Campaigns
      description: >-
        Returns all campaigns visible to the current user (both types:
        `TARGET_USER` and `KEYWORD` — user-facing 'Prospects campaign' and
        'Topic campaign' respectively).
      operationId: CampaignClientApiController_getList
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetListResponseDto'
        '401':
          description: Invalid or missing API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientApiErrorResponseDto'
      security:
        - api-key: []
components:
  schemas:
    GetListResponseDto:
      type: object
      properties:
        status:
          type: string
          description: Response status
          enum:
            - success
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: Campaign ID
                example: 8d256aa6-9b12-49a7-93ee-bf41634b5b60
              updatedAt:
                type: string
                description: Campaign update timestamp
                example: '2025-06-30T14:02:07.456Z'
              createdAt:
                type: string
                description: Campaign creation timestamp
                example: '2025-06-30T14:02:07.456Z'
              name:
                type: string
                description: Campaign name
              ownerContext:
                description: Context linked to the campaign (id + name).
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Entity ID
                    example: 8d256aa6-9b12-49a7-93ee-bf41634b5b60
                  name:
                    type: string
                    description: Entity name
                required:
                  - id
                  - name
              ownerStyle:
                description: >-
                  Style linked to the campaign. See `campaignOwnerStyleSchema`
                  below.
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Style ID
                    example: 8d256aa6-9b12-49a7-93ee-bf41634b5b60
                  updatedAt:
                    type: string
                    description: Style update timestamp
                    example: '2025-06-30T14:02:07.456Z'
                  createdAt:
                    type: string
                    description: Style creation timestamp
                    example: '2025-06-30T14:02:07.456Z'
                  name:
                    type: string
                    description: Style name
                  isLearningModeEnabled:
                    type: boolean
                    description: >-
                      If `true`, comments the user both approved AND edited are
                      auto-saved as CommentExamples on this Style (capped at 20
                      entries). Untouched auto-approved comments and DMs are not
                      learned.
                required:
                  - id
                  - updatedAt
                  - createdAt
                  - name
                  - isLearningModeEnabled
              postMaxAgeDays:
                type: number
                description: Legacy field, ignored at runtime. Always `30`. Read-only.
              isActive:
                type: boolean
                description: >-
                  Whether the campaign is running. When `false` (paused), the
                  post feed stops updating, no DM drafts are suggested, and no
                  connection requests are sent.
              sharedUsers:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      description: User ID
                      example: 8d256aa6-9b12-49a7-93ee-bf41634b5b60
                    updatedAt:
                      type: string
                      description: User update timestamp
                      example: '2025-06-30T14:02:07.456Z'
                    createdAt:
                      type: string
                      description: User creation timestamp
                      example: '2025-06-30T14:02:07.456Z'
                    firstName:
                      type: string
                      description: User first name
                    lastName:
                      type: string
                      description: User last name
                    name:
                      type: string
                      description: >-
                        Full display name — concatenation of `firstName` and
                        `lastName`, computed on the backend (read-only).
                    linkedInProfile:
                      description: >-
                        LinkedIn profile data scraped when the LinkedIn account
                        was connected (read-only). Missing when no LinkedIn
                        account is connected — its presence is a sufficient
                        signal that LinkedIn is connected.
                      type: object
                      properties:
                        id:
                          type: string
                          description: LinkedIn profile entity id
                        updatedAt:
                          type: string
                          description: LinkedIn profile update timestamp
                          example: '2025-06-30T14:02:07.456Z'
                        createdAt:
                          type: string
                          description: LinkedIn profile creation timestamp
                          example: '2025-06-30T14:02:07.456Z'
                        name:
                          type: string
                          description: >-
                            Name from the LinkedIn profile (scraped; not
                            user-editable in Extrovert).
                        email:
                          type: string
                          description: >-
                            Email used to log in to LinkedIn (may differ from
                            the Extrovert account email).
                        avatarUrl:
                          description: LinkedIn profile avatar URL.
                          type: string
                        linkedInUrl:
                          description: Public LinkedIn profile URL.
                          type: string
                      required:
                        - id
                        - updatedAt
                        - createdAt
                        - name
                        - email
                    selectedWorkspaceSettings:
                      description: >-
                        The current user's member record in the currently
                        selected team (role, creator flag, registrationType,
                        LinkedIn-connected flag). `id` here is the member-record
                        id and `user.id` is the user id; the team id itself is
                        not part of this object.
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Team member record id.
                          example: 8d256aa6-9b12-49a7-93ee-bf41634b5b60
                        updatedAt:
                          type: string
                          description: Member record update timestamp
                          example: '2025-06-30T14:02:07.456Z'
                        createdAt:
                          type: string
                          description: Member record creation timestamp
                          example: '2025-06-30T14:02:07.456Z'
                        user:
                          description: >-
                            Reference to the user this member record belongs to
                            — carries only `id` and `name`. Fetch the full user
                            record separately if needed. May be missing if the
                            user was removed.
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              description: Entity ID
                              example: 8d256aa6-9b12-49a7-93ee-bf41634b5b60
                            name:
                              type: string
                              description: Entity name
                          required:
                            - id
                            - name
                        role:
                          type: string
                          enum:
                            - MEMBER
                            - MANAGER
                            - ADMIN
                          description: The member's role in the team.
                        isCreator:
                          type: boolean
                          description: Whether this member is the team creator.
                        isLinkedInProfileConnected:
                          type: boolean
                          description: >-
                            Whether this member has a valid LinkedIn account
                            connected. Can only be `true` for the creator (and
                            only when the profile is actually linked and valid).
                        registrationType:
                          type: string
                          enum:
                            - NEW_USER_SIGNUP
                            - NEW_USER_WORKSPACE_INVITE_CONFIRM
                            - SUB_USER
                          description: >-
                            How this member entered the system.
                            `NEW_USER_SIGNUP` — signed up themselves;
                            `NEW_USER_WORKSPACE_INVITE_CONFIRM` — accepted a
                            team invite; `SUB_USER` — created as a managed
                            account by another user.
                        onboardingState:
                          type: string
                          enum:
                            - IN_PROGRESS
                            - POSTPONED
                            - COMPLETED
                            - SKIPPED
                          description: >-
                            AI assistant onboarding progress. `IN_PROGRESS` —
                            user is going through onboarding; `POSTPONED` — user
                            dismissed onboarding temporarily; `COMPLETED` —
                            onboarding finished; `SKIPPED` — user opted out.
                        onboardingDate:
                          type: string
                          description: >-
                            ISO timestamp when `onboardingState` was last
                            updated.
                          example: '2025-06-30T14:02:07.456Z'
                      required:
                        - id
                        - updatedAt
                        - createdAt
                        - role
                        - isCreator
                        - isLinkedInProfileConnected
                        - registrationType
                        - onboardingState
                        - onboardingDate
                    notifyAboutNewPosts:
                      type: boolean
                      description: >-
                        Whether email/push notifications about new matching
                        posts are enabled.
                    notifyAboutNewDms:
                      type: boolean
                      description: >-
                        Whether email/push notifications about new incoming DMs
                        are enabled.
                    isDmHistorySynced:
                      type: boolean
                      description: >-
                        When an account is connected, Extrovert syncs its DMs.
                        Can take several hours. Until this becomes `true`, the
                        AI-DMs unibox is not functional.
                    onboardingState:
                      type: string
                      enum:
                        - IN_PROGRESS
                        - POSTPONED
                        - COMPLETED
                        - SKIPPED
                      description: >-
                        AI assistant onboarding progress. `IN_PROGRESS` — user
                        is going through onboarding; `POSTPONED` — user
                        dismissed onboarding temporarily; `COMPLETED` —
                        onboarding finished; `SKIPPED` — user opted out.
                    onboardingDate:
                      type: string
                      description: ISO timestamp when `onboardingState` was last updated.
                      example: '2025-06-30T14:02:07.456Z'
                    linkedinUrl:
                      description: >-
                        User-provided LinkedIn profile URL stored at signup or
                        profile update (distinct from scraped
                        `linkedInProfile.linkedInUrl`).
                      type: string
                  required:
                    - id
                    - updatedAt
                    - createdAt
                    - firstName
                    - lastName
                    - name
                    - notifyAboutNewPosts
                    - notifyAboutNewDms
                    - isDmHistorySynced
                    - onboardingState
                    - onboardingDate
                description: >-
                  Team members explicitly granted access to this campaign. See
                  the `user` config for the user-object shape. Empty if the
                  campaign is private or shared with the whole team via
                  `shareWithAllWorkspaceUsers`.
              skipTeammatesLeads:
                type: boolean
                description: >-
                  If `true`, skip prospects that are already present in
                  teammates' campaigns in the same team — avoids double outreach
                  to the same person.
              applyCommentIntervalH:
                description: >-
                  Natural comment spacing: minimum gap in hours between
                  automated comments posted by this campaign (spreads approved
                  comments over time so engagement feels natural). Stored in
                  hours but the UI only exposes whole-day choices, so the value
                  is always a multiple of 24 (currently 24, 48, or 72). Absent
                  when the feature is off.
                type: number
              owner:
                description: >-
                  Campaign owner — reduced projection of the user shape:
                  `linkedInProfile` is omitted, and
                  `selectedWorkspaceSettings.isLinkedInProfileConnected` here
                  reflects the owner's own selected workspace (may differ from
                  the campaign's workspace).
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: User ID
                    example: 8d256aa6-9b12-49a7-93ee-bf41634b5b60
                  updatedAt:
                    type: string
                    description: User update timestamp
                    example: '2025-06-30T14:02:07.456Z'
                  createdAt:
                    type: string
                    description: User creation timestamp
                    example: '2025-06-30T14:02:07.456Z'
                  firstName:
                    type: string
                    description: User first name
                  lastName:
                    type: string
                    description: User last name
                  name:
                    type: string
                    description: >-
                      Full display name — concatenation of `firstName` and
                      `lastName`, computed on the backend (read-only).
                  linkedInProfile:
                    description: >-
                      LinkedIn profile data scraped when the LinkedIn account
                      was connected (read-only). Missing when no LinkedIn
                      account is connected — its presence is a sufficient signal
                      that LinkedIn is connected.
                    type: object
                    properties:
                      id:
                        type: string
                        description: LinkedIn profile entity id
                      updatedAt:
                        type: string
                        description: LinkedIn profile update timestamp
                        example: '2025-06-30T14:02:07.456Z'
                      createdAt:
                        type: string
                        description: LinkedIn profile creation timestamp
                        example: '2025-06-30T14:02:07.456Z'
                      name:
                        type: string
                        description: >-
                          Name from the LinkedIn profile (scraped; not
                          user-editable in Extrovert).
                      email:
                        type: string
                        description: >-
                          Email used to log in to LinkedIn (may differ from the
                          Extrovert account email).
                      avatarUrl:
                        description: LinkedIn profile avatar URL.
                        type: string
                      linkedInUrl:
                        description: Public LinkedIn profile URL.
                        type: string
                    required:
                      - id
                      - updatedAt
                      - createdAt
                      - name
                      - email
                  selectedWorkspaceSettings:
                    description: >-
                      The current user's member record in the currently selected
                      team (role, creator flag, registrationType,
                      LinkedIn-connected flag). `id` here is the member-record
                      id and `user.id` is the user id; the team id itself is not
                      part of this object.
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Team member record id.
                        example: 8d256aa6-9b12-49a7-93ee-bf41634b5b60
                      updatedAt:
                        type: string
                        description: Member record update timestamp
                        example: '2025-06-30T14:02:07.456Z'
                      createdAt:
                        type: string
                        description: Member record creation timestamp
                        example: '2025-06-30T14:02:07.456Z'
                      user:
                        description: >-
                          Reference to the user this member record belongs to —
                          carries only `id` and `name`. Fetch the full user
                          record separately if needed. May be missing if the
                          user was removed.
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                            description: Entity ID
                            example: 8d256aa6-9b12-49a7-93ee-bf41634b5b60
                          name:
                            type: string
                            description: Entity name
                        required:
                          - id
                          - name
                      role:
                        type: string
                        enum:
                          - MEMBER
                          - MANAGER
                          - ADMIN
                        description: The member's role in the team.
                      isCreator:
                        type: boolean
                        description: Whether this member is the team creator.
                      isLinkedInProfileConnected:
                        type: boolean
                        description: >-
                          Whether this member has a valid LinkedIn account
                          connected. Can only be `true` for the creator (and
                          only when the profile is actually linked and valid).
                      registrationType:
                        type: string
                        enum:
                          - NEW_USER_SIGNUP
                          - NEW_USER_WORKSPACE_INVITE_CONFIRM
                          - SUB_USER
                        description: >-
                          How this member entered the system. `NEW_USER_SIGNUP`
                          — signed up themselves;
                          `NEW_USER_WORKSPACE_INVITE_CONFIRM` — accepted a team
                          invite; `SUB_USER` — created as a managed account by
                          another user.
                      onboardingState:
                        type: string
                        enum:
                          - IN_PROGRESS
                          - POSTPONED
                          - COMPLETED
                          - SKIPPED
                        description: >-
                          AI assistant onboarding progress. `IN_PROGRESS` — user
                          is going through onboarding; `POSTPONED` — user
                          dismissed onboarding temporarily; `COMPLETED` —
                          onboarding finished; `SKIPPED` — user opted out.
                      onboardingDate:
                        type: string
                        description: ISO timestamp when `onboardingState` was last updated.
                        example: '2025-06-30T14:02:07.456Z'
                    required:
                      - id
                      - updatedAt
                      - createdAt
                      - role
                      - isCreator
                      - isLinkedInProfileConnected
                      - registrationType
                      - onboardingState
                      - onboardingDate
                  notifyAboutNewPosts:
                    type: boolean
                    description: >-
                      Whether email/push notifications about new matching posts
                      are enabled.
                  notifyAboutNewDms:
                    type: boolean
                    description: >-
                      Whether email/push notifications about new incoming DMs
                      are enabled.
                  isDmHistorySynced:
                    type: boolean
                    description: >-
                      When an account is connected, Extrovert syncs its DMs. Can
                      take several hours. Until this becomes `true`, the AI-DMs
                      unibox is not functional.
                  onboardingState:
                    type: string
                    enum:
                      - IN_PROGRESS
                      - POSTPONED
                      - COMPLETED
                      - SKIPPED
                    description: >-
                      AI assistant onboarding progress. `IN_PROGRESS` — user is
                      going through onboarding; `POSTPONED` — user dismissed
                      onboarding temporarily; `COMPLETED` — onboarding finished;
                      `SKIPPED` — user opted out.
                  onboardingDate:
                    type: string
                    description: ISO timestamp when `onboardingState` was last updated.
                    example: '2025-06-30T14:02:07.456Z'
                  linkedinUrl:
                    description: >-
                      User-provided LinkedIn profile URL stored at signup or
                      profile update (distinct from scraped
                      `linkedInProfile.linkedInUrl`).
                    type: string
                required:
                  - id
                  - updatedAt
                  - createdAt
                  - firstName
                  - lastName
                  - name
                  - notifyAboutNewPosts
                  - notifyAboutNewDms
                  - isDmHistorySynced
                  - onboardingState
                  - onboardingDate
              isDeleted:
                type: boolean
                description: >-
                  Whether the campaign has been deleted. Deleted campaigns are
                  not usable and should be treated as removed.
              isIndirectEngagementEnabled:
                type: boolean
                description: >-
                  Indirect engagement feature. If `true`, Extrovert also pulls
                  indirect posts for the campaign — posts from the people the
                  prospect engages with most frequently (content the prospect is
                  likely to see in their own feed). Main use case: reach
                  prospects who rarely post themselves by commenting on
                  third-party posts they're likely to see.
              postActivityFilter:
                description: >-
                  Post filter applied by this campaign to decide which posts
                  qualify for engagement. See `postActivityFilterSchema` above
                  for fields.
                type: object
                properties:
                  postDate:
                    type: string
                    enum:
                      - NEWER_THAN_1_DAY
                      - NEWER_THAN_2_DAYS
                      - NEWER_THAN_3_DAYS
                      - NEWER_THAN_4_DAYS
                      - NEWER_THAN_5_DAYS
                      - NEWER_THAN_6_DAYS
                      - NEWER_THAN_1_WEEK
                      - NEWER_THAN_2_WEEKS
                      - NEWER_THAN_3_WEEKS
                      - NEWER_THAN_4_WEEKS
                    description: Show only posts within this age window.
                  emotionTypes:
                    type: array
                    items:
                      type: string
                      enum:
                        - THOUGHT_LEADERSHIP
                        - BUSINESS_ISSUES
                        - COMPANY_NEWS_OR_ACHIEVEMENTS
                        - OFFLINE_EVENTS
                        - ONLINE_EVENTS
                        - SOCIAL_ISSUES
                        - OWN_PRODUCT_PROMOTION
                        - JOB_RELATED
                        - PERSONAL_LIFE_BLOG
                        - POLITICS
                        - COMMENT_X_TO_GET_Y
                        - EXTRA_SENSITIVE
                        - OTHER
                    description: >-
                      Show only posts whose AI-detected type matches one of
                      these values. Pass an empty array to include all types.
                  monitoredTopicIds:
                    type: array
                    items:
                      type: string
                      format: uuid
                    description: >-
                      Show only posts that match at least one of these Monitored
                      Topic ids. Applies to `TARGET_USER` campaigns only — empty
                      for `KEYWORD`.
                  prospectLastCommentedTime:
                    description: >-
                      Optional: hide posts from prospects you already commented
                      on within this time window. Applies to `TARGET_USER`
                      (Prospects) campaigns only — omit it for `KEYWORD` (Topic)
                      campaigns; the backend rejects it there.
                    type: string
                    enum:
                      - MORE_THAN_1_DAY_AGO
                      - MORE_THAN_3_DAYS_AGO
                      - MORE_THAN_1_WEEK_AGO
                      - MORE_THAN_2_WEEKS_AGO
                      - MORE_THAN_3_WEEKS_AGO
                      - MORE_THAN_1_MONTH_AGO
                      - MORE_THAN_2_MONTHS_AGO
                  prospectNumberOfTouchPoints:
                    description: >-
                      Optional: show only posts whose author you've already
                      commented on this many times. Applies to `TARGET_USER`
                      (Prospects) campaigns only — omit it for `KEYWORD` (Topic)
                      campaigns; the backend rejects it there.
                    type: string
                    enum:
                      - COMMENTED_1_TIME
                      - COMMENTED_2_TIMES
                      - COMMENTED_3_TIMES
                      - COMMENTED_4_TIMES
                      - COMMENTED_5_TIMES
                      - COMMENTED_6_TIMES
                  postsNumberPerProspect:
                    description: >-
                      Optional: cap how many posts per prospect appear in the
                      feed. Applies to `TARGET_USER` (Prospects) campaigns only
                      — omit it for `KEYWORD` (Topic) campaigns; the backend
                      rejects it there.
                    type: string
                    enum:
                      - MAX_1_POST
                      - MAX_2_POSTS
                      - MAX_3_POSTS
                      - MAX_4_POSTS
                      - MAX_5_POSTS
                  isShowDirectPostFirstEnabled:
                    description: >-
                      Show direct posts (written by the prospect themselves)
                      above indirect posts (posts from people the prospect
                      engages with — content the prospect is likely to see in
                      their own feed).
                    type: boolean
                  minPostLikes:
                    description: >-
                      Minimum number of likes a post must have to qualify
                      (1–50). Applies to `KEYWORD` campaigns only; absent when
                      the filter is disabled.
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                required:
                  - postDate
                  - emotionTypes
                  - monitoredTopicIds
              type:
                type: string
                enum:
                  - TARGET_USER
                  - KEYWORD
                description: >-
                  Campaign type. `TARGET_USER` engages with a specific list of
                  LinkedIn profiles; `KEYWORD` discovers posts by bound topics.
                  Backend values `TARGET_USER` / `KEYWORD` correspond to
                  user-facing 'Prospects campaign' / 'Topic campaign'.
              connectingSettings:
                description: >-
                  Connection-request automation settings for this campaign. See
                  `connectingSettingsSchema` below.
                type: object
                properties:
                  isSendConnectionRequestEnabled:
                    type: boolean
                    description: >-
                      Master switch: enable automatic connection requests from
                      this campaign. When `false`, no connection requests are
                      sent regardless of the trigger flags below.
                  sendConnectionRequestOnDirectCommentCount:
                    description: >-
                      Direct-comment trigger: send a connection request once the
                      user has commented this many times under the prospect's
                      own posts.
                    type: integer
                    exclusiveMinimum: true
                    maximum: 9007199254740991
                    minimum: 0
                  isSendConnectionRequestOnIndirectCommentEnabled:
                    description: >-
                      Enable the indirect-comment trigger: also count comments
                      left under indirect posts (posts from people the prospect
                      engages with — content the prospect is likely to see in
                      their own feed) toward a connection request. Requires the
                      indirect-engagement feature
                      (`isIndirectEngagementEnabled`) to be on.
                    type: boolean
                  sendConnectionRequestOnIndirectCommentCount:
                    description: >-
                      Number of comments under indirect posts needed to trigger
                      a connection request.
                    type: integer
                    exclusiveMinimum: true
                    maximum: 9007199254740991
                    minimum: 0
                  isSendConnectionRequestOnTimeoutEnabled:
                    description: >-
                      Enable the timeout trigger: send a connection request
                      after the prospect has been in the campaign for N days
                      even if no other trigger has fired.
                    type: boolean
                  sendConnectionRequestOnTimeoutDays:
                    description: >-
                      Number of days in the campaign before the timeout
                      connection-request trigger fires.
                    type: integer
                    exclusiveMinimum: true
                    maximum: 9007199254740991
                    minimum: 0
                  isSendConnectionRequestOnNoPostsEnabled:
                    description: >-
                      Send a connection request immediately when there is
                      nothing to comment on. If the indirect-engagement feature
                      (`isIndirectEngagementEnabled`) and the indirect-comment
                      trigger are both on, this fires only when the prospect has
                      no direct posts AND no indirect posts (no point waiting
                      for comments when there's nothing to comment under).
                      Otherwise it fires when the prospect has no direct posts.
                    type: boolean
                required:
                  - isSendConnectionRequestEnabled
              dmSettings:
                description: >-
                  Direct-message automation settings for this campaign. See
                  `dmSettingsSchema` below.
                type: object
                properties:
                  isGenerateDmEnabled:
                    type: boolean
                    description: >-
                      Master switch: enable automatic DM drafting for this
                      campaign. When `false`, no DMs are suggested regardless of
                      the trigger flags below.
                  isGenerateDmOnConnectEnabled:
                    description: >-
                      Enable the on-connect trigger: suggest a first DM once the
                      prospect accepts the connection request.
                    type: boolean
                  generateDmOnConnectAfterDaysCount:
                    description: >-
                      Number of days to wait after the prospect accepts the
                      connection before suggesting the first DM.
                    type: integer
                    exclusiveMinimum: true
                    maximum: 9007199254740991
                    minimum: 0
                  isGenerateDmOnRelevantPostEnabled:
                    description: >-
                      Enable the relevant-post trigger: suggest a follow-up DM
                      whenever the prospect posts something referenceable (e.g.
                      an event they attended, a fact about them — not generic
                      thought leadership). The trigger fires on post discovery;
                      commenting on the post is not required.
                    type: boolean
                  generateDmOnRelevantPostAfterDaysCount:
                    description: >-
                      Minimum number of days that must pass since the last
                      message in the DM thread before the relevant-post trigger
                      is allowed to fire. Prevents over-messaging the same
                      prospect when they post frequently.
                    type: integer
                    exclusiveMinimum: true
                    maximum: 9007199254740991
                    minimum: 0
                  isGenerateDmOnTimeoutEnabled:
                    description: >-
                      Enable the timeout trigger: suggest a follow-up DM after N
                      days of silence in the conversation, regardless of other
                      triggers.
                    type: boolean
                  generateDmOnTimeoutAfterDaysCount:
                    description: >-
                      Number of days of silence before the timeout DM trigger
                      fires.
                    type: integer
                    exclusiveMinimum: true
                    maximum: 9007199254740991
                    minimum: 0
                required:
                  - isGenerateDmEnabled
              shareWithAllWorkspaceUsers:
                type: boolean
                description: Whether the campaign is shared with all members of the team.
              manualPostsSyncAvailableAfter:
                description: >-
                  ISO 8601: earliest time the manual 'Check for new posts'
                  action may be triggered again. Omitted when the action is
                  available immediately.
                type: string
                example: '2025-06-30T14:02:07.456Z'
            required:
              - id
              - updatedAt
              - createdAt
              - name
              - postMaxAgeDays
              - isActive
              - sharedUsers
              - skipTeammatesLeads
              - isDeleted
              - isIndirectEngagementEnabled
              - type
              - shareWithAllWorkspaceUsers
          description: Campaign items visible to the current user
        message:
          type: string
          description: Success message
          example: Operation completed successfully
      required:
        - status
        - data
        - message
    ClientApiErrorResponseDto:
      type: object
      properties:
        status:
          type: string
          description: Response status
          example: error
          enum:
            - error
        data:
          type: object
          description: Response data
          example: null
        message:
          type: string
          description: Error message
          example: An error occurred while processing the request
      required:
        - status
        - data
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: X-API-Key
      description: API Key for authentication

````