Adaptive Security Phishing API

BETAPhishing campaign and simulation management endpoints

Operations 5

GET /v2/phishing/campaigns List phishing campaigns #
GET /v2/phishing/campaigns/enrollments Get phishing enrollments #
GET /v2/phishing/campaigns/{campaignId} Get phishing campaign details #
GET /v2/phishing/campaigns/{campaignId}/simulations List simulations for campaign #
GET /v2/phishing/simulations/{simulationId} Get simulation execution details #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/adaptive-security-phishing-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

adaptive-security-phishing-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Adaptive API for external integrations.
  title: Adaptive Phishing API
  version: v2
servers:
- url: https://api.adaptivesecurity.com
  description: Production API
security:
- bearer-token: []
tags:
- description: BETAPhishing campaign and simulation management endpoints
  name: Phishing
paths:
  /v2/phishing/campaigns:
    get:
      description: BETARetrieve a paginated list of phishing campaigns
      operationId: listPhishingCampaigns
      parameters:
      - description: Page cursor
        example: b2c3d4e5-f6a7-8901-bcde-f23456789012
        in: query
        name: page_after
        required: false
        schema:
          type: string
      - description: Page size
        example: 50
        in: query
        name: page_size
        required: false
        schema:
          type: integer
          default: 50
      responses:
        '200':
          content:
            application/json:
              examples:
                Success Response:
                  description: Success Response
                  value:
                    campaigns:
                    - campaign_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                      name: Quarterly Phish Test
                      target: GROUPS
                      groups:
                      - group_id: f6a7b8c9-d0e1-2345-fabc-d67890123456
                        name: All Users
                      scenarios:
                      - scenario_id: a7b8c9d0-e1f2-3456-abcd-e78901234567
                        name: Zoom Deepfake
                        sender: Zoom
                        difficulty: Hard
                        spoofPageType: DEEPFAKE_SPOOF_PAGE
                        channel: EMAIL
                        attackVector: LINK_CLICKED
                      - scenario_id: a7b8c9d0-e1f2-3456-abcd-e78901234567
                        name: Google Account Compromise
                        sender: Google
                        difficulty: Easy
                        spoofPageType: null
                        channel: EMAIL
                        attackVector: LINK_CLICKED
                      - scenario_id: a7b8c9d0-e1f2-3456-abcd-e78901234567
                        name: Internal Audit Feedback
                        sender: Executive
                        difficulty: Medium
                        spoofPageType: null
                        channel: EMAIL
                        attackVector: QR_CODE_SCANNED
                      mode: RECURRING
                      status: IN_PROGRESS
                      created_date: '2025-06-01T13:19:13.402Z'
                      start_date: '2025-06-10T13:19:13.402Z'
                      end_date: '2025-08-10T13:19:13.402Z'
                      distribution_interval: TWO_WEEKS
                      recurring_interval: MONTH
                      simulations:
                      - simulation_id: c18f4e0b-5678-9abc-def0-123456789abc
                        start_date: '2025-06-10T13:19:13.402Z'
                        end_date: '2025-07-10T13:19:13.402Z'
                        status: COMPLETED
                      - simulation_id: e9a7f2d1-abcd-ef01-2345-6789abcdef01
                        start_date: '2025-07-10T13:19:13.402Z'
                        end_date: '2025-08-10T13:19:13.402Z'
                        status: IN_PROGRESS
                    page_after: f3c7c8f3-1234-5678-9abc-def012345678
              schema:
                $ref: '#/components/schemas/PhishingCampaignListResponseDto'
          description: Successfully retrieved phishing campaigns
        '400':
          content:
            application/json:
              examples:
                Validation Error:
                  description: Validation Error
                  value:
                    error_code: VALIDATION_ERROR
                    message: Request validation failed
                    status_code: 400
                    request_id: 5f8e9a7b-1c2d-3e4f-5a6b-7c8d9e0f1a2b
                    details:
                    - field: page_size
                      message: Page size must be greater than or equal to 1
              schema:
                $ref: '#/components/schemas/ValidationErrorResponseDto'
          description: Bad request - Invalid parameters
        '401':
          content:
            application/json:
              examples:
                Unauthorized Error:
                  description: Unauthorized Error
                  value:
                    error_code: INVALID_TOKEN
                    message: The provided authentication token is invalid or expired
                    status_code: 401
                    request_id: dcaf9f7e-6c47-4c93-bb41-0e2d8d9bb0de
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Unauthorized - Invalid or missing authentication token
        '429':
          content:
            application/json:
              examples:
                Rate Limit Error:
                  description: Rate Limit Error
                  value:
                    error_code: RATE_LIMIT_EXCEEDED
                    message: API rate limit exceeded. Please retry after some time
                    status_code: 429
                    request_id: b7c1196e-2c6e-4d17-8f3c-fcb62d6d27a2
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Too many requests - Rate limit exceeded
        '500':
          content:
            application/json:
              examples:
                Internal Server Error:
                  description: Internal Server Error
                  value:
                    error_code: INTERNAL_SERVER_ERROR
                    message: An unexpected error occurred. Please try again later
                    status_code: 500
                    request_id: f351ac3c-cd5e-4ec7-89dc-191fc40a83f2
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Internal server error
      summary: List phishing campaigns
      tags:
      - Phishing
  /v2/phishing/campaigns/enrollments:
    get:
      description: BETARetrieve details about phishing enrollments with campaign, simulation, and user filters
      operationId: getPhishingEnrollments
      parameters:
      - description: User ID
        example: 123e4567-e89b-12d3-a456-426614174000
        in: query
        name: user_id
        required: false
        schema:
          type: string
      - description: Phishing campaign ID
        example: f3c7c8f3-1234-5678-9abc-def012345678
        in: query
        name: campaign_id
        required: false
        schema:
          type: string
      - description: Simulation execution ID
        example: c18f4e0b-5678-9abc-def0-123456789abc
        in: query
        name: simulation_id
        required: false
        schema:
          type: string
      - description: Page cursor
        example: f248c6c3-9c93-4d62-a41b-9843de18f56b
        in: query
        name: page_after
        required: false
        schema:
          type: string
      - description: Page size
        example: 50
        in: query
        name: page_size
        required: false
        schema:
          type: integer
          default: 50
      responses:
        '200':
          content:
            application/json:
              examples:
                Success Response:
                  description: Success Response
                  value:
                    enrollments:
                    - enrollment_id: d0e1f2a3-b4c5-6789-defa-b01234567890
                      campaign_id: c3d4e5f6-a7b8-9012-cdef-a34567890123
                      simulation_id: c18f4e0b-5678-9abc-def0-123456789abc
                      user:
                        id: a3b4c5d6-e7f8-9012-abcd-e34567890123
                        email: john.smith@example.com
                      scenario_id: a7b8c9d0-e1f2-3456-abcd-e78901234567
                      scheduled_at: '2025-06-10T15:02:38.000Z'
                      delivered_at: '2025-06-10T15:02:38.000Z'
                      opened_at: '2025-06-10T15:04:38.000Z'
                      clicked_at: '2025-06-10T15:05:38.000Z'
                      replied_at: null
                      attachment_opened_at: null
                      credentials_entered: '2025-06-10T15:07:38.000Z'
                      qr_code_scanned: null
                      reported_at: null
                      failed_at: '2025-06-10T15:07:38.000Z'
                      ip: 192.168.1.100
                      ip_location: Philadelphia, PA
                    - enrollment_id: e1f2a3b4-c5d6-7890-efab-c12345678901
                      campaign_id: d4e5f6a7-b8c9-0123-defa-b45678901234
                      simulation_id: e9a7f2d1-9999-8888-7777-9ac3
                      user:
                        id: a3b4c5d6-e7f8-9012-abcd-e34567890123
                        email: john.smith@example.com
                      scenario_id: a7b8c9d0-e1f2-3456-abcd-e78901234567
                      scheduled_at: '2025-07-10T14:30:22.000Z'
                      delivered_at: '2025-07-10T14:30:22.000Z'
                      opened_at: '2025-07-10T14:35:18.000Z'
                      clicked_at: null
                      replied_at: null
                      attachment_opened_at: null
                      credentials_entered: null
                      qr_code_scanned: null
                      reported_at: '2025-07-10T14:36:45.000Z'
                      failed_at: null
                      ip: 192.168.1.100
                      ip_location: Philadelphia, PA
                    - enrollment_id: f2a3b4c5-d6e7-8901-fabc-d23456789012
                      campaign_id: e5f6a7b8-c9d0-1234-efab-c56789012345
                      simulation_id: f1a2b3c4-dddd-eeee-ffff-0ab1
                      user:
                        id: b4c5d6e7-f8a9-0123-bcde-f45678901234
                        email: jane.smith@example.com
                      scenario_id: a7b8c9d0-e1f2-3456-abcd-e78901234567
                      scheduled_at: '2025-06-15T10:45:12.000Z'
                      delivered_at: '2025-06-15T10:45:12.000Z'
                      opened_at: '2025-06-15T11:22:33.000Z'
                      clicked_at: '2025-06-15T11:23:11.000Z'
                      replied_at: null
                      attachment_opened_at: null
                      credentials_entered: null
                      qr_code_scanned: null
                      reported_at: null
                      failed_at: '2025-06-15T11:23:38.000Z'
                      ip: 192.168.1.100
                      ip_location: New York, NY
                    page_after: f2a3b4c5-d6e7-8901-fabc-d23456789012
              schema:
                $ref: '#/components/schemas/PhishingEnrollmentListResponseDto'
          description: Successfully retrieved phishing enrollment details
        '401':
          content:
            application/json:
              examples:
                Unauthorized Error:
                  description: Unauthorized Error
                  value:
                    error_code: INVALID_TOKEN
                    message: The provided authentication token is invalid or expired
                    status_code: 401
                    request_id: 5a7384c9-b5de-4aa1-a144-faa0de243ab0
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Unauthorized - Invalid or missing authentication token
        '429':
          content:
            application/json:
              examples:
                Rate Limit Error:
                  description: Rate Limit Error
                  value:
                    error_code: RATE_LIMIT_EXCEEDED
                    message: API rate limit exceeded. Please retry after some time
                    status_code: 429
                    request_id: 6e9d2fb1-95e2-49e2-ae36-9de6e6f51c25
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Too many requests - Rate limit exceeded
        '500':
          content:
            application/json:
              examples:
                Internal Server Error:
                  description: Internal Server Error
                  value:
                    error_code: INTERNAL_SERVER_ERROR
                    message: An unexpected error occurred. Please try again later
                    status_code: 500
                    request_id: a0a7b8e0-fc0b-46b1-8dbb-0d04872f9678
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Internal server error
      summary: Get phishing enrollments
      tags:
      - Phishing
  /v2/phishing/campaigns/{campaignId}:
    get:
      description: BETARetrieve detailed information about a specific phishing campaign including simulation summary
      operationId: getPhishingCampaign
      parameters:
      - description: Campaign ID
        example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        in: path
        name: campaignId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              examples:
                Success Response:
                  description: Success Response
                  value:
                    campaign_id: f3c7c8f3-1234-5678-9abc-def012345678
                    name: Quarterly Phish Test
                    target: GROUPS
                    groups:
                    - group_id: cf7fc19b-d312-47bb-8289-79774e3218d1
                      name: All Users
                    scenarios:
                    - scenario_id: a7b8c9d0-e1f2-3456-abcd-e78901234567
                      name: Zoom Deepfake
                      sender: Zoom
                      difficulty: Hard
                      spoofPageType: DEEPFAKE_SPOOF_PAGE
                      channel: EMAIL
                      attackVector: LINK_CLICKED
                    - scenario_id: b8c9d0e1-f2a3-4567-bcde-f89012345678
                      name: Google Account Compromise
                      sender: Google
                      difficulty: Easy
                      spoofPageType: LOGIN_SPOOF_PAGE
                      channel: EMAIL
                      attackVector: LINK_CLICKED
                    - scenario_id: c9d0e1f2-a3b4-5678-cdef-a90123456789
                      name: Internal Audit Feedback
                      sender: Executive
                      difficulty: Medium
                      spoofPageType: null
                      channel: EMAIL
                      attackVector: QR_CODE_SCANNED
                    mode: RECURRING
                    status: IN_PROGRESS
                    created_date: '2025-06-01T13:19:13.402Z'
                    start_date: '2025-06-10T13:19:13.402Z'
                    end_date: '2025-08-10T13:19:13.402Z'
                    distribution_interval: TWO_WEEKS
                    recurring_interval: MONTH
                    simulations:
                    - simulation_id: c18f4e0b-5678-9abc-def0-123456789abc
                      start_date: '2025-06-10T13:19:13.402Z'
                      end_date: '2025-07-10T13:19:13.402Z'
                      status: COMPLETED
                    - simulation_id: e9a7f2d1-9999-8888-7777-9ac3
                      start_date: '2025-07-10T13:19:13.402Z'
                      end_date: '2025-08-10T13:19:13.402Z'
                      status: IN_PROGRESS
              schema:
                $ref: '#/components/schemas/PhishingCampaignDto'
          description: Successfully retrieved phishing campaign details
        '401':
          content:
            application/json:
              examples:
                Unauthorized Error:
                  description: Unauthorized Error
                  value:
                    error_code: INVALID_TOKEN
                    message: The provided authentication token is invalid or expired
                    status_code: 401
                    request_id: dcaf9f7e-6c47-4c93-bb41-0e2d8d9bb0de
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Unauthorized - Invalid or missing authentication token
        '404':
          content:
            application/json:
              examples:
                Not Found Error:
                  description: Not Found Error
                  value:
                    error_code: RESOURCE_NOT_FOUND
                    message: The requested phishing campaign was not found
                    status_code: 404
                    request_id: 2a3b4c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Phishing campaign not found
        '500':
          content:
            application/json:
              examples:
                Internal Server Error:
                  description: Internal Server Error
                  value:
                    error_code: INTERNAL_SERVER_ERROR
                    message: An unexpected error occurred. Please try again later
                    status_code: 500
                    request_id: f351ac3c-cd5e-4ec7-89dc-191fc40a83f2
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Internal server error
      summary: Get phishing campaign details
      tags:
      - Phishing
  /v2/phishing/campaigns/{campaignId}/simulations:
    get:
      description: BETARetrieve a paginated list of simulation executions for a specific campaign
      operationId: listCampaignSimulations
      parameters:
      - description: Campaign ID
        example: 3d65f3b0-9abc-def0-1234-56789abcdef0
        in: path
        name: campaignId
        required: true
        schema:
          type: string
      - description: Page cursor
        example: c18f4e0b-dddd-eeee-ffff-0fb2
        in: query
        name: page_after
        required: false
        schema:
          type: string
      - description: Page size
        example: 50
        in: query
        name: page_size
        required: false
        schema:
          type: integer
          default: 50
      responses:
        '200':
          content:
            application/json:
              examples:
                Success Response:
                  description: Success Response
                  value:
                    simulations:
                    - simulation_id: c18f4e0b-dddd-eeee-ffff-0fb2
                      campaign_id: 3d65f3b0-aaaa-bbbb-cccc-8c1c
                      start_date: '2025-08-10T13:19:13.402Z'
                      end_date: '2025-09-10T13:19:13.402Z'
                      status: IN_PROGRESS
                      distribution_interval: TWO_WEEKS
                      scenarios:
                      - scenario_id: s-zoom-123
                        name: Zoom Deepfake
                        sender: Zoom
                        difficulty: HARD
                        spoofPageType: DEEPFAKE_SPOOF_PAGE
                        channel: EMAIL
                        attackVector: LINK_CLICKED
                    - simulation_id: e9a7f2d1-9999-8888-7777-9ac3
                      campaign_id: 3d65f3b0-aaaa-bbbb-cccc-8c1c
                      start_date: '2025-09-10T13:19:13.402Z'
                      end_date: '2025-10-10T13:19:13.402Z'
                      status: SCHEDULED
                      distribution_interval: TWO_WEEKS
                      scenarios:
                      - scenario_id: s-google-456
                        name: Google Account Compromise
                        sender: Google
                        difficulty: EASY
                        spoofPageType: LOGIN_SPOOF_PAGE
                        channel: EMAIL
                        attackVector: LINK_CLICKED
                    page_after: e9a7f2d1-9999-8888-7777-9ac3
              schema:
                $ref: '#/components/schemas/PhishingSimulationListResponseDto'
          description: Successfully retrieved simulation executions
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Unauthorized - Invalid or missing authentication token
        '404':
          content:
            application/json:
              examples:
                Not Found Error:
                  description: Not Found Error
                  value:
                    error_code: RESOURCE_NOT_FOUND
                    message: The requested campaign was not found
                    status_code: 404
                    request_id: 2a3b4c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Campaign not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Internal server error
      summary: List simulations for campaign
      tags:
      - Phishing
  /v2/phishing/simulations/{simulationId}:
    get:
      description: BETARetrieve detailed information about a specific simulation execution
      operationId: getSimulation
      parameters:
      - description: Simulation Execution ID
        example: c18f4e0b-dddd-eeee-ffff-0fb2
        in: path
        name: simulationId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              examples:
                Success Response:
                  description: Success Response
                  value:
                    simulation_id: c18f4e0b-5678-9abc-def0-123456789abc
                    campaign_id: 3d65f3b0-aaaa-bbbb-cccc-8c1c
                    start_date: '2025-08-10T13:19:13.402Z'
                    end_date: '2025-09-10T13:19:13.402Z'
                    status: IN_PROGRESS
                    distribution_interval: TWO_WEEKS
                    scenarios:
                    - scenario_id: s-zoom-123
                      name: Zoom Deepfake
                      sender: Zoom
                      difficulty: Hard
                      spoofPageType: DEEPFAKE_SPOOF_PAGE
                      channel: EMAIL
                      attackVector: LINK_CLICKED
              schema:
                $ref: '#/components/schemas/PhishingSimulationDto'
          description: Successfully retrieved simulation execution details
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Unauthorized - Invalid or missing authentication token
        '404':
          content:
            application/json:
              examples:
                Not Found Error:
                  description: Not Found Error
                  value:
                    error_code: RESOURCE_NOT_FOUND
                    message: The requested simulation execution was not found
                    status_code: 404
                    request_id: 2a3b4c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Simulation execution not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Internal server error
      summary: Get simulation execution details
      tags:
      - Phishing
components:
  schemas:
    PhishingSimulationSummaryDto:
      type: object
      description: Summary information for a phishing simulation execution
      properties:
        end_date:
          type: string
          format: date-time
          description: End date of this simulation execution
          example: '2025-08-10T13:19:13.402Z'
        simulation_id:
          type: string
          description: Unique identifier for the simulation execution
          example: c18f4e0b-5678-9abc-def0-123456789abc
        start_date:
          type: string
          format: date-time
          description: Start date of this simulation execution
          example: '2025-07-10T13:19:13.402Z'
        status:
          type: string
          description: Current status of this simulation execution
          enum:
          - DRAFT
          - SCHEDULED
          - IN_PROGRESS
          - COMPLETED
          example: COMPLETED
    PhishingCampaignScenarioDto:
      type: object
      description: Phishing campaign scenario information
      properties:
        attack_vector:
          type: string
          description: User action for the scenario
          enum:
          - LINK_CLICKED
          - TEXT_REPLIED
          - PHONE_NUMBER_CALLED
          example: LINK_CLICKED
        channel:
          type: string
          description: Notification channel for the scenario
          enum:
          - EMAIL
          - TEXT
          - INBOUND_PHONE_CALL
          example: EMAIL
        difficulty:
          type: string
          description: Difficulty level of the scenario
          enum:
          - EASY
          - MEDIUM
          - HARD
          example: HARD
        name:
          type: string
          description: Name of the phishing scenario
          example: Zoom Deepfake
        scenario_id:
          type: string
          description: Unique identifier for the scenario
          example: s-zoom-123
        sender:
          type: string
          description: Sender of the phishing email
          example: Zoom
        spoof_page_type:
          type: string
          description: Spoof page type for the scenario
          enum:
          - LOGIN_SPOOF_PAGE
          - DEEPFAKE_SPOOF_PAGE
          example: DEEPFAKE_SPOOF_PAGE
    PhishingEnrollmentUserDto:
      type: object
      description: User information for phishing enrollment
      properties:
        email:
          type: string
          description: User's email address
          example: john.smith@example.com
        id:
          type: string
          description: Unique identifier for the user
          example: 123e4567-e89b-12d3-a456-426614174000
    PhishingCampaignListResponseDto:
      type: object
      description: Paginated list of phishing campaigns
      properties:
        campaigns:
          type: array
          description: List of phishing campaigns
          items:
            $ref: '#/components/schemas/PhishingCampaignDto'
        page_after:
          type: string
          description: Cursor for the next page
          example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
    PhishingEnrollmentListResponseDto:
      type: object
      description: Paginated list of phishing enrollments
      properties:
        enrollments:
          type: array
          description: List of phishing enrollments
          items:
            $ref: '#/components/schemas/PhishingEnrollmentDto'
        page_after:
          type: string
          description: Cursor for the next page
          example: f2a3b4c5-d6e7-8901-fabc-d23456789012
    ErrorDetail:
      type: object
      description: Field-level validation error details
      properties:
        field:
          type: string
          description: Field name that failed validation
          example: email
        message:
          type: string
          description: Validation error message for this field
          example: Email address is not valid
      required:
      - field
      - message
    PhishingCampaignGroupDto:
      type: object
      description: Groups associated with the phishing campaign
      properties:
        group_id:
          type: string
          description: Unique identifier for the group
          example: 123e4567-e89b-12d3-a456-426614174000
        name:
          type: string
          description: The name of the group
          example: All Users
    PhishingCampaignDto:
      type: object
      description: Phishing campaign information representing the logical campaign configuration
      properties:
        campaign_id:
          type: string
          description: Unique identifier for the campaign
          example: f3c7c8f3-1234-5678-9abc-def012345678
        created_date:
          type: string
          format: date-time
          description: Campaign creation date
          example: '2025-06-01T13:19:13.402Z'
        distribution_interval:
          type: string
          description: Interval between scenario distributions within each simulation
          enum:
          - ALL_AT_ONCE
          - DAY
          - WEEK
          - TWO_WEEKS
          - MONTH
          - THREE_MONTHS
          example: TWO_WEEKS
        end_date:
          type: string
          format: date-time
          description: Campaign end date (null for indefinite campaigns)
          example: '2025-08-10T13:19:13.402Z'
        groups:
          type: array
          description: Groups associated with the campaign
          items:
            $ref: '#/components/schemas/PhishingCampaignGroupDto'
        mode:
          type: string
          description: Campaign mode
          enum:
          - SCHEDULED
          - RECURRING
          example: RECURRING
        name:
          type: string
          description: Name of the phishing campaign
          example: Quarterly Phish Test
        recurring_interval:
          type: string
          description: Interval for recurring campaigns (only present when mode = RECURRING)
          enum:
          - HOUR
          - WEEK
          - TWO_WEEKS
          - MONTH
          - THREE_MONTHS
          example: MONTH
        scenarios:
          type: array
          description: Scenarios included in the campaign
          items:
            $ref: '#/components/schemas/PhishingCampaignScenarioDto'
        simulations:
          type: array
          description: Summary list of simulation executions for this campaign
          items:
            $ref: '#/components/schemas/PhishingSimulationSummaryDto'
        start_date:
          type: string
          format: date-time
          description: Campaign start date
          example: '2025-06-10T13:19:13.402Z'
        status:
          type: string
          description: Current status of the campaign
          enum:
          - DRAFT
          - SCHEDULED
          - IN_PROGRESS
          - COMPLETED
          example: IN_PROGRESS
        target:
          type: string
          description: Target audience for the campaign
          enum:
          - ALL_USERS
          - GROUPS
          example: GROUPS
    PhishingSimulationListResponseDto:
      type: object
      description: Paginated list of phishing simulation executions
      properties:
        page_after:
          type: string
          description: Cursor for the next page
          example: c18f4e0b-dddd-eeee-ffff-0fb2
        simulations:
          type: array
          description: List of simulation executions
          items:
            $ref: '#/components/schemas/PhishingSimulationDto'
    PhishingSimulationDto:
      type: object
      description: Detailed phishing simulation execution information
      properties:
        campaign_id:
          type: string
          description: Campaign identifier
          example: 3d65f3b0-9abc-def0-1234-56789abcdef0
        distribution_interval:
          type: string
          description: Interval between scenario distributions for this simulation
          enum:
          - ALL_AT_ONCE
          - DAY
          - WEEK
          - TWO_WEEKS
          - MONTH
          - THREE_MONTHS
          example: TWO_WEEKS
        end_date:
          type: string
          format: date-time
          description: End date of this simulation execution
          example: '2025-09-10T13:19:13.402Z'
        scenarios:
          type: array
          description: Scenarios snapshot for this specific simulation execution
          items:
            $ref: '#/components/schemas/PhishingCampaignScenarioDto'
        simulation_id:
          type: string
          description: Unique identifier for the simulation execution
          example: c18f4e0b-5678-9abc-def0-123456789abc
        start_date:
          type: string
          format: date-time
          description: Start date of this simulation execution
          example: '2025-08-10T13:19:13.402Z'
        status:
          type: string
          description: Current status of this simulation execution
          enum:
          - DRAFT
          - 

# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adaptive-security/refs/heads/main/openapi/adaptive-security-phishing-api-openapi.yml