openapi: 3.0.1
info:
  title: Data Collection API
  version: null
  description: V3 Data Collection API's
tags:
  - name: action-sets
    x-displayName: Action Sets
    description: APIs for managing Action Sets
  - name: action-set-actions
    x-displayName: Action Set Actions
    description: APIs for managing Action Set Actions
  - name: action-set-action-rules
    x-displayName: Action Set Action Rules
    description: APIs for managing Action Set Action Rules
  - name: consent-categories
    x-displayName: Consent Categories
    description: APIs for managing Consent Categories
  - name: data-sources
    x-displayName: Data Sources
    description: APIs for managing Data Sources
  - name: geo-locations
    x-displayName: Geo Locations
    description: APIs for geo locations
  - name: user-events
    x-displayName: User Events
    description: APIs for managing User Events
  - name: audits-management
    x-displayName: Audits Management
    description: APIs for managing audits
  - name: audits-consent-category
    x-displayName: Audits Consent Category
    description: APIs for managing audit consent categories
  - name: web-journeys-management
    x-displayName: Web Journeys Management
    description: APIs for managing Web Journeys
  - name: audit-blocking-config
    x-displayName: Audit Blocking Config
    description: APIs for managing audit request blocking configuration
  - name: audit-actions
    x-displayName: Audit Actions
    description: APIs for managing audit actions
  - name: audit-login-actions
    x-displayName: Audit Login Actions
    description: APIs for managing audit login actions
  - name: web-journey-blocking-config
    x-displayName: Web Journey Blocking Config
    description: APIs for managing web journey request blocking configuration
  - name: remote-file-mappings
    x-displayName: Remote File Mappings
    description: APIs for managing Remote File Mappings
  - name: web-journey-custom-headers
    x-displayName: Web Journey Custom Headers
    description: APIs for managing web journey custom headers
  - name: custom-headers
    x-displayName: Custom Headers
    description: APIs for managing custom HTTP header groups
  - name: rules
    x-displayName: Rules
    description: APIs for managing rules
  - name: schedules
    x-displayName: Schedules
    description: APIs for item schedules and calendars
  - name: email-inboxes
    x-displayName: Email Inboxes
    description: APIs for getting email messages and results from email inboxes
  - name: email-inbox-configuration
    x-displayName: Email Inbox Configuration
    description: APIs for managing email inbox configurations and setting
security:
  - API_Key: []
servers:
  - url: https://api.observepoint.com
    description: ObservePoint Production API
paths:
  /v3/user-events:
    get:
      tags:
        - user-events
      summary: Get user events in the account
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/user-events</div>


        This endpoint will get all the changes made by users in the account.
        This endpoint is only for Admins
      operationId: getUserEvents
      parameters:
        - in: query
          name: userId
          description: filter events by UserId
          required: false
          schema:
            $ref: '#/components/schemas/UserId'
        - in: query
          name: eventType
          description: filter events by event type
          required: false
          schema:
            $ref: '#/components/schemas/UserEventTypeApi'
        - in: query
          name: itemType
          description: filter events by event item type
          required: true
          schema:
            $ref: '#/components/schemas/UserEventItemTypeApi'
        - in: query
          name: itemName
          description: filter events that matches the itemName
          required: false
          schema:
            type: string
        - in: query
          name: itemId
          description: filter events by itemId
          required: false
          schema:
            type: integer
        - in: query
          name: fromTimeStamp
          description: filter events from this timeStamp
          required: false
          schema:
            type: string
            format: date-time
            example: '2021-06-01T01:30:00.000-05:00'
        - in: query
          name: toTimeStamp
          description: filter events up to this timeStamp
          required: false
          schema:
            type: string
            format: date-time
            example: '2021-06-01T01:30:00.000-05:00'
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PageSize'
        - in: query
          name: sortBy
          required: false
          schema:
            $ref: '#/components/schemas/UserEventSortByEnum'
        - $ref: '#/components/parameters/SortDescendingParam'
      responses:
        '200':
          description: Retrieve user events in the account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserEvents_ResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/action-sets:
    get:
      tags:
        - action-sets
      summary: Get action sets
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/action-sets</div>


        Retrieve all action sets in the account
      operationId: getActionSets
      parameters:
        - in: query
          name: accountId
          required: false
          schema:
            type: integer
          description: Filter action sets by account ID
      responses:
        '200':
          description: Action sets retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActionSetDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    post:
      tags:
        - action-sets
      summary: Create action set
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/action-sets</div>


        Create a new action set
      operationId: createActionSet
      parameters:
        - in: query
          name: accountId
          required: false
          schema:
            type: integer
          description: Account ID to create action set in
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActionSetDto'
      responses:
        '200':
          description: Action set created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActionSetDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/action-sets/{actionSetId}:
    get:
      tags:
        - action-sets
      summary: Get action set by ID
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/action-sets/<span
        class="op-path-parameter">{actionSetId}</span></div>


        Retrieve a specific action set by its ID
      operationId: getActionSet
      parameters:
        - name: actionSetId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: ID of the action set to retrieve
      responses:
        '200':
          description: Action set retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActionSetDto'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - action-sets
      summary: Update action set
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/action-sets/<span
        class="op-path-parameter">{actionSetId}</span></div>


        Update an existing action set
      operationId: updateActionSet
      parameters:
        - name: actionSetId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: ID of the action set to update
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActionSetDto'
      responses:
        '200':
          description: Action set updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActionSetDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - action-sets
      summary: Delete action set
      description: >-
        <div class="op-path-box"><span
        class="op-http-method-delete">DELETE</span> /v3/action-sets/<span
        class="op-path-parameter">{actionSetId}</span></div>


        Delete an existing action set
      operationId: deleteActionSet
      parameters:
        - name: actionSetId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: ID of the action set to delete
      responses:
        '204':
          description: Action set deleted successfully
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/action-sets/{actionSetId}/actions/{actionId}:
    get:
      tags:
        - action-set-actions
      summary: Get action set action
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/action-sets/<span
        class="op-path-parameter">{actionSetId}</span>/actions/<span
        class="op-path-parameter">{actionId}</span></div>


        Retrieve a specific action from an action set
      operationId: getActionSetAction
      parameters:
        - name: actionSetId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: ID of the action set
        - name: actionId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: ID of the action to retrieve
      responses:
        '200':
          description: Action retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActionSetActionDto'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - action-set-actions
      summary: Update action set action
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/action-sets/<span
        class="op-path-parameter">{actionSetId}</span>/actions/<span
        class="op-path-parameter">{actionId}</span></div>


        Update a specific action in an action set
      operationId: updateActionSetAction
      parameters:
        - name: actionSetId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: ID of the action set
        - name: actionId
          in: path
          required: true
          schema:
            type: integer
            format: int64
          description: ID of the action to update
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActionSetActionDto'
      responses:
        '200':
          description: Action updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActionSetActionDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/data-sources:
    get:
      tags:
        - data-sources
      summary: Get all data sources in the account
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/data-sources</div>


        this endpoint is get all the data sources in the account with their
        labels
      operationId: getDataSources
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PageSize'
        - in: query
          name: sortBy
          required: false
          schema:
            $ref: '#/components/schemas/DataSourceSortByEnum'
        - $ref: '#/components/parameters/SortDescendingParam'
        - in: query
          name: itemName
          required: false
          schema:
            type: string
          description: filter the items by a given name
        - in: query
          name: labelIds
          required: false
          schema:
            type: array
            items:
              type: integer
          description: filter the items by label ids
        - in: query
          name: itemType
          required: false
          schema:
            $ref: '#/components/schemas/DataSourceItemType'
          description: filter the items by a given item type
        - in: query
          name: withRuns
          required: false
          schema:
            type: boolean
          description: >-
            if true - response will only include data sources that have at least
            one run, if false - only data sources that have no runs. All data
            sources if not set.
        - in: query
          name: withLabels
          required: false
          schema:
            type: boolean
            default: true
          description: >-
            if true - response will include labels for each data source, if
            false - only the data source id. All data sources if not set.
            Disabling labels will improve performance.
        - in: query
          name: withConsentCategories
          required: false
          schema:
            type: boolean
            default: true
          description: >-
            if true - response will include consent categories. Disabling this
            will improve performance.
      responses:
        '200':
          description: Retrieve user events in the account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSourcesResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/data-sources/search:
    post:
      tags:
        - data-sources
      summary: Search data sources with specific item IDs
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/data-sources/search</div>


        This endpoint retrieves all the data sources in the account with their
        labels.
      operationId: getDataSourcesWithItemIds
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PageSize'
        - in: query
          name: sortBy
          required: false
          schema:
            $ref: '#/components/schemas/DataSourceSortByEnum'
        - $ref: '#/components/parameters/SortDescendingParam'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                itemName:
                  type: string
                  description: filter the items by a given name
                labelIds:
                  type: array
                  items:
                    type: integer
                  description: filter the items by label ids
                itemIds:
                  type: array
                  items:
                    type: integer
                  description: filter the items by IDs (itemName & labelIds are ignored)
                itemType:
                  $ref: '#/components/schemas/DataSourceItemType'
                withRuns:
                  type: boolean
                  description: >-
                    If true - response includes only data sources with at least
                    one run. If false - only those without runs. All if not set.
      responses:
        '200':
          description: Retrieve user events in the account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSourcesResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/data-sources/target-items/{itemType}/search:
    post:
      tags:
        - data-sources
      summary: >-
        Search for target items (audits or web journeys) for data source
        assignment based on searched item type (ALERT, CUSTOM_HEADER,
        EMAIL_INBOX, RULE)
      operationId: searchDataSourcesTargetItems
      parameters:
        - name: itemType
          in: path
          required: true
          description: Type of items to search for (AUDIT or WEB_JOURNEY)
          schema:
            $ref: '#/components/schemas/DataSourceItemTypeCap'
        - $ref: '#/components/parameters/DataSourceTargetItemSortByParam'
        - $ref: '#/components/parameters/SortDescendingParam'
        - $ref: '#/components/parameters/PageSize'
        - $ref: '#/components/parameters/PageParam'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataSourcesTargetItemsSearchRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataSourcesTargetItemsSearchResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/data-sources/target-items/<span
        class="op-path-parameter">{itemType}</span>/search</div>
  /v3/web-audits:
    get:
      tags:
        - audits-management
      summary: Get list of web audits
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-audits</div>


        Retrieve all web audits accessible to the authenticated user based on
        their permissions
      operationId: getWebAudits
      responses:
        '200':
          description: List of web audits
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WebAuditDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/web-audits/latest-runs:
    get:
      tags:
        - audits-management
      summary: Get latest runs for web audits
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-audits/latest-runs</div>


        Retrieve latest run information for web audits with optional account
        filtering. Deprecated: use the grid API instead.
      operationId: getWebAuditLatestRuns
      deprecated: true
      parameters:
        - in: query
          name: accountId
          description: Optional account ID to filter results
          required: false
          schema:
            type: integer
      responses:
        '200':
          description: List of latest run items
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LatestRunItemDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/web-audits/undelete:
    patch:
      tags:
        - audits-management
      summary: Undelete a web audit
      description: >-
        <div class="op-path-box"><span class="op-http-method-patch">PATCH</span>
        /v3/web-audits/undelete</div>


        Restore a single archived audit into a chosen destination Folder and
        Sub-folder. The original parents are not reinstated. Historical run data
        is not restored. Per-item outcomes (including destination_gone and
        already_restored) are returned in the 200 response body; only
        authentication and authorization failures use 401/403.
      operationId: undeleteWebAudit
      requestBody:
        description: Audit id and restore destination
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UndeleteWebAuditRequest'
      responses:
        '200':
          description: Restore outcome for the requested audit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UndeleteWebAuditResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/web-audits/{auditId}:
    parameters:
      - $ref: '#/components/parameters/AuditId'
    get:
      tags:
        - audits-management
      summary: Get audit notes by ID
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-audits/<span class="op-path-parameter">{auditId}</span></div>


        Retrieve notes for a specific audit
      operationId: getWebAuditNotes
      responses:
        '200':
          description: Audit notes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuditNotesDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - audits-management
      summary: Update audit notes
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-audits/<span class="op-path-parameter">{auditId}</span></div>


        Update notes for a specific audit
      operationId: updateWebAuditNotes
      requestBody:
        description: Updated audit notes
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuditNotesDTO'
      responses:
        '200':
          description: Updated audit notes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuditNotesDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-audits/{auditId}/actions:
    parameters:
      - $ref: '#/components/parameters/AuditId'
    get:
      tags:
        - audit-actions
      summary: Get actions for an audit
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/actions</div>


        Retrieve all actions configured for the specified audit
      operationId: getAuditActions
      responses:
        '200':
          description: List of audit actions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActionSetActionDto'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - audit-actions
      summary: Update actions for an audit
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/actions</div>


        Update the actions configured for the specified audit
      operationId: updateAuditActions
      requestBody:
        description: List of audit actions to update
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ActionSetActionDto'
      responses:
        '200':
          description: Successfully updated audit actions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActionSetActionDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-audits/{auditId}/login-actions:
    parameters:
      - $ref: '#/components/parameters/AuditId'
    get:
      tags:
        - audit-login-actions
      summary: Get login actions for an audit
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/login-actions</div>


        Retrieve all login actions configured for the specified audit
      operationId: getAuditLoginActions
      responses:
        '200':
          description: List of audit login actions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AuditLoginSequencedAction'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - audit-login-actions
      summary: Update login actions for an audit
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/login-actions</div>


        Update the login actions configured for the specified audit
      operationId: updateAuditLoginActions
      requestBody:
        description: List of audit login actions to update
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/AuditLoginSequencedAction'
      responses:
        '200':
          description: Successfully updated audit login actions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AuditLoginSequencedAction'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-audits/{auditId}/runs/{runId}/action-snapshots:
    parameters:
      - $ref: '#/components/parameters/AuditId'
      - $ref: '#/components/parameters/RunId'
  /v3/web-audits/{auditId}/blocking-configuration:
    parameters:
      - $ref: '#/components/parameters/AuditId'
    get:
      tags:
        - audit-blocking-config
      summary: Get blocking configuration for an Audit
      operationId: getAuditBlockingConfig
      responses:
        '200':
          description: Audit request blocking configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockingConfig_DTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/blocking-configuration</div>
    put:
      tags:
        - audit-blocking-config
      summary: Create blocking configuration for an Audit
      operationId: createAuditBlockingConfig
      requestBody:
        description: The Audit Blocking configuration to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BlockingConfig_DTO'
      responses:
        '200':
          description: Successfully returned the created Audit Blocking Configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockingConfig_DTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/blocking-configuration</div>
  /v3/web-audits/{auditId}/runs:
    parameters:
      - $ref: '#/components/parameters/AuditId'
    post:
      tags:
        - audits-management
      summary: run audit now
      operationId: runAuditNow
      requestBody:
        description: >
          Run the audit now. The request must contain the web-audit ID.

          Unlike v2 "run now" API, this API does not reject run requests if
          there is an active run.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuditRun_RunNowRequestDTO'
      responses:
        '201':
          description: Run started successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/runs</div>
  /v3/web-audits/{auditId}/runs/{runId}/info:
    parameters:
      - $ref: '#/components/parameters/AuditId'
      - $ref: '#/components/parameters/RunId'
      - in: query
        name: includeFilters
        description: Include filters in the response
        required: false
        schema:
          type: boolean
          default: false
    get:
      tags:
        - audits-management
      summary: Get audit configuration info for specified audit run
      operationId: getAuditRunInfo
      responses:
        '200':
          description: Audit run configuration info
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuditRun_ConfigurationInfoResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/runs/<span
        class="op-path-parameter">{runId}</span>/info</div>
  /v3/web-audits/{auditId}/consent-categories:
    parameters:
      - $ref: '#/components/parameters/AuditId'
    get:
      tags:
        - audits-consent-category
        - audits-management
        - consent-categories
      summary: Get all the consent categories assigned to an audit
      operationId: getAuditConsentCategories
      responses:
        '200':
          description: OK, return a list of consent-categories assigned to an audit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebAudit_ConsentCategories_ResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/consent-categories</div>
    patch:
      tags:
        - audits-consent-category
        - audits-management
        - consent-categories
      summary: Update the consent categories assigned to an audit
      description: >-
        <div class="op-path-box"><span class="op-http-method-patch">PATCH</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/consent-categories</div>


        Update the consent categories assigned to an audit. The request will be
        rejected if trying to assign conflicting consent category types to the
        same audit
      operationId: patchAuditConsentCategories
      requestBody:
        required: true
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/AttachmentPatchDocument_RequestDTO'
      responses:
        '200':
          description: OK, return the modified consent category assignments
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebAudit_ConsentCategories_ResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-audits/{auditId}/runs/{runId}/consent-categories:
    parameters:
      - $ref: '#/components/parameters/AuditId'
      - $ref: '#/components/parameters/RunId'
    get:
      tags:
        - audits-consent-category
        - audits-management
        - consent-categories
      summary: >-
        Retrieve all consent categories snapshots that are applied to a specific
        audit run. 
      operationId: getAuditRunConsentCategories
      responses:
        '200':
          description: OK, return a list of consent category snapshots assigned to this run
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/WebAudit_ConsentCategorySnapshots_ResponseDTO
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/runs/<span
        class="op-path-parameter">{runId}</span>/consent-categories</div>
  /v3/consent-categories/upload:
    post:
      tags:
        - consent-categories
      summary: >-
        Create or update consent categories found in the file uploaded
        previously
      operationId: uploadConsentCategories
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsentCategoriesUploadRequest'
      responses:
        '200':
          description: OK, return a list of updated consent categories
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ConsentCategoryDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/consent-categories/upload</div>
  /v3/consent-categories/upload/preview:
    post:
      tags:
        - consent-categories
      summary: >-
        Upload a file with consent category configurations and preview the
        changes
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/consent-categories/upload/preview</div>


        File uploaded must be a xlsx or csv file and cannot be larger than 1MB
      operationId: uploadConsentCategoriesPreview
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                upload:
                  type: string
                  format: binary
      responses:
        '200':
          description: Processed Results from File
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategoryUploadPreviewResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/consent-categories/library:
    get:
      tags:
        - consent-categories
      summary: Get all consent categories in the account
      operationId: getConsentCategoryLibrary
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PageSize'
        - in: query
          name: name
          required: false
          schema:
            type: string
          description: filter the consent categories by name
        - in: query
          name: labels
          required: false
          schema:
            type: array
            items:
              type: integer
          style: form
          explode: false
          description: filter the items by labels
        - in: query
          name: type
          required: false
          schema:
            $ref: '#/components/schemas/ConsentCategory_TypeEnum'
          description: filter the items by a given item type
        - in: query
          name: cmpVendor
          required: false
          description: filter the items by a given CMP vendor
          schema:
            $ref: '#/components/schemas/ConsentCategory_VendorTypeEnum'
        - in: query
          name: sortBy
          required: false
          schema:
            $ref: '#/components/schemas/ConsentCategoryLibrarySortByEnum'
        - $ref: '#/components/parameters/SortDescendingParam'
      responses:
        '200':
          description: Successfully returned a list of consent categories
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategory_LibraryResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/consent-categories/library</div>
  /v3/consent-categories/export:
    post:
      tags:
        - consent-categories
      summary: request an export of all consent categories in the account
      deprecated: true
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/consent-categories/export</div>


        Please, use
        /v3/consent-categories/exports/ACCOUNT_CONSENT_CATEGORY_CONFIGS_EXPORT
        instead
      operationId: exportConsentCategories
      responses:
        '204':
          description: Successfully requested an export of consent categories
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/consent-categories:
    post:
      tags:
        - consent-categories
      summary: Create a consent category
      operationId: createConsentCategories
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsentCategory_CreateRequestDTO'
      responses:
        '200':
          description: Successfully created a consent category
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategoryDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/consent-categories</div>
  /v3/consent-categories/{consentCategoryId}:
    parameters:
      - $ref: '#/components/parameters/ConsentCategoryId'
    get:
      tags:
        - consent-categories
      summary: Get a consent category
      operationId: getConsentCategory
      responses:
        '200':
          description: Successfully retrieved a consent category
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategoryDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span></div>
    put:
      tags:
        - consent-categories
      summary: Update a consent category
      operationId: updateConsentCategory
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsentCategory_UpdateRequestDTO'
      responses:
        '200':
          description: Successfully updated a consent category
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategoryDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span></div>
    delete:
      tags:
        - consent-categories
      summary: Delete a consent category
      operationId: deleteConsentCategory
      responses:
        '204':
          description: Successfully deleted a consent category
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span
        class="op-http-method-delete">DELETE</span> /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span></div>
  /v3/consent-categories/{consentCategoryId}/notes:
    parameters:
      - $ref: '#/components/parameters/ConsentCategoryId'
    put:
      tags:
        - consent-categories
      summary: Upsert notes for the given Consent Category
      operationId: updateConsentCategoriesNotes
      requestBody:
        description: Update notes for a given Consent Categories
        content:
          text/plain:
            schema:
              type: string
        required: false
      responses:
        '204':
          description: Successful operation
          content:
            text/plain:
              schema:
                type: string
                example: My notes for this Consent Category.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span>/notes</div>
  /v3/consent-categories/{consentCategoryId}/tags:
    parameters:
      - $ref: '#/components/parameters/ConsentCategoryId'
    get:
      tags:
        - consent-categories
      summary: Get all tag entries of a consent category
      operationId: getConsentCategoryTags
      responses:
        '200':
          description: Successfully returned a list of consent category tag entries
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategory_TagEntryResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span>/tags</div>
    patch:
      tags:
        - consent-categories
      summary: Patch consent category tag entries
      operationId: patchConsentCategoryTagEntries
      requestBody:
        description: Patch Document
        required: true
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/PatchDocument_RequestDTO'
      responses:
        '200':
          description: Successfully patched consent category tag entries
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategory_TagEntryResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-patch">PATCH</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span>/tags</div>
  /v3/consent-categories/{consentCategoryId}/request-domains:
    parameters:
      - $ref: '#/components/parameters/ConsentCategoryId'
    get:
      tags:
        - consent-categories
      summary: Get all request domains of a consent category
      operationId: getConsentCategoryRequestDomains
      responses:
        '200':
          description: Successfully returned a list of consent category request domains
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategory_RequestDomainResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span>/request-domains</div>
    patch:
      tags:
        - consent-categories
      summary: Patch consent category request domains
      operationId: patchConsentCategoryRequestDomains
      requestBody:
        description: Patch Document
        required: true
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/PatchDocument_RequestDTO'
      responses:
        '200':
          description: Successfully patched consent category tag entries
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategory_RequestDomainResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-patch">PATCH</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span>/request-domains</div>
  /v3/web-audits/{auditId}/runs/{runId}/consent-categories/reprocess:
    parameters:
      - $ref: '#/components/parameters/AuditId'
      - $ref: '#/components/parameters/RunId'
    post:
      tags:
        - audits-consent-category
        - audits-management
        - consent-categories
      summary: Reprocess consent-category for the selected auditId and runIds
      operationId: reprocessConsentCategories
      responses:
        '200':
          description: >-
            OK, start reprocessing specified audit with specified consent
            category
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/web-audits/<span
        class="op-path-parameter">{auditId}</span>/runs/<span
        class="op-path-parameter">{runId}</span>/consent-categories/reprocess</div>
  /v3/consent-categories/{consentCategoryId}/cookies:
    parameters:
      - $ref: '#/components/parameters/ConsentCategoryId'
    get:
      tags:
        - consent-categories
      summary: Get all cookies of a consent category
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span>/cookies</div>


        Get all cookies of a consent category
      operationId: getConsentCategoryCookieEntries
      responses:
        '200':
          description: Cookies setup in a consent category
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategory_CookieEntryResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    patch:
      tags:
        - consent-categories
      summary: Patch consent category cookie entries
      description: >-
        <div class="op-path-box"><span class="op-http-method-patch">PATCH</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span>/cookies</div>


        patch a consent category cookie entry
      operationId: patchConsentCategoryCookieEntries
      requestBody:
        description: JSON Object of Consent Category
        required: true
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/PatchDocument_RequestDTO'
      responses:
        '200':
          description: Successfully patched a Consent Preference Cookie Entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategory_CookieEntryResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/consent-categories/{consentCategoryId}/web-audits:
    parameters:
      - $ref: '#/components/parameters/ConsentCategoryId'
    get:
      tags:
        - consent-categories
      summary: Get audits assigned to the consent category
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span>/web-audits</div>


        Get audits assigned to the consent category
      operationId: getConsentCategoryAudits
      responses:
        '200':
          description: Web audits assigned to the consent category
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategory_WebAudits_ResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      tags:
        - consent-categories
      summary: Modify audit attachments
      description: >-
        <div class="op-path-box"><span class="op-http-method-patch">PATCH</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span>/web-audits</div>


        Modify audit attachments
      operationId: patchConsentCategoryAudits
      requestBody:
        description: Patch Document
        required: true
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/AttachmentPatchDocument_RequestDTO'
      responses:
        '200':
          description: Web audits assigned to the consent category
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsentCategory_WebAudits_ResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/consent-categories/{consentCategoryId}/labels:
    parameters:
      - $ref: '#/components/parameters/ConsentCategoryId'
    get:
      tags:
        - consent-categories
      summary: Get all labels attached to specified consent category
      operationId: getConsentCategoryAssignedLabels
      responses:
        '200':
          description: Successfully returned a list of consent category assigned labels.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span>/labels</div>
    patch:
      tags:
        - consent-categories
      summary: Patch labels attached to specified consent category
      operationId: patchConsentCategoryAssignedLabels
      requestBody:
        description: Patch Document
        required: true
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/AttachmentPatchDocument_RequestDTO'
      responses:
        '200':
          description: Successfully patched consent category assigned labels.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-patch">PATCH</span>
        /v3/consent-categories/<span
        class="op-path-parameter">{consentCategoryId}</span>/labels</div>
  /v3/web-journeys:
    get:
      tags:
        - web-journeys-management
      summary: Get web journeys
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys</div>


        Retrieve all web journeys with optional filtering
      operationId: getWebJourneys
      parameters:
        - in: query
          name: domainId
          description: Filter by domain ID
          required: false
          schema:
            type: integer
            example: 123
        - in: query
          name: monitored
          description: Filter by monitored status
          required: false
          schema:
            type: boolean
            example: true
        - in: query
          name: accountId
          description: Filter by account ID
          required: false
          schema:
            type: integer
            example: 456
      responses:
        '200':
          description: List of web journeys retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WebJourneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    post:
      tags:
        - web-journeys-management
      summary: Create web journey
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/web-journeys</div>


        Create a new web journey
      operationId: createWebJourney
      requestBody:
        description: Web journey data for creation
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebJourneyUpdateDTO'
      responses:
        '200':
          description: Web journey created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebJourneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    delete:
      tags:
        - web-journeys-management
      summary: Delete web journeys by domain or folder
      description: >-
        <div class="op-path-box"><span
        class="op-http-method-delete">DELETE</span> /v3/web-journeys</div>


        Delete web journeys by domain ID or folder ID
      operationId: deleteWebJourneys
      parameters:
        - in: query
          name: domainId
          description: Delete all web journeys in the specified domain
          required: false
          schema:
            type: integer
            example: 123
        - in: query
          name: folderId
          description: Delete all web journeys in the specified folder
          required: false
          schema:
            type: integer
            example: 456
      responses:
        '200':
          description: Web journeys deleted successfully
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
    get:
      tags:
        - web-journeys-management
      summary: Get web journey by ID
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span></div>


        Retrieve a specific web journey by its ID
      operationId: getWebJourney
      responses:
        '200':
          description: Web journey retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebJourneyDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - web-journeys-management
      summary: Update web journey
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span></div>


        Update an existing web journey
      operationId: updateWebJourney
      requestBody:
        description: Updated web journey data
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebJourneyUpdateDTO'
      responses:
        '200':
          description: Web journey updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebJourneyDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - web-journeys-management
      summary: Delete web journey
      description: >-
        <div class="op-path-box"><span
        class="op-http-method-delete">DELETE</span> /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span></div>


        Delete a specific web journey by its ID
      operationId: deleteWebJourney
      responses:
        '200':
          description: Web journey deleted successfully
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/undelete:
    patch:
      tags:
        - web-journeys-management
      summary: Undelete a web journey
      description: >-
        <div class="op-path-box"><span class="op-http-method-patch">PATCH</span>
        /v3/web-journeys/undelete</div>


        Restore a single archived web journey into a chosen destination Folder
        and Sub-folder. The original parents are not reinstated. Historical run
        data is not restored. Per-item outcomes (including destination_gone and
        already_restored) are returned in the 200 response body; only
        authentication and authorization failures use 401/403.
      operationId: undeleteWebJourney
      requestBody:
        description: Web journey id and restore destination
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UndeleteWebJourneyRequest'
      responses:
        '200':
          description: Restore outcome for the requested web journey
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UndeleteWebJourneyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/web-journeys/{webJourneyId}/status:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
    get:
      tags:
        - web-journeys-management
      summary: Get web journey status
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/status</div>


        Retrieve the current status of a web journey
      operationId: getWebJourneyStatus
      responses:
        '200':
          description: Web journey status retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebJourneyStatusDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/actions:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
    get:
      tags:
        - web-journeys-management
      summary: Get web journey actions
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/actions</div>


        Retrieve all actions for a web journey
      operationId: getWebJourneyActions
      responses:
        '200':
          description: Web journey actions retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActionSetActionDto'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - web-journeys-management
      summary: Update web journey actions
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/actions</div>


        Update all actions for a web journey
      operationId: updateWebJourneyActions
      requestBody:
        description: List of actions to update
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ActionSetActionDto'
      responses:
        '200':
          description: Web journey actions updated successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActionSetActionDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/actions/{actionId}:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
      - in: path
        name: actionId
        description: The ID of the action
        required: true
        schema:
          type: integer
          format: int64
          example: 1001
    get:
      tags:
        - web-journeys-management
      summary: Get web journey action by ID
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/actions/<span
        class="op-path-parameter">{actionId}</span></div>


        Retrieve a specific action by its ID within a web journey
      operationId: getWebJourneyAction
      responses:
        '200':
          description: Web journey action retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActionSetActionDto'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - web-journeys-management
      summary: Update web journey action
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/actions/<span
        class="op-path-parameter">{actionId}</span></div>


        Update a specific action within a web journey
      operationId: updateWebJourneyAction
      requestBody:
        description: Action data to update
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActionSetActionDto'
      responses:
        '200':
          description: Web journey action updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActionSetActionDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/runs/{runId}/status:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
      - in: path
        name: runId
        description: The ID of the web journey run
        required: true
        schema:
          type: integer
          format: int64
          example: 12345
    get:
      tags:
        - web-journeys-management
      summary: Get web journey run status
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/runs/<span
        class="op-path-parameter">{runId}</span>/status</div>


        Retrieve the status of a specific web journey run
      operationId: getWebJourneyRunStatus
      responses:
        '200':
          description: Web journey run status retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebJourneyRunStatusObject'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/runs/{runId}:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
      - in: path
        name: runId
        description: The ID of the web journey run
        required: true
        schema:
          type: integer
          format: int64
          example: 12345
    delete:
      tags:
        - web-journeys-management
      summary: Delete web journey run
      description: >-
        <div class="op-path-box"><span
        class="op-http-method-delete">DELETE</span> /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/runs/<span
        class="op-path-parameter">{runId}</span></div>


        Stop/discard a specific web journey run
      operationId: deleteWebJourneyRun
      responses:
        '204':
          description: Web journey run deleted successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/runs/current:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
    delete:
      tags:
        - web-journeys-management
      summary: Delete current web journey run
      description: >-
        <div class="op-path-box"><span
        class="op-http-method-delete">DELETE</span> /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/runs/current</div>


        Stop/discard the current web journey run
      operationId: deleteCurrentWebJourneyRun
      responses:
        '204':
          description: Current web journey run deleted successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/notificationconfig:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
    get:
      tags:
        - web-journeys-management
      summary: Get web journey notification configuration
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/notificationconfig</div>


        Retrieve notification settings for a web journey
      operationId: getWebJourneyNotificationConfig
      responses:
        '200':
          description: Notification configuration retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebJourneyNotificationConfig'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - web-journeys-management
      summary: Update web journey notification configuration
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/notificationconfig</div>


        Update or create notification settings for a web journey
      operationId: updateWebJourneyNotificationConfig
      requestBody:
        description: Notification configuration to update
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebJourneyNotificationConfig'
      responses:
        '200':
          description: Notification configuration updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebJourneyNotificationConfig'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/rules:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
    get:
      tags:
        - web-journeys-management
      summary: Get web journey rules
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/rules</div>


        Retrieve all rules associated with a web journey
      operationId: getWebJourneyRules
      responses:
        '200':
          description: Web journey rules retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebJourneyAndActionRules'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - web-journeys-management
      summary: Update web journey rules
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/rules</div>


        Bind rules to a web journey and its actions
      operationId: updateWebJourneyRules
      requestBody:
        description: Rules configuration to bind
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebJourneyAndActionRulesRequest'
      responses:
        '200':
          description: Web journey rules updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebJourneyAndActionRules'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/actions/{actionId}/rules:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
      - in: path
        name: actionId
        description: The ID of the action
        required: true
        schema:
          type: integer
          format: int64
          example: 1001
    get:
      tags:
        - web-journeys-management
      summary: Get web journey action rules
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/actions/<span
        class="op-path-parameter">{actionId}</span>/rules</div>


        Retrieve rules for a specific action within a web journey
      operationId: getWebJourneyActionRules
      responses:
        '200':
          description: Action rules retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Rule'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - web-journeys-management
      summary: Update web journey action rules
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/actions/<span
        class="op-path-parameter">{actionId}</span>/rules</div>


        Bind rules to a specific action within a web journey
      operationId: updateWebJourneyActionRules
      requestBody:
        description: Set of rule IDs to bind to the action
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: integer
              example:
                - 101
                - 102
                - 103
      responses:
        '200':
          description: Action rules updated successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Rule'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/remotefilemappings:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
    get:
      tags:
        - web-journeys-management
      summary: Get web journey remote file mappings
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/remotefilemappings</div>


        Retrieve all remote file mappings associated with a web journey
      operationId: getWebJourneyRemoteFileMappings
      responses:
        '200':
          description: Remote file mappings retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RemoteFileMapping'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - web-journeys-management
      summary: Update web journey remote file mappings
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/remotefilemappings</div>


        Bind remote file mappings to a web journey
      operationId: updateWebJourneyRemoteFileMappings
      requestBody:
        description: Set of remote file mapping IDs to bind
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: integer
                format: int64
              example:
                - 201
                - 202
                - 203
      responses:
        '200':
          description: Remote file mappings updated successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  type: integer
                  format: int64
                example:
                  - 201
                  - 202
                  - 203
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/runs/{runId}/actions/{actionSequenceId}/requests:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
      - in: path
        name: runId
        description: The ID of the web journey run
        required: true
        schema:
          type: integer
          format: int64
          example: 12345
      - in: path
        name: actionSequenceId
        description: The sequence ID of the action
        required: true
        schema:
          type: integer
          format: int64
          example: 1
    get:
      tags:
        - web-journeys-management
      summary: Get action requests
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/runs/<span
        class="op-path-parameter">{runId}</span>/actions/<span
        class="op-path-parameter">{actionSequenceId}</span>/requests</div>


        Retrieve all network requests made during an action execution
      operationId: getWebJourneyActionRequests
      responses:
        '200':
          description: Action requests retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WebJourneyActionRequestResponse'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/runs/{runId}/actions/{actionSequenceId}/logs:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
      - in: path
        name: runId
        description: The ID of the web journey run
        required: true
        schema:
          type: integer
          format: int64
          example: 12345
      - in: path
        name: actionSequenceId
        description: The sequence ID of the action
        required: true
        schema:
          type: integer
          format: int64
          example: 1
    get:
      tags:
        - web-journeys-management
      summary: Get action logs
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/runs/<span
        class="op-path-parameter">{runId}</span>/actions/<span
        class="op-path-parameter">{actionSequenceId}</span>/logs</div>


        Retrieve console logs generated during an action execution
      operationId: getWebJourneyActionLogs
      responses:
        '200':
          description: Action logs retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ConsoleLogDto'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/web-journeys/{webJourneyId}/blocking-configuration:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
    get:
      tags:
        - web-journey-blocking-config
      summary: Get blocking configuration for a web journey
      operationId: getWebJourneyBlockingConfig
      responses:
        '200':
          description: The Web Journey request blocking configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockingConfig_DTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/blocking-configuration</div>
    put:
      tags:
        - web-journey-blocking-config
      summary: Create blocking configuration for a web journey
      operationId: createWebJourneyBlockingConfig
      requestBody:
        description: The Web Journey Blocking configuration to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BlockingConfig_DTO'
      responses:
        '200':
          description: >-
            Successfully returned the created Web journey Blocking
            Configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockingConfig_DTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/blocking-configuration</div>
  /v3/web-journeys/{webJourneyId}/labels:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
    get:
      tags:
        - web-journeys-management
      summary: Get all labels attached to specified web journey
      operationId: getWebJourneyAssignedLabels
      responses:
        '200':
          description: Successfully returned a list of web journey assigned labels.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/labels</div>
    patch:
      tags:
        - web-journeys-management
      summary: Patch labels attached to specified web journey
      operationId: patchWebJourneyAssignedLabels
      requestBody:
        description: Patch Document
        required: true
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/AttachmentPatchDocument_RequestDTO'
      responses:
        '200':
          description: Successfully patched web journey assigned labels.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LabelResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-patch">PATCH</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/labels</div>
  /v3/web-journeys/{webJourneyId}/custom-headers:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
    get:
      tags:
        - web-journey-custom-headers
      summary: Get custom headers for a web journey
      operationId: getWebJourneyCustomHeaders
      responses:
        '200':
          description: Successfully returned a list of custom headers for the web journey
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebJourneyCustomHeaderDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/custom-headers</div>
    put:
      tags:
        - web-journey-custom-headers
      summary: Update custom headers for a web journey
      operationId: updateWebJourneyCustomHeaders
      requestBody:
        description: The Web Journey Custom Headers to update
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebJourneyCustomHeaderDTO'
      responses:
        '200':
          description: Successfully updated the custom headers for the web journey
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebJourneyCustomHeaderDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/custom-headers</div>
  /v3/rule-library:
    post:
      tags:
        - rules
      summary: Get all rules in an account
      operationId: getRuleLibraryRules
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - in: query
          name: size
          required: false
          schema:
            type: integer
            maximum: 1000
            default: 50
            minimum: 50
        - name: sortBy
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/RuleLibrary_SortColumn'
        - $ref: '#/components/parameters/SortDescendingParam'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RuleLibrary_RequestDTO'
      responses:
        '200':
          description: Rules
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuleLibrary_ResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/rule-library</div>
  /v3/web-journeys/{webJourneyId}/runs/{runId}/info:
    parameters:
      - $ref: '#/components/parameters/WebJourneyId'
      - $ref: '#/components/parameters/RunId'
    get:
      tags:
        - web-journeys-management
      summary: Get journey configuration info for specified journey run
      operationId: getWebJourneyRunInfo
      responses:
        '200':
          description: Web Journey run configuration info
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/WebJourneyRun_ConfigurationInfoResponseDTO
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/web-journeys/<span
        class="op-path-parameter">{webJourneyId}</span>/runs/<span
        class="op-path-parameter">{runId}</span>/info</div>
  /v3/email-inboxes/library:
    post:
      tags:
        - email-inboxes
      summary: Return filtered email inboxes
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/email-inboxes/library</div>


        Get all email inboxes that meet the filtering criteria
      operationId: getEmailInboxes
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/PageSize'
        - in: query
          name: sortBy
          required: false
          schema:
            $ref: '#/components/schemas/EmailInboxLibrarySortByEnum'
        - $ref: '#/components/parameters/SortDescendingParam'
      requestBody:
        description: Filter params
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailInboxLibraryRequestDTO'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailInboxLibraryResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/email-inboxes:
    post:
      tags:
        - email-inbox-configuration
      summary: Add a new Email Inbox
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/email-inboxes</div>


        Add a new Email Inbox
      operationId: addEmailInbox
      requestBody:
        description: Create a new Email Inbox
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailInboxRequestDTO'
        required: true
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailInboxResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/email-inboxes/{emailInboxId}:
    parameters:
      - $ref: '#/components/parameters/EmailInboxId'
    get:
      tags:
        - email-inboxes
      summary: Get Email Inbox by id
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span></div>


        Get a Email Inbox by id
      operationId: getEmailInbox
      responses:
        '200':
          description: Successful operation, resource found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailInboxResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - email-inbox-configuration
      summary: Update an existing Email Inbox
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span></div>


        Update an existing Email Inbox by Id
      operationId: updateEmailInbox
      requestBody:
        description: Update an existent Email Inbox
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailInboxRequestDTO'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailInboxResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - email-inbox-configuration
      summary: Delete an Email Inbox
      description: >-
        <div class="op-path-box"><span
        class="op-http-method-delete">DELETE</span> /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span></div>


        Delete an Email Inbox by Id
      operationId: deleteEmailInbox
      responses:
        '204':
          description: Successful operation
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/email-inboxes/{emailInboxId}/audit-configurations:
    parameters:
      - $ref: '#/components/parameters/EmailInboxId'
    get:
      tags:
        - email-inboxes
      summary: Read the configurations for an Email Inbox by id
      operationId: getEmailInboxConfigurations
      responses:
        '200':
          description: Successful operation, resource found
          content:
            application/json:
              schema:
                type: array
                description: The collection of the audits associated to an Email Inbox
                items:
                  $ref: '#/components/schemas/EmailInboxConfigurationDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span>/audit-configurations</div>
    put:
      tags:
        - email-inbox-configuration
      summary: Associate audit configurations with an existing Email Inbox
      operationId: addEmailInboxConfigurations
      requestBody:
        description: Update configurations of an existent Email Inbox
        required: true
        content:
          application/json:
            schema:
              type: array
              uniqueItems: true
              items:
                $ref: '#/components/schemas/AuditId'
      responses:
        '200':
          description: Successful operation
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span>/audit-configurations</div>
  /v3/email-inboxes/{emailInboxId}/audit-configurations/{auditId}:
    parameters:
      - $ref: '#/components/parameters/EmailInboxId'
      - $ref: '#/components/parameters/AuditId'
    put:
      tags:
        - email-inbox-configuration
      summary: Associate an audit configuration with an existing Email Inbox
      operationId: addEmailInboxConfiguration
      responses:
        '200':
          description: Successful operation
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span>/audit-configurations/<span
        class="op-path-parameter">{auditId}</span></div>
    delete:
      tags:
        - email-inbox-configuration
      summary: Delete an audit configuration from an Email Inbox
      operationId: deleteEmailInboxConfiguration
      responses:
        '204':
          description: Successful operation
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span
        class="op-http-method-delete">DELETE</span> /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span>/audit-configurations/<span
        class="op-path-parameter">{auditId}</span></div>
  /v3/email-inboxes/{emailInboxId}/labels:
    parameters:
      - $ref: '#/components/parameters/EmailInboxId'
    put:
      tags:
        - email-inbox-configuration
      summary: Upsert labels for an existing Email Inbox
      operationId: upsertInboxLabels
      requestBody:
        description: Update an existent Email Inbox labels
        content:
          application/json:
            schema:
              type: array
              uniqueItems: true
              items:
                $ref: '#/components/schemas/LabelId'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Label'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span>/labels</div>
  /v3/email-inboxes/{emailInboxId}/notes:
    parameters:
      - $ref: '#/components/parameters/EmailInboxId'
    put:
      tags:
        - email-inbox-configuration
      summary: Upsert notes for the given Email Inbox
      operationId: updateEmailInboxNotes
      requestBody:
        description: Update notes for a given Email Inbox
        content:
          text/plain:
            schema:
              type: string
        required: false
      responses:
        '204':
          description: Successful operation
          content:
            text/plain:
              schema:
                type: string
                example: >-
                  My notes for this inbox. This inbox will audit marketing
                  emails.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span>/notes</div>
  /v3/email-inboxes/{emailInboxId}/messages:
    parameters:
      - $ref: '#/components/parameters/EmailInboxId'
    get:
      tags:
        - email-inboxes
      summary: Get all email messages associated with a given Email Inbox
      operationId: getEmailInboxMessages
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/QueryParamPageSize'
        - in: query
          name: emailSubject
          required: false
          schema:
            type: string
          description: filter Email Messages by email subject
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceivedEmailMessageDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span>/messages</div>
  /v3/email-inboxes/{emailInboxId}/messages/{receivedEmailMessageId}/runs:
    parameters:
      - $ref: '#/components/parameters/EmailInboxId'
      - $ref: '#/components/parameters/ReceivedEmailMessageId'
    delete:
      tags:
        - email-inbox-configuration
      summary: Cancel all audit runs associated with a given Email Message
      operationId: cancelEmailInboxMessageRuns
      responses:
        '202':
          description: Successful operation
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span
        class="op-http-method-delete">DELETE</span> /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span>/messages/<span
        class="op-path-parameter">{receivedEmailMessageId}</span>/runs</div>
  /v3/email-inboxes/{emailInboxId}/messages/statuses:
    parameters:
      - $ref: '#/components/parameters/EmailInboxId'
    post:
      tags:
        - email-inboxes
      summary: Get all email messages statuses associated with a given Email Inbox
      operationId: getEmailInboxMessagesStatuses
      requestBody:
        description: List of email received message ids
        content:
          application/json:
            schema:
              type: array
              uniqueItems: true
              items:
                type: integer
                maxItems: 200
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReceivedEmailMessageBaseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/email-inboxes/<span
        class="op-path-parameter">{emailInboxId}</span>/messages/statuses</div>
  /v3/schedules/presets:
    get:
      tags:
        - schedules
      summary: Get all schedule presets
      operationId: getSchedulePresets
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SchedulePreset'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/schedules/presets</div>
  /v3/schedules/rule-description:
    post:
      tags:
        - schedules
      summary: Generate a description of a schedule's recurrence
      operationId: createRecurrenceRuleDescription
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleRuleDescriptionRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleRuleDescriptionResponse'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/schedules/rule-description</div>
  /v3/schedules/calendar:
    get:
      parameters:
        - $ref: '#/components/parameters/LocalStartDateTime'
        - $ref: '#/components/parameters/LocalEndDate'
      tags:
        - schedules
      summary: >-
        Calculate future occurrences based on the new schedules and the old
        frequencies
      operationId: calendarGet
      responses:
        '200':
          description: >-
            Get all data sources scheduled and future occurrences for provided
            params.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ScheduledItem'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/schedules/calendar</div>
    put:
      tags:
        - schedules
      summary: Update calendar items' schedules using this endpoint.
      operationId: calendarPut
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalendarUpdateRequestBody'
      responses:
        '204':
          description: Success
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/schedules/calendar</div>
  /v3/custom-headers:
    get:
      tags:
        - custom-headers
      summary: Get all custom header groups
      operationId: getCustomHeaderGroupSummary
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomHeaderGroupSummaryResponse'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/custom-headers</div>
    post:
      tags:
        - custom-headers
      summary: Create a custom header group
      operationId: createCustomHeaderGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomHeaderBody'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomHeaderBody'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/custom-headers</div>
  /v3/custom-headers/{customHeaderGroupId}:
    get:
      tags:
        - custom-headers
      summary: Get a custom header group by ID
      operationId: getCustomHeaderGroupById
      parameters:
        - $ref: '#/components/parameters/CustomHeaderGroupId'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomHeaderBody'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/custom-headers/<span
        class="op-path-parameter">{customHeaderGroupId}</span></div>
    put:
      tags:
        - custom-headers
      summary: Update a custom header group
      operationId: updateCustomHeaderGroup
      parameters:
        - $ref: '#/components/parameters/CustomHeaderGroupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomHeaderBody'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomHeaderBody'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/custom-headers/<span
        class="op-path-parameter">{customHeaderGroupId}</span></div>
    delete:
      tags:
        - custom-headers
      summary: Delete a custom header group by ID
      operationId: deleteCustomHeaderGroupById
      parameters:
        - $ref: '#/components/parameters/CustomHeaderGroupId'
      responses:
        '204':
          description: Successful operation
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      description: >-
        <div class="op-path-box"><span
        class="op-http-method-delete">DELETE</span> /v3/custom-headers/<span
        class="op-path-parameter">{customHeaderGroupId}</span></div>
  /v3/custom-headers/target-items/{itemType}/search:
    post:
      tags:
        - custom-headers
      summary: >-
        Search for target items (audits or web journeys) for custom header
        assignment
      operationId: searchCustomHeaderTargetItems
      parameters:
        - name: itemType
          in: path
          required: true
          description: Type of items to search for (AUDIT or WEB_JOURNEY)
          schema:
            $ref: '#/components/schemas/DataSourceItemTypeCap'
        - $ref: '#/components/parameters/SortByParam'
        - $ref: '#/components/parameters/SortDescendingParam'
        - $ref: '#/components/parameters/PageSize'
        - $ref: '#/components/parameters/PageParam'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomHeaderTargetItemsSearchRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomHeaderTargetItemsSearchResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/custom-headers/target-items/<span
        class="op-path-parameter">{itemType}</span>/search</div>
  /v3/action-sets/{actionSetId}/actions/{actionId}/rules:
    get:
      tags:
        - action-set-action-rules
      summary: Get action set action rules
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/action-sets/<span
        class="op-path-parameter">{actionSetId}</span>/actions/<span
        class="op-path-parameter">{actionId}</span>/rules</div>


        Retrieve all rules for a specific action set and action
      operationId: getActionSetActionRules
      parameters:
        - name: actionSetId
          in: path
          description: Action set ID
          required: true
          schema:
            type: integer
            format: int64
        - name: actionId
          in: path
          description: Action ID
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: Successfully retrieved rules
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Rule'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - action-set-action-rules
      summary: Update action set action rules
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/action-sets/<span
        class="op-path-parameter">{actionSetId}</span>/actions/<span
        class="op-path-parameter">{actionId}</span>/rules</div>


        Update the rules for a specific action set and action with a new set of
        rule IDs
      operationId: updateActionSetActionRules
      parameters:
        - name: actionSetId
          in: path
          description: Action set ID
          required: true
          schema:
            type: integer
            format: int64
        - name: actionId
          in: path
          description: Action ID
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        content:
          application/json:
            schema:
              uniqueItems: true
              type: array
              description: Set of rule IDs to associate with the action
              items:
                type: integer
                format: int32
        required: true
      responses:
        '200':
          description: Successfully updated rules
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Rule'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/geo-locations/countries:
    get:
      tags:
        - geo-locations
      summary: Get all available countries for geo-location filtering
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/geo-locations/countries</div>


        Retrieve a list of all available countries with their associated
        continent information for use in geo-location based filtering
      operationId: getGeoLocationCountries
      responses:
        '200':
          description: List of countries with geo-location information
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/GeoLocationCountryDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/remote-file-mappings:
    get:
      tags:
        - remote-file-mappings
      summary: Get remote file mappings
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/remote-file-mappings</div>


        Retrieve all remote file mappings with optional account filtering
      operationId: getRemoteFileMappings
      parameters:
        - in: query
          name: accountId
          description: Filter by account ID
          required: false
          schema:
            type: integer
            example: 123
      responses:
        '200':
          description: List of remote file mappings retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RemoteFileMapping'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    post:
      tags:
        - remote-file-mappings
      summary: Create remote file mapping
      description: >-
        <div class="op-path-box"><span class="op-http-method-post">POST</span>
        /v3/remote-file-mappings</div>


        Create a new remote file mapping configuration
      operationId: createRemoteFileMapping
      parameters:
        - in: query
          name: accountId
          description: Account ID to create the mapping for
          required: false
          schema:
            type: integer
            example: 123
      requestBody:
        description: Remote file mapping data for creation
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoteFileMappingRequest'
      responses:
        '200':
          description: Remote file mapping created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoteFileMapping'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/remote-file-mappings/{rfmId}:
    parameters:
      - in: path
        name: rfmId
        description: The ID of the remote file mapping
        required: true
        schema:
          type: integer
          format: int64
          example: 123
    get:
      tags:
        - remote-file-mappings
      summary: Get remote file mapping by ID
      description: >-
        <div class="op-path-box"><span class="op-http-method-get">GET</span>
        /v3/remote-file-mappings/<span
        class="op-path-parameter">{rfmId}</span></div>


        Retrieve a specific remote file mapping by its ID
      operationId: getRemoteFileMapping
      responses:
        '200':
          description: Remote file mapping retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoteFileMapping'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - remote-file-mappings
      summary: Update remote file mapping
      description: >-
        <div class="op-path-box"><span class="op-http-method-put">PUT</span>
        /v3/remote-file-mappings/<span
        class="op-path-parameter">{rfmId}</span></div>


        Update an existing remote file mapping
      operationId: updateRemoteFileMapping
      requestBody:
        description: Updated remote file mapping data
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoteFileMappingRequest'
      responses:
        '200':
          description: Remote file mapping updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoteFileMapping'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - remote-file-mappings
      summary: Delete remote file mapping
      description: >-
        <div class="op-path-box"><span
        class="op-http-method-delete">DELETE</span>
        /v3/remote-file-mappings/<span
        class="op-path-parameter">{rfmId}</span></div>


        Delete a specific remote file mapping by its ID
      operationId: deleteRemoteFileMapping
      responses:
        '204':
          description: Remote file mapping deleted successfully
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    BadRequest:
      description: The request cannot be accepted
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorModel'
    UnAuthorized:
      description: Your token is invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorModel'
    Forbidden:
      description: You don't have enough rights to access this resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorModel'
    NotFound:
      description: The object you are looking is not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorModel'
  securitySchemes:
    API_Key:
      type: apiKey
      in: header
      name: Authorization
      description: >
        Use the `Authorization` header in your requests with ObservePoint API
        key as header value.


        Example: `Authorization: abc123...def456`
  parameters:
    AuditId:
      name: auditId
      in: path
      required: true
      description: Unique identification number for web audit
      deprecated: false
      allowEmptyValue: false
      schema:
        $ref: '#/components/schemas/AuditId'
    EmailInboxId:
      name: emailInboxId
      in: path
      required: true
      description: Unique identification number for email inbox
      deprecated: false
      allowEmptyValue: false
      schema:
        $ref: '#/components/schemas/EmailInboxId'
    ReceivedEmailMessageId:
      name: receivedEmailMessageId
      in: path
      required: true
      description: Unique identification number for received email message record
      deprecated: false
      allowEmptyValue: false
      schema:
        type: integer
    LabelId:
      name: labelId
      in: path
      required: true
      description: Label ID in mysql
      deprecated: false
      allowEmptyValue: false
      schema:
        $ref: '#/components/schemas/LabelId'
    RunId:
      name: runId
      in: path
      required: true
      description: Unique identification number for web audit or journey run
      deprecated: false
      allowEmptyValue: false
      schema:
        $ref: '#/components/schemas/RunId'
    SiteCensusId:
      name: censusId
      in: path
      required: true
      description: Unique identification number for a site census
      deprecated: false
      allowEmptyValue: false
      schema:
        $ref: '#/components/schemas/CensusId'
    SortDescendingParam:
      name: sortDesc
      in: query
      description: Controls sorting order
      required: false
      schema:
        type: boolean
        default: false
    SortByParam:
      name: sortBy
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/CustomHeaderSortByEnum'
    DataSourceTargetItemSortByParam:
      name: sortBy
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/DataSourceTargetItemSortByEnum'
    ConsentCategoryId:
      name: consentCategoryId
      in: path
      required: true
      description: Unique identification number for consent category item
      deprecated: false
      allowEmptyValue: false
      schema:
        $ref: '#/components/schemas/ConsentCategoryId'
    WebJourneyId:
      name: webJourneyId
      in: path
      required: true
      description: Unique identification number for web journey item
      deprecated: false
      allowEmptyValue: false
      schema:
        $ref: '#/components/schemas/WebJourneyId'
    PageParam:
      in: query
      name: page
      description: Number of results page of an endpoint with paginated results
      required: false
      schema:
        type: integer
        default: 0
        minimum: 0
    PageSize:
      in: query
      name: pageSize
      required: false
      schema:
        type: integer
        maximum: 1000
        default: 100
        minimum: 100
    ArchivedItemsSortFieldParam:
      in: query
      name: sortBy
      description: Field to sort by. Defaults to deletedAt.
      required: false
      schema:
        $ref: '#/components/schemas/ArchivedItemSortField'
    ArchivedItemsSearchParam:
      in: query
      name: search
      description: Case-insensitive substring match on the item name.
      required: false
      schema:
        type: string
    SiteCensus_Get_PageSizeParam:
      in: query
      name: pageSize
      required: false
      schema:
        type: integer
        maximum: 1000
        default: 10
        minimum: 10
    SiteCensus_Filter_ByName:
      in: query
      name: filterByName
      required: false
      schema:
        type: string
    QueryParamPageSize:
      in: query
      name: size
      required: false
      schema:
        type: integer
        maximum: 1000
        default: 50
        minimum: 50
    LocalStartDateTime:
      in: query
      name: localStartDateTime
      required: false
      schema:
        $ref: '#/components/schemas/ISO8601LocalDateTime'
    LocalEndDate:
      in: query
      name: localEndDateTime
      required: false
      schema:
        $ref: '#/components/schemas/ISO8601LocalDateTime'
    CustomHeaderGroupId:
      name: customHeaderGroupId
      in: path
      required: true
      description: Unique identification number for custom header group
      deprecated: false
      allowEmptyValue: false
      schema:
        type: integer
  schemas:
    DateAndTime:
      type: string
      format: date-time
      description: >
        Date-time in [RFC3339 profile ISO 8601
        format](https://www.ietf.org/rfc/rfc3339.txt) with

        the following additional restrictions:

        1. An uppercase T must separate the date and time portions.

        2. An uppercase Z must denote that a numeric time zone offset isn't
        present.


        In general, these timestamp requirements are the same in

        [AWS Step Functions - Choice
        Rules](https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-choice-state.html)
      example: '2016-08-18T17:33:00Z'
    ConsoleLogDto:
      type: object
      properties:
        message:
          type: string
          description: The console message
        count:
          type: integer
          minimum: 1
          description: >-
            The number of times this exact console message was encountered in
            the given context
        level:
          type: string
          enum:
            - SEVERE
            - WARNING
            - INFO
            - FINE
          description: The console log level
        timestamp:
          type: integer
          format: int64
          description: Timestamp when the log occurred
        source:
          type: string
          description: The file that triggered the console log, if it can be determined
    WebJourneyNotificationConfig:
      type: object
      properties:
        emails:
          type: array
          items:
            type: string
          description: List of email addresses for notifications
        alerts:
          type: boolean
          description: Whether alerts are enabled
        webHookUrl:
          type: string
          description: Webhook URL for notifications
    WebJourneyRunStatusObject:
      type: object
      properties:
        status:
          type: integer
          description: The numeric status value of the web journey run
    WebJourneyAndActionRules:
      type: object
      properties:
        webJourneyRules:
          type: array
          items:
            $ref: '#/components/schemas/Rule'
          description: List of rules for the web journey
        actionRules:
          type: array
          items:
            $ref: '#/components/schemas/WebJourneyActionRules'
          description: List of action-specific rules
    WebJourneyActionRules:
      type: object
      properties:
        actionId:
          type: integer
          format: int64
          description: The ID of the action
        rules:
          type: array
          items:
            $ref: '#/components/schemas/Rule'
          description: List of rules for this action
    WebJourneyAndActionRulesRequest:
      type: object
      properties:
        webJourneyRules:
          type: array
          items:
            type: integer
          uniqueItems: true
          description: Set of web journey rule IDs
        actionRules:
          type: array
          items:
            $ref: '#/components/schemas/WebJourneyActionRulesRequest'
          description: List of action rule requests
    WebJourneyActionRulesRequest:
      type: object
      properties:
        actionId:
          type: integer
          format: int64
          description: The ID of the action
        rules:
          type: array
          items:
            type: integer
          uniqueItems: true
          description: Set of rule IDs for this action
    AuditRun:
      type: object
      properties:
        runId:
          $ref: '#/components/schemas/RunId'
        completedAt:
          type: string
          format: date-time
    ActionSetDto:
      type: object
      properties:
        id:
          type: integer
          format: int64
          readOnly: true
        name:
          type: string
          description: Name of the action set
          nullable: false
          minLength: 1
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ActionSetActionDto'
          description: List of actions in the action set
          nullable: false
          minItems: 1
        updatedAt:
          type: string
          format: local-date-time
          readOnly: true
          description: Timestamp when the action set was last updated
        createdAt:
          type: string
          format: local-date-time
          readOnly: true
          description: Timestamp when the action set was created
        accountId:
          type: integer
          readOnly: true
          description: ID of the account the action set belongs to
        userId:
          type: integer
          readOnly: true
          description: ID of the user the action set belongs to
      required:
        - name
        - actions
    SequencedAction:
      type: object
      properties:
        sequence:
          type: integer
          description: Sequence number of the action
          nullable: false
        id:
          type: integer
          format: int64
          readOnly: true
          description: ID of the action
        description:
          type: string
          description: >-
            Description of the action. Present for all actionTypes except:
            actionSet
        actionType:
          type: string
          enum:
            - click
            - input
            - maskedinput
            - select
            - check
            - uncheck
            - enteriframe
            - navto
            - watch
            - clearcookies
            - execute
            - exitiframe
            - privacyoptin
            - privacyoptout
            - actionset
          description: Type of the user action
          nullable: false
        waitDuration:
          type: integer
          description: >-
            Duration to wait in milliseconds. Present for actionTypes: navTo,
            click, input, select, check, uncheck, execute, watch, maskedInput,
            enterIFrame, exitIFrame, clearCookies, privacyOptIn, privacyOptOut
        selectors:
          type: array
          items:
            $ref: '#/components/schemas/WebActionSelector'
          description: >-
            List of selectors for element-based actions. Present for
            actionTypes: click, input, select, check, uncheck, maskedInput,
            enterIFrame
        preventNavigation:
          type: boolean
          description: >-
            Whether to prevent navigation after action execution. Present for
            actionTypes: click, input, select, check, uncheck, execute, watch,
            maskedInput
        value:
          type: string
          description: >-
            Value field with different meanings per actionType. For
            input/select: input value. For navTo: URL. For
            privacyOptIn/privacyOptOut: URL. For execute: JavaScript code.
            Present for actionTypes: input, select, navTo, privacyOptIn,
            privacyOptOut, execute
        maskedValue:
          type: string
          description: >-
            Masked value for secure input actions. Present for actionType:
            maskedInput
        js:
          type: string
          description: 'JavaScript code to execute. Present for actionType: execute'
        url:
          type: string
          description: >-
            URL for navigation and privacy actions. Present for actionTypes:
            navTo, privacyOptIn, privacyOptOut
        seconds:
          type: integer
          description: 'Number of seconds to watch/wait. Present for actionType: watch'
        isRequired:
          type: boolean
          description: >-
            Whether privacy action is required. Present for actionTypes:
            privacyOptIn, privacyOptOut
      required:
        - sequence
        - actionType
    AuditLoginSequencedAction:
      allOf:
        - $ref: '#/components/schemas/SequencedAction'
        - type: object
          properties:
            actionSetId:
              type: integer
              format: int64
              description: >-
                ID of the action set to reference. Present for actionType:
                actionset
    ActionSetActionDto:
      allOf:
        - $ref: '#/components/schemas/SequencedAction'
        - type: object
          properties:
            actionSetId:
              type: integer
              format: int64
              description: >-
                ID of the action set this action belongs to. For actionType
                'actionSet', this contains the referenced action set ID
            pageFilter:
              type: string
              description: Page filter pattern for the action
    WebActionSelector:
      type: object
      properties:
        selectorType:
          $ref: '#/components/schemas/WebActionSelectorType'
        value:
          description: >-
            Selector value - string for simple selectors (CSS, XPath, id, name)
            or AttributeSelectorValue object for htmlattributes selector type
      required:
        - selectorType
        - value
    WebActionSelectorType:
      type: string
      enum:
        - id
        - name
        - css
        - xpath
        - htmlattributes
    ElementAttribute:
      type: object
      properties:
        name:
          type: string
          description: Attribute name
        value:
          type: string
          description: Attribute value
      required:
        - name
        - value
    EngineActionDTO:
      type: object
      description: >-
        Engine action DTO for internal services - represents an action to be
        executed by the chrome-engine
      properties:
        elementSelectors:
          type: array
          items:
            $ref: '#/components/schemas/EngineActionSelectorDTO'
          description: List of element selectors for the action
          default: []
        filter:
          type: string
          description: CSS selector filter
        input:
          type: string
          description: Input value for the action
        label:
          type: string
          description: Label/description of the action
        secretInput:
          type: string
          description: Encrypted/secret input value
        preventNavigation:
          type: boolean
          description: Whether to prevent navigation after the action
        actionType:
          type: integer
          description: Type of action to perform
        sequenceId:
          type: integer
          description: Sequence identifier
        snapshotId:
          type: integer
          description: Snapshot identifier
        value:
          type: integer
          description: Value associated with the action
        waitDuration:
          type: integer
          description: Wait duration in milliseconds
        id:
          type: integer
          format: int64
          description: Action identifier
        isRequired:
          type: boolean
          description: Whether the action is required
    AuditActionsSnapshotDTO:
      type: object
      description: Snapshot of audit actions including pre-audit and on-page actions
      properties:
        preAuditActions:
          type: array
          items:
            $ref: '#/components/schemas/EngineActionDTO'
          description: Actions to execute before the audit
          default: []
        onPageAuditActions:
          type: array
          items:
            $ref: '#/components/schemas/EngineActionDTO'
          description: Actions to execute on each page during the audit
          default: []
    EngineActionSelectorDTO:
      description: >-
        Polymorphic selector for engine actions - can be simple (string) or
        attribute-based
      discriminator:
        propertyName: jsonType
        mapping:
          simple: '#/components/schemas/EngineActionSimpleSelectorDTO'
          attribute: '#/components/schemas/EngineActionAttributeSelectorDTO'
      oneOf:
        - $ref: '#/components/schemas/EngineActionSimpleSelectorDTO'
        - $ref: '#/components/schemas/EngineActionAttributeSelectorDTO'
    EngineActionSimpleSelectorDTO:
      type: object
      description: Simple selector using a string value (e.g., CSS selector)
      required:
        - jsonType
        - strategy
        - value
      properties:
        jsonType:
          type: string
          enum:
            - simple
          description: Selector type discriminator - must be 'simple'
        strategy:
          type: integer
          description: Selector strategy identifier
        value:
          type: string
          description: Selector value (e.g., CSS selector like '#submit-button')
    EngineActionAttributeSelectorDTO:
      type: object
      description: Attribute-based selector using element attributes
      required:
        - jsonType
        - strategy
        - value
      properties:
        jsonType:
          type: string
          enum:
            - attribute
          description: Selector type discriminator - must be 'attribute'
        strategy:
          type: integer
          description: Selector strategy identifier
        value:
          $ref: '#/components/schemas/AttributeSelectorValue'
    AttributeSelectorValue:
      type: object
      properties:
        tagName:
          type: string
          description: HTML tag name
        innerHTML:
          type: string
          description: Inner HTML content
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/ElementAttribute'
          description: List of element attributes
    WebJourneyRunRequestDTO:
      type: object
      description: Complete configuration snapshot for a web journey run
      properties:
        runId:
          type: integer
          format: int64
          description: Run identifier
        id:
          type: integer
          format: int64
          description: Web journey identifier
        accountId:
          type: integer
          format: int64
          description: Account identifier
        propertyId:
          type: integer
          format: int64
          description: Property/domain identifier
        userAgentId:
          type: integer
          description: User agent identifier
        awsRegion:
          type: string
          description: AWS region for execution
        tagMask:
          type: string
          description: Tag mask configuration
        proxy:
          type: string
          description: Proxy server configuration
        options:
          $ref: '#/components/schemas/WebJourneyOptionsDTO'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/EngineActionDTO'
          description: List of actions to execute
        vpnEnabled:
          type: boolean
          description: Whether VPN is enabled
        gpcEnabled:
          type: boolean
          description: Whether Global Privacy Control is enabled
        blockThirdPartyCookies:
          type: boolean
          description: Whether to block third-party cookies
        rfmConfigs:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/RemoteFileMappingConfigDTO'
          description: Remote file mapping configurations keyed by mapping ID
        customHeaderGroup:
          type: array
          items:
            $ref: '#/components/schemas/CustomHeaderGroupSnapshot'
          description: Custom header groups for the journey
        browserName:
          type: string
          description: Browser name used for the journey run
        browserVersion:
          type: string
          description: Browser version used for the journey run
        userAgentString:
          type: string
          description: Full user agent string used for the journey run
    WebJourneyOptionsDTO:
      type: object
      description: Browser and execution options for web journey
      properties:
        loadVideos:
          type: boolean
          description: Whether to load videos
        browserWidth:
          type: integer
          description: Browser viewport width in pixels
        browserHeight:
          type: integer
          description: Browser viewport height in pixels
        dataLayer:
          type: string
          description: Data layer name for analytics
    RemoteFileMappingConfigDTO:
      type: object
      description: Configuration for remote file mapping
      properties:
        s3File:
          $ref: '#/components/schemas/S3FileDTO'
        fileUrl:
          type: string
          description: URL of the replacement file
        matchType:
          type: integer
          description: Match type (1=equals, 2=regex, etc.)
        matchValue:
          type: string
          description: Value to match against
    S3FileDTO:
      type: object
      description: S3 file reference
      properties:
        bucket:
          type: string
          description: S3 bucket name
        key:
          type: string
          description: S3 object key (full path)
    WebJourneyStartReason:
      type: integer
      description: Reason for starting the web journey run
      enum:
        - 1
        - 2
      x-enum-varnames:
        - SCHEDULE
        - RUN_NOW
    PossibleMigrations:
      type: object
      properties:
        auditsWithMatchedActions:
          type: array
          items:
            $ref: '#/components/schemas/ActionSetLibraryItem'
          description: Audits that have actions matching the action set
        auditsWithMatchedLoginActions:
          type: array
          items:
            $ref: '#/components/schemas/ActionSetLibraryItem'
          description: Audits that have login actions matching the action set
        journeys:
          type: array
          items:
            $ref: '#/components/schemas/ActionSetLibraryItem'
          description: Web journeys that can use this action set
    ActionSetLibraryItem:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: ID of the audit or journey
        name:
          type: string
          description: Name of the audit or journey
        access:
          type: boolean
          description: Whether the user has access to this audit or journey
      required:
        - id
        - name
        - access
    PreSignedUrlResponse:
      type: object
      properties:
        putPresignedUrl:
          type: string
        getPresignedUrl:
          type: string
      required:
        - putPresignedUrl
        - getPresignedUrl
    DataSourcesResult:
      type: object
      required:
        - metadata
        - dataSources
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        dataSources:
          type: array
          items:
            $ref: '#/components/schemas/DataSource'
    DataSourceItemTypeCap:
      description: Type of data source item.
      type: string
      enum:
        - AUDIT
        - WEB_JOURNEY
    DataSourceItemType:
      description: Type of data source item.
      type: string
      enum:
        - audit
        - web-journey
    DataSource:
      type: object
      required:
        - itemType
        - itemId
        - labels
      properties:
        itemType:
          $ref: '#/components/schemas/DataSourceItemType'
        itemId:
          type: integer
        itemName:
          type: string
        lastCompletedRun:
          $ref: '#/components/schemas/AuditRun'
        consentCategoryType:
          $ref: '#/components/schemas/ConsentCategory_TypeEnum'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
    UndeleteWebAuditRequest:
      type: object
      required:
        - id
        - folderId
        - subFolderId
      properties:
        id:
          type: integer
          format: int32
        folderId:
          type: integer
          format: int32
        subFolderId:
          type: integer
          format: int32
    UndeleteWebJourneyRequest:
      type: object
      required:
        - id
        - folderId
        - subFolderId
      properties:
        id:
          type: integer
          format: int64
        folderId:
          type: integer
          format: int32
        subFolderId:
          type: integer
          format: int32
    UndeleteWebAuditResponse:
      type: object
      required:
        - id
        - status
      properties:
        id:
          type: integer
          format: int32
        status:
          $ref: '#/components/schemas/UndeleteStatus'
        folderId:
          type: integer
          format: int32
        subFolderId:
          type: integer
          format: int32
        code:
          $ref: '#/components/schemas/UndeleteFailureCode'
        reason:
          type: string
    UndeleteWebJourneyResponse:
      type: object
      required:
        - id
        - status
      properties:
        id:
          type: integer
          format: int64
        status:
          $ref: '#/components/schemas/UndeleteStatus'
        folderId:
          type: integer
          format: int32
        subFolderId:
          type: integer
          format: int32
        code:
          $ref: '#/components/schemas/UndeleteFailureCode'
        reason:
          type: string
    UndeleteStatus:
      type: string
      enum:
        - restored
        - failed
    UndeleteFailureCode:
      type: string
      enum:
        - destination_gone
        - already_restored
        - error
    DataSourceSortByEnum:
      type: string
      default: lastRun
      enum:
        - itemName
        - itemType
        - lastRun
    UserEventsResult:
      type: object
      required:
        - metadata
        - userEvents
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        userEvents:
          type: array
          items:
            $ref: '#/components/schemas/UserEvent'
    CommonIterableResponseMetadata:
      description: Common metadata for iterable
      type: object
      required:
        - pagination
      properties:
        pagination:
          $ref: '#/components/schemas/PaginationMetadata'
    PaginationMetadata:
      type: object
      required:
        - totalCount
        - totalPageCount
        - pageSize
        - currentPageSize
        - currentPageNumber
      properties:
        totalCount:
          description: Total number of items available from all result pages combined
          type: integer
        totalPageCount:
          description: Total number of pages available
          type: integer
        pageSize:
          description: >-
            Page size - number of items per result page configured by `size`
            query parameter or default page size
          type: integer
        currentPageSize:
          description: Number of items in current result page
          type: integer
        currentPageNumber:
          description: Current page number/ordinal
          type: integer
    AccountId:
      type: integer
      description: ID of an account
      example: 123
    UserId:
      type: integer
      description: ID of a user
      example: 123
    InstallationId:
      type: integer
      format: int64
      description: ID of a GitHub App installation
      example: 123456789
    GitHubAppInstallationRecordId:
      type: integer
      format: int64
      description: >-
        Database record ID from github_app_installations table. This is NOT
        GitHub's installation_id.
      example: 42
    GitHubAppSetupActionEnum:
      type: string
      enum:
        - install
        - update
        - request
      description: |
        The action that triggered the GitHub App setup callback:
        - install: User installed the app
        - update: User updated the app permissions
        - request: User requested installation approval
    ConsentCategoriesUploadRequest:
      type: object
      required:
        - fileId
        - consentCategories
      properties:
        fileId:
          type: string
        consentCategories:
          type: array
          default: []
          items:
            $ref: '#/components/schemas/ConsentCategoryUploadWithLabels'
    ConsentCategoryUploadWithLabels:
      type: object
      required:
        - labels
      properties:
        consentCategoryName:
          type: string
        labels:
          type: array
          default: []
          items:
            type: integer
        consentCategoryId:
          $ref: '#/components/schemas/ConsentCategoryId'
    ConsentCategoryUploadPreviewResult:
      type: object
      required:
        - results
      properties:
        fileId:
          type: string
        results:
          type: array
          items:
            $ref: '#/components/schemas/ConsentCategoryFoundResult'
    ConsentCategoryFoundResult:
      type: object
      required:
        - consentCategoryName
        - noOfNewCookies
        - consentCategoryId
      properties:
        consentCategoryName:
          type: string
        noOfNewCookies:
          type: integer
        noOfNewTags:
          type: integer
        noOfNewRequests:
          type: integer
        consentCategoryId:
          $ref: '#/components/schemas/ConsentCategoryId'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
    ConsentCategoryLabel:
      description: DTO for label assigned to a Consent Category
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    AuditId:
      type: integer
      format: int64
      example: 107239
    EmailInboxId:
      type: integer
    PageId:
      type: string
      example: f9d32cc7cc2046d6decb145a80289287f5226323
    RunId:
      type: integer
      format: int64
      example: 33010
    CensusId:
      type: integer
      format: int64
    InitiatorHierarchyNodeDTO:
      allOf:
        - $ref: '#/components/schemas/InitiatorRelationshipStrength'
        - type: object
          properties:
            aggregatedLoadTime:
              type: integer
            name:
              type: string
            size:
              type: integer
            relationshipStrength:
              $ref: '#/components/schemas/InitiatorRelationshipStrength'
            tagName:
              type: string
            tagId:
              type: integer
            url:
              type: string
            children:
              type: array
              items:
                $ref: '#/components/schemas/InitiatorHierarchyNodeDTO'
            substitution:
              $ref: '#/components/schemas/Substitution'
            requestBlocking:
              $ref: '#/components/schemas/RequestBlocking'
    LocationData:
      type: object
      required:
        - country
      properties:
        country:
          type: string
    TagProperties:
      type: object
      description: Tag information object containing category and tag details
      properties:
        tagCategoryId:
          type: integer
          description: Tag category ID
        tagCategoryName:
          type: string
          description: Tag category name
        tagId:
          type: integer
          description: Tag ID
        tagName:
          type: string
          description: Tag name
    WebJourneyActionRequestResponse:
      type: object
      properties:
        pageref:
          type: string
        startedDateTime:
          type: string
          format: date-time
          description: >-
            The full date and time, according to ISO-8601 (e. g.
            2020-08-25T21:15:43Z)
        time:
          type: integer
          minimum: 0
          description: Request's duration in milliseconds
        request:
          $ref: '#/components/schemas/HarRequest'
        response:
          $ref: '#/components/schemas/HarResponse'
        cache:
          $ref: '#/components/schemas/HarCache'
        timings:
          $ref: '#/components/schemas/HarEntryTimings'
        serverIPAddress:
          type: string
        connection:
          type: string
        comment:
          type: string
        resourceType:
          type: string
          description: Resource type (script, xhr, image, document, font, ping, etc.)
        locationData:
          $ref: '#/components/schemas/LocationData'
        tag:
          $ref: '#/components/schemas/TagProperties'
        tagId:
          type: integer
    InitiatorRelationshipStrength:
      type: string
      enum:
        - low
        - medium
        - high
    InitiatorsPageRequest:
      required:
        - runId
      properties:
        pageId:
          $ref: '#/components/schemas/PageId'
        runId:
          $ref: '#/components/schemas/RunId'
        url:
          type: string
    Frequency:
      type: string
      description: combination of journey and audit frequency
      enum:
        - paused
        - once
        - 15 minutes
        - 1 hour
        - 6 hours
        - 12 hours
        - daily
        - weekly
        - biweekly
        - monthly
        - quarterly
        - semiannually
        - yearly
    BaseScheduleForCreation:
      required:
        - dtStart
        - tzId
        - recurrenceRule
        - isPaused
      properties:
        dtStart:
          type: string
          description: Date of first desired start (if in range of recurrence rule).
        tzId:
          type: string
          description: >-
            Timezone identifier compliant with tz database (ex.
            America/New_York).
            https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
        recurrenceRule:
          type: string
          description: >-
            An RFC-5545 (https://www.rfc-editor.org/rfc/rfc5545#appendix-A)
            compliant recurrence rule string.
        isPaused:
          type: boolean
          description: Whether the schedule is paused or not.
    ScheduleWithExceptionsAndDescription:
      required:
        - description
      type: object
      description: Schedule object with exception dates for the calendar endpoint.
      allOf:
        - $ref: '#/components/schemas/ScheduleWithExceptions'
        - type: object
          properties:
            description:
              type: string
              description: A description of the schedule.
    ScheduleWithExceptions:
      required:
        - dtStart
        - tzId
        - recurrenceRule
        - isPaused
        - exceptions
      type: object
      description: Schedule object with exception dates for the calendar endpoint.
      allOf:
        - $ref: '#/components/schemas/BaseScheduleForCreation'
        - type: object
          properties:
            exceptions:
              description: List of dates to skip when scheduling.
              type: array
              items:
                $ref: '#/components/schemas/ISO8601LocalDateTime'
    Schedule:
      type: object
      required:
        - dtStart
        - tzId
        - recurrenceRule
        - isPaused
        - description
        - presetType
      allOf:
        - $ref: '#/components/schemas/BaseScheduleForCreation'
        - type: object
          properties:
            description:
              type: string
              description: A description of the schedule.
            presetType:
              type: string
              description: The preset type of the schedule.
              enum:
                - 12_HOUR
                - BIWEEKLY
                - SEMI_ANNUALLY
                - YEARLY
                - RUN_ONCE
                - 15_MIN
                - HOURLY
                - 6_HOUR
                - DAILY
                - WEEKLY
                - MONTHLY
                - QUARTERLY
                - CUSTOM
                - UNSCHEDULED
    SchedulePreset:
      type: object
      required:
        - freqId
        - friendlyName
        - rule
        - groupId
      properties:
        freqId:
          type: string
          description: The preset's frequency ID
          example: 15_MIN
        friendlyName:
          type: string
          description: The preset's user-friendly name
          example: Every 15 Minutes
        rule:
          type: string
          description: The preset's recurrence rule
          example: FREQ=MINUTELY;INTERVAL=15
        groupId:
          type: string
          description: The membership ID for the group
    ScheduleRuleDescriptionRequest:
      type: object
      required:
        - recurrenceRule
      properties:
        recurrenceRule:
          type: string
          description: >-
            An RFC-5545 (https://www.rfc-editor.org/rfc/rfc5545#appendix-A)
            compliant recurrence rule string.
    ScheduleRuleDescriptionResponse:
      type: object
      required:
        - description
      properties:
        description:
          type: string
          description: A description of the schedule.
    MonthFullString:
      type: string
      enum:
        - January
        - February
        - March
        - April
        - May
        - June
        - July
        - August
        - September
        - October
        - November
        - December
    UserEvents_ResponseDTO:
      type: object
      properties:
        nextPage:
          type: boolean
          description: true if there are more pages of data to return
        userEvents:
          items:
            $ref: '#/components/schemas/UserEvent_ItemDTO'
    UserEvent_ItemDTO:
      description: event log by user
      type: object
      properties:
        userId:
          $ref: '#/components/schemas/UserId'
        userName:
          type: string
        eventType:
          $ref: '#/components/schemas/UserEventTypeApi'
        itemType:
          $ref: '#/components/schemas/UserEventItemTypeApi'
        itemId:
          type: integer
        itemName:
          type: string
        eventTimeStamp:
          type: string
          format: date-time
    UserEvent:
      description: event log by user
      type: object
      properties:
        userId:
          $ref: '#/components/schemas/UserId'
        userName:
          type: string
        eventType:
          $ref: '#/components/schemas/UserEventTypeApi'
        itemType:
          $ref: '#/components/schemas/UserEventItemTypeApi'
        itemId:
          type: integer
        itemName:
          type: string
        eventTimeStamp:
          type: string
          format: date-time
    UserEventTypeApi:
      type: string
      enum:
        - created
        - deleted
        - run-requested
        - uploaded
        - edited
        - overage-enabled
        - overage-disabled
        - undeleted
    UserEventItemTypeApi:
      type: string
      enum:
        - audit
        - web-journey
        - mobile-journey
        - mobile-app-file
        - folder
        - subfolder
        - consent-category
        - account
        - email-inbox
        - grid-saved-report
        - custom-http-header-group
    UserEventSortByEnum:
      type: string
      enum:
        - userId
        - userName
        - eventType
        - itemId
        - itemName
        - eventTimeStamp
      default: eventTimeStamp
    PatchDocument_RequestDTO:
      type: array
      items:
        $ref: '#/components/schemas/PatchDocument_ItemDTO'
    PatchDocument_ItemDTO:
      description: A JSONPatch document as defined by RFC 6902
      required:
        - op
        - path
      properties:
        op:
          type: string
          description: The operation to be performed
          enum:
            - add
            - remove
            - replace
            - move
            - copy
            - test
        path:
          type: string
          description: A JSON-Pointer
        value:
          type: object
          description: The value to be used within the operations.
        from:
          type: string
          description: A string containing a JSON Pointer value.
    AttachmentPatchDocument_RequestDTO:
      type: array
      items:
        $ref: '#/components/schemas/AttachmentPatchDocument_ItemDTO'
    AttachmentPatchDocument_ItemDTO:
      description: A JSONPatch document for modifying consent preference attachments
      properties:
        op:
          type: string
          description: The operation to be performed
          enum:
            - add
            - remove
        path:
          type: string
        value:
          type: integer
          description: id of the item to assign
      example:
        - op: add
          path: /-
          value: 1
        - op: remove
          path: /
          value: 2
    ConsentCategoryId:
      type: integer
      example: 3301
      description: ID of consent category
    WebJourneyId:
      type: integer
      format: int64
      example: 107239
    ConsentCategorySnapshotId:
      type: integer
      format: int64
      example: 33010
      description: >-
        Use in filtering purposes is DEPRECATED in favour of
        `ConsentCategoryId`! Snapshot Id of consent category attached to this
        run
    ConsentCategory_TypeEnum:
      type: string
      enum:
        - approved
        - unapproved
    ConsentCategory_Cmp_Data:
      type: object
      required:
        - cmpVendor
        - oneTrustCookieGroupDomain
        - oneTrustCookieGroupId
        - oneTrustCookieGroupGeo
      properties:
        cmpVendor:
          $ref: '#/components/schemas/ConsentCategory_VendorTypeEnum'
        oneTrustCookieGroupDescription:
          type: string
          description: The OneTrust provided description of the group
        oneTrustCookieGroupDomain:
          type: string
          description: The domain reported by OneTrust for which the consent group applies
          example: observepoint.com
        oneTrustCookieGroupId:
          type: string
          description: The OneTrust ID for the group
          example: C001
        oneTrustCookieGroupGeo:
          type: string
          description: The geographic location for which the consent group applies
          example: us, ut
        sourceUrl:
          type: string
          description: The full URL of the page where the CMP import was run
          example: https://example.com
    ConsentCategory_VendorTypeEnum:
      type: string
      enum:
        - ONE_TRUST
    ConsentCategory_updatedType:
      type: string
      enum:
        - ONETRUST_IMPORT
        - FILE_IMPORT
        - APP_CREATE
    ConsentCategory_CreateRequestDTO:
      type: object
      required:
        - name
        - type
      properties:
        name:
          type: string
          minLength: 1
        notes:
          type: string
        type:
          $ref: '#/components/schemas/ConsentCategory_TypeEnum'
        isDefaultCC:
          type: boolean
          description: If true, this is the default consent category
        cmpData:
          $ref: '#/components/schemas/ConsentCategory_Cmp_Data'
    ConsentCategory_UpdateRequestDTO:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          minLength: 1
        notes:
          type: string
        isDefaultCC:
          type: boolean
          description: If true, this is the default consent category
        cmpData:
          $ref: '#/components/schemas/ConsentCategory_Cmp_Data'
    ConsentCategoriesResponseDTO:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        consentCategories:
          type: array
          items:
            $ref: '#/components/schemas/ConsentCategoryDTO'
    ConsentCategoryDTO:
      type: object
      properties:
        name:
          type: string
        notes:
          type: string
        type:
          $ref: '#/components/schemas/ConsentCategory_TypeEnum'
        id:
          $ref: '#/components/schemas/ConsentCategoryId'
        isDefaultCC:
          type: boolean
          description: If true, this is the default consent category
        cmpData:
          $ref: '#/components/schemas/ConsentCategory_Cmp_Data'
        updatedType:
          $ref: '#/components/schemas/ConsentCategory_updatedType'
        updatedAt:
          type: string
          format: date-time
          description: The last time this consent category was updated in UTC timezone
    ConsentCategorySnapshotDTO:
      type: object
      description: A consent category snapshot dto
      required:
        - name
        - type
        - consentCategoryId
        - consentCategorySnapshotId
        - consentCategoryConfigExists
      properties:
        name:
          type: string
        notes:
          type: string
        type:
          $ref: '#/components/schemas/ConsentCategory_TypeEnum'
        consentCategoryId:
          $ref: '#/components/schemas/ConsentCategoryId'
        consentCategorySnapshotId:
          $ref: '#/components/schemas/ConsentCategorySnapshotId'
        consentCategoryConfigExists:
          type: boolean
          description: If false, the consent category config doesn't exist anymore
    ConsentCategory_LibraryResponseDTO:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        consentCategories:
          type: array
          items:
            $ref: '#/components/schemas/ConsentCategory_LibraryItemDTO'
    ConsentCategory_LibraryItemDTO:
      allOf:
        - $ref: '#/components/schemas/ConsentCategoryDTO'
        - type: object
          properties:
            itemCounts:
              $ref: '#/components/schemas/ConsentCategory_ItemCountsDTO'
            auditCount:
              description: the number of audits this consent category is assigned to
              type: integer
            labelIds:
              type: array
              items:
                type: integer
    ConsentCategoryLibrarySortByEnum:
      type: string
      default: name
      enum:
        - name
        - type
        - updated_at
    ConsentCategory_ItemCountsDTO:
      type: object
      properties:
        tags:
          description: the number of tags in this consent category
          type: integer
        cookies:
          description: the number of cookies in this consent category
          type: integer
        requestDomainsAndGeos:
          description: >-
            the number of request domain/geo location pairs in this consent
            category
          type: integer
    ConsentCategory_TagEntryResponseDTO:
      type: object
      properties:
        tags:
          type: array
          items:
            $ref: '#/components/schemas/ConsentCategory_TagEntryItemDTO'
    ConsentCategory_TagEntryItemDTO:
      description: DTO for tag under a consent category bucket
      type: object
      required:
        - tagId
        - accounts
      properties:
        tagId:
          type: integer
          nullable: false
        anyAccount:
          type: boolean
          default: false
        accounts:
          type: array
          uniqueItems: true
          nullable: false
          default: []
          items:
            type: string
            format: text
            minLength: 1
    ConsentCategory_RequestDomainResponseDTO:
      type: object
      properties:
        requestDomains:
          type: array
          items:
            $ref: '#/components/schemas/ConsentCategory_RequestDomainItemDTO'
    ConsentCategory_RequestDomainItemDTO:
      description: DTO for request domain under a consent category
      type: object
      required:
        - domainType
      properties:
        domain:
          type: string
        domainType:
          $ref: '#/components/schemas/RequestDomainMatchType'
        locationIds:
          description: geo location ids
          type: array
          items:
            type: integer
        anyLocation:
          description: true if request domain should apply to any location
          type: boolean
    RequestDomainMatchType:
      type: string
      enum:
        - domain_any
        - domain_regex
        - domain_exact_match
    ConsentCategory_WebAudits_ResponseDTO:
      type: object
      properties:
        webAudits:
          type: array
          items:
            $ref: '#/components/schemas/ConsentCategory_WebAudits_ItemDTO'
    ConsentCategory_WebAudits_ItemDTO:
      type: object
      properties:
        auditId:
          type: integer
        auditName:
          type: string
        domain:
          type: string
        createdBy:
          type: integer
        access:
          type: boolean
        lastRun:
          type: string
          format: date-time
    ConsentCategory_CookieEntryResponseDTO:
      description: DTO for cookie entry response
      type: object
      required:
        - cookies
      properties:
        cookies:
          type: array
          items:
            $ref: '#/components/schemas/ConsentCategory_CookieEntryItemDTO'
    ConsentCategory_CookieEntryItemDTO:
      description: DTO For Cookie under a consent preference bucket
      type: object
      properties:
        nameType:
          $ref: '#/components/schemas/CookieNameMatchType'
        name:
          type: string
          nullable: false
        domainType:
          $ref: '#/components/schemas/CookieDomainMatchType'
        domain:
          type: string
          nullable: false
        cookieDescription:
          type: string
    CookieNameMatchType:
      type: string
      enum:
        - name_any
        - name_regex
        - name_exact_match
    CookieDomainMatchType:
      type: string
      enum:
        - domain_any
        - domain_regex
        - domain_exact_match
    WebAudit_ConsentCategories_ResponseDTO:
      type: object
      required:
        - consentCategories
      properties:
        consentCategories:
          type: array
          items:
            $ref: '#/components/schemas/ConsentCategoryDTO'
    WebAudit_ConsentCategorySnapshots_ResponseDTO:
      type: object
      description: >-
        NOTE: For individual consent category snapshot, Field consentCategoryId
        is omitted when the consent category is deleted
      properties:
        consentCategorySnapshots:
          type: array
          items:
            $ref: '#/components/schemas/ConsentCategorySnapshotDTO'
    LabelResponseDTO:
      description: DTO for get/patch labels
      type: object
      properties:
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
    LabelId:
      type: integer
      format: int64
      description: Label identifier
      example: 223
      minimum: 1
    FolderDomainFilter:
      type: object
      description: >-
        non-empty array of folders with domains (subfolders), items from which
        will be included in response
      required:
        - folders
      properties:
        folders:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/FolderDomainFilterItem'
    FolderDomainFilterItem:
      type: object
      required:
        - folderId
      properties:
        folderId:
          $ref: '#/components/schemas/FolderId'
        domains:
          type: array
          description: >-
            null or empty array of domains (subfolders) present on an item,
            works as "null or empty if entire folder (all domains in a folder),
            otherwise specific domain IDs"
          items:
            $ref: '#/components/schemas/DomainId'
    DomainId:
      type: integer
      format: int32
      description: ID of a domain
      example: 123
    Label:
      description: DTO for Labels
      type: object
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/LabelId'
        name:
          type: string
          nullable: false
    RuleLibrary_RequestDTO:
      type: object
      description: Filters supported by Rule Library
      properties:
        id:
          $ref: '#/components/schemas/RuleId'
        ruleName:
          type: string
          example: Filter by rule name. Matched as contains, case insensitive.
        labels:
          type: array
          items:
            $ref: '#/components/schemas/LabelId'
        notificationEnabled:
          type: boolean
        createdByUserId:
          $ref: '#/components/schemas/UserId'
        fromTemplate:
          type: boolean
    RuleId:
      type: integer
      format: int64
      description: Rule ID
      example: 12
    RuleLibrary_SortColumn:
      type: string
      enum:
        - NAME
        - TYPE
        - AUDITS
        - WEB_JOURNEYS
        - APP_JOURNEYS
        - OWNER
        - MODIFIED_AT
    RuleLibrary_ResponseDTO:
      type: object
      properties:
        paginationMetadata:
          $ref: '#/components/schemas/PaginationMetadata'
        rules:
          type: array
          items:
            $ref: '#/components/schemas/RuleLibrary_RuleItem'
    RuleLibrary_RuleItem:
      type: object
      required:
        - id
        - name
        - fromTemplate
        - labels
        - usage
        - ownedByUserId
        - updatedAt
      properties:
        id:
          $ref: '#/components/schemas/RuleId'
        name:
          type: string
        fromTemplate:
          type: boolean
        labels:
          type: array
          items:
            $ref: '#/components/schemas/AssignedLabel'
        usage:
          $ref: '#/components/schemas/RuleLibrary_RuleUsage'
        ownedByUserId:
          $ref: '#/components/schemas/UserId'
        updatedAt:
          $ref: '#/components/schemas/DateAndTime'
        recipients:
          type: array
          items:
            type: string
    RuleLibrary_RuleUsage:
      type: object
      required:
        - auditCount
        - webJourneyCount
        - appJourneyCount
      properties:
        auditCount:
          type: integer
          example: 0
        webJourneyCount:
          type: integer
          example: 3
        appJourneyCount:
          type: integer
          example: 1
    AssignedLabel:
      type: object
      required:
        - id
      properties:
        id:
          $ref: '#/components/schemas/LabelId'
    AuditRun_ActionSnapshotsResponseDTO:
      type: object
      required:
        - preAuditActionSnapshots
        - onPageActionSnapshots
      properties:
        preAuditActionSnapshots:
          type: array
          items:
            $ref: '#/components/schemas/AuditRun_ActionSnapshotDTO'
        onPageActionSnapshots:
          type: array
          items:
            $ref: '#/components/schemas/AuditRun_ActionSnapshotDTO'
    AuditRun_RunNowRequestDTO:
      type: object
      required:
        - callbackWorkflowEventType
        - callbackRepositoryOwner
        - callbackRepositoryName
      properties:
        startingUrls:
          nullable: true
          minItems: 0
          type: array
          items:
            type: string
        callbackWorkflowEventType:
          type: string
          description: >
            The workflow file to be used in for starting the callback workflow

            Has to be a file name without extension, e.g. "audit-complete"
            instead of "audit-complete.yml"
        callbackRepositoryOwner:
          type: string
          description: |
            The owner of the repository where the callback workflow is defined
            This is required to correctly invoke the callback workflow
        callbackRepositoryName:
          type: string
          description: |
            The name of the repository where the callback workflow is defined
            This is required to correctly invoke the callback workflow
        callbackContext:
          type: object
          description: |
            Contains a context for the callback URL to be used in the run
        maxPages:
          type: integer
          nullable: true
          description: >
            Maximum number of pages to scan during the audit run.

            If not provided, will default to the count of starting URLs if it
            exceeds the current audit configuration limit.
        ghAppName:
          description: >
            GitHub App to use for the callback workflow dispatch.

            Defaults to observepoint-integration if not specified (handled in
            service layer).
          allOf:
            - $ref: '#/components/schemas/GhAppNameEnum'
    AuditRun_ConfigurationInfoResponseDTO:
      type: object
      required:
        - blockThirdPartyCookies
        - browserName
        - browserVersion
        - customProxy
        - filters
        - gpcEnabled
        - height
        - loginActions
        - locationId
        - locationName
        - onPageActions
        - privacyConsentActions
        - runDuration
        - scanSpeed
        - startingUrlCount
        - urlsScanned
        - userAgent
        - vpnEnabled
        - width
        - technologyBlockingEnabled
        - fileSubstitutionConfigured
        - discoverSitemaps
        - customHeadersApplied
      properties:
        blockThirdPartyCookies:
          type: boolean
          description: When true the browser blocks all third-party cookies
        browserName:
          type: string
          description: Browser name
        browserVersion:
          type: string
          description: Browser version
        customProxy:
          type: string
          description: The custom proxy used for the audit
        discoverSitemaps:
          type: boolean
          description: >-
            When true, the audit discovers sitemaps on any domains for starting
            URLs and uses those to find URLs to scan
        sitemapData:
          $ref: '#/components/schemas/AuditRun_SitemapData'
        filters:
          type: object
          description: Filters used for the audit to include and exclude urls to be scanned
          required:
            - includeFilters
            - excludeFilters
          properties:
            includeFilters:
              type: array
              items:
                type: string
                format: regex
                example: ^https?://([^/:\?]*\.)?google.com
              description: List of include filters
            excludeFilters:
              type: array
              items:
                type: string
                format: regex
                example: /careers
              description: List of exclude filters
        gpcEnabled:
          type: boolean
          description: GPC enabled or not
        height:
          type: integer
          description: Browser height in pixels
        loginActions:
          type: boolean
          description: Pre-Audit Actions present in configuration or not
        locationId:
          type: integer
          description: Location (Proxy) ID, this maps to a location in the location table
        locationName:
          type: string
          description: >-
            Location  human readable name. This field maps to the db
            location.label
          example: England, London
        onPageActions:
          type: boolean
          description: On Page Actions present in configuration or not
        privacyConsentActions:
          type: boolean
          description: Privacy Consent Actions present in configuration or not
        runDuration:
          type: integer
          description: Run duration in seconds
        scanSpeed:
          type: integer
          description: >
            Scan speed is the number of engines the customer requests to run the
            audit with

            Currently a value between 1-50 is supported, but not guaranteed.
        startingUrlCount:
          type: number
        urlsScanned:
          type: integer
          description: Number of URLs scanned
        userAgent:
          type: string
          description: User agent
        vpnEnabled:
          type: boolean
          description: 'VPN enabled or not for the run configuration '
        width:
          type: integer
          description: Browser width in pixels
        technologyBlockingEnabled:
          type: boolean
          description: Tag ID/Tag Category ID blocking enabled or not
        fileSubstitutionConfigured:
          type: boolean
          description: File Substitution configured or not
        customHeadersApplied:
          type: boolean
          description: Custom HTTP headers applied or not
        auditStoppedByUserId:
          type: integer
          format: int64
          description: ID of the user who stopped the audit run early, if applicable
          nullable: true
    AuditRun_SitemapData:
      type: object
      description: Data about sitemaps that were discovered and visited by the audit
      properties:
        sitemapsScannedCount:
          type: integer
          description: Number of sitemaps visited successfully by the audit
        sitemapsScanned:
          type: array
          description: List of sitemaps visited successfully by the audit
          items:
            $ref: '#/components/schemas/AuditRun_SitemapDataItem'
        sitemapsBrokenCount:
          type: integer
          description: >-
            Number of sitemaps that were found, but could not be visited by the
            audit
        sitemapsBrokenUrls:
          type: array
          items:
            type: string
            format: url
            example: https://www.example.com/sitemap.xml
          description: List of sitemap URLs that could not be visited
    AuditRun_SitemapDataItem:
      type: object
      required:
        - sitemapUrl
        - urlsFound
      properties:
        sitemapUrl:
          type: string
        urlsFound:
          type: integer
    AuditRun_ActionSnapshotDTO:
      type: object
      required:
        - actionSnapshotId
        - sequenceId
        - actionType
      properties:
        actionSnapshotId:
          type: integer
        sequenceId:
          type: integer
        actionType:
          type: integer
        description:
          type: string
    WebJourneyRun_ConfigurationInfoResponseDTO:
      type: object
      required:
        - browserName
        - browserVersion
        - width
        - height
        - userAgent
        - locationId
        - privacyConsentActions
        - vpnEnabled
        - gpcEnabled
        - technologyBlockingEnabled
        - fileSubstitutionConfigured
        - blockThirdPartyCookies
        - customHeadersApplied
      properties:
        browserName:
          type: string
          description: Browser name
        browserVersion:
          type: string
          description: Browser version
        width:
          type: integer
          description: Browser width in pixels
        height:
          type: integer
          description: Browser height in pixels
        userAgent:
          type: string
          description: User agent
        locationId:
          type: integer
          description: Location  ID, this maps to a location in the location table
        customProxy:
          type: string
          description: Custom proxy used for the run, if supplied by the user.
          example: http://90.90.90.90:8888
        privacyConsentActions:
          type: boolean
          description: Privacy Consent Actions present in configuration or not
        vpnEnabled:
          type: boolean
          description: VPN enabled or not for the run configuration
        gpcEnabled:
          type: boolean
          description: GPC enabled or not
        technologyBlockingEnabled:
          type: boolean
          description: Tag ID/Tag Category ID blocking enabled or not
        fileSubstitutionConfigured:
          type: boolean
          description: File Substitution configured or not
        blockThirdPartyCookies:
          type: boolean
          description: Block third party cookies or not
        customHeadersApplied:
          type: boolean
          description: Custom HTTP headers applied or not
    BlockingConfig_DTO:
      type: object
      description: The blocking configuration to be applied to the Audit or Journey.
      properties:
        tagIds:
          description: >-
            (Optional) Present when blockingType is `tag_id`, a list of tag ids
            to block
          type: array
          items:
            type: integer
        tagCategoryIds:
          description: >-
            (Optional) Present when blockingType is `tag_category`, a list of
            tag category ids to block
          type: array
          items:
            type: integer
    EmailInboxResponseDTO:
      type: object
      required:
        - id
        - emailAddress
        - labelIds
        - name
        - linkExclusionFilters
        - omitSocialLinks
      properties:
        id:
          type: integer
          format: int64
          example: 10
        labelIds:
          description: The ids of the labels associated to the Email Inbox
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/LabelId'
        name:
          type: string
          example: Christmas Marketing Campaign
        emailAddress:
          description: The email address that has been assigned to the inbox
          type: string
          example: scanTest+<8^[a-z0-9]>@email.observepoint.com
        notes:
          type: string
        subscribers:
          $ref: '#/components/schemas/EmailInboxSubscribersDTO'
        linkExclusionFilters:
          type: array
          items:
            $ref: '#/components/schemas/EmailInboxLinkExclusionFilters'
        omitSocialLinks:
          type: boolean
    EmailInboxLinkExclusionFilters:
      description: A regex to be used to exclude links in email scans.
      type: string
    EmailInboxSubscribersDTO:
      type: object
      properties:
        onReceived:
          type: array
          items:
            type: string
            description: Email address subscribers to be alerted on email message received.
        onProcessed:
          type: array
          items:
            type: string
            description: >-
              Email address subscribers to be alerted on email message
              processed.
    EmailInboxLibraryDTO:
      type: object
      properties:
        id:
          type: integer
          format: int64
          example: 10
        labelIds:
          description: The ids of the labels associated to the Email Inbox
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/LabelId'
        name:
          type: string
          example: Christmas Marketing Campaign
        emailAddress:
          description: The email address that has been assigned to the inbox
          type: string
          example: scanTest+<8^[a-z0-9]>@email.observepoint.com
        notes:
          type: string
        messagesReceived:
          description: The number of messages received by the Email Inbox
          type: integer
          default: 0
        lastMessageReceived:
          $ref: '#/components/schemas/DateAndTime'
        testScenariosCount:
          description: >-
            The number of test scenarios performed against the email landing
            pages.
          type: integer
    EmailInboxLibraryResponseDTO:
      type: object
      required:
        - metadata
        - emailInboxes
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        emailInboxes:
          type: array
          items:
            $ref: '#/components/schemas/EmailInboxLibraryDTO'
    EmailInboxConfigurationDTO:
      type: object
      required:
        - auditId
        - auditName
        - auditLastRunAt
        - auditLabels
      properties:
        auditId:
          $ref: '#/components/schemas/AuditId'
        auditName:
          type: string
          description: Name of audit/WJ etc
        auditLastRunAt:
          $ref: '#/components/schemas/DateAndTime'
        auditLabels:
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/LabelId'
    EmailInboxRequestDTO:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          example: Adove Campaign Holidays, Marketing Department
        notes:
          type: string
        labelIds:
          description: The ids of the labels to be associated to the Email Inbox
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/LabelId'
        subscribers:
          $ref: '#/components/schemas/EmailInboxSubscribersDTO'
        linkExclusionFilters:
          type: array
          items:
            $ref: '#/components/schemas/EmailInboxLinkExclusionFilters'
        omitSocialLinks:
          type: boolean
    EmailInboxLibraryRequestDTO:
      type: object
      properties:
        name:
          type: string
          example: Adobe Campaign Holidays, Marketing Department
        emailAddress:
          type: string
          example: scanTest+<8^[a-z0-9]>-<truncatedInboxName>@email.observepoint.com
        auditIds:
          description: The ids of the audits to be associated to the Email Inbox
          type: array
          items:
            type: integer
            format: int64
        labelIds:
          description: The ids of the labels to be associated to the Email Inbox
          type: array
          items:
            $ref: '#/components/schemas/LabelId'
        createdBy:
          description: The ids of Email Inbox owners
          type: array
          items:
            $ref: '#/components/schemas/UserId'
    EmailInboxLibrarySortByEnum:
      type: string
      default: name
      enum:
        - name
        - emailAddress
        - messagesReceived
        - lastMessageReceived
        - testScenariosCount
    ReceivedEmailMessageBaseDTO:
      type: object
      required:
        - id
        - status
      properties:
        id:
          type: integer
          format: int64
          example: 10
        status:
          type: string
          enum:
            - RECEIVED
            - PROCESSING
            - AUDITING
            - NOT_AUDITING
            - NOTIFYING
            - COMPLETE
            - FAILED
            - CANCELLED
          example: COMPLETE
        statusReason:
          type: string
          enum:
            - ITEM_CONCURRENCY_REACHED
            - ACCOUNT_CONCURRENCY_REACHED
            - USER_CONCURRENCY_REACHED
            - USAGE_LIMIT_EXCEEDED_WHEN_OVERAGE_NOT_ALLOWED
            - NO_AUDITS_ASSIGNED
            - UNABLE_TO_PROCESS_MESSAGE
            - NO_LINKS_FOUND
            - MESSAGE_NOT_FOUND
            - ABORTED
            - UNKNOWN
          example: NO_AUDITS_ASSIGNED
    ReceivedEmailMessageDTO:
      type: object
      required:
        - metadata
        - messages
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        messages:
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/ReceivedEmailMessageBaseDTO'
              - $ref: '#/components/schemas/ReceivedEmailMessageEntryDTO'
    ReceivedEmailMessageEntryDTO:
      type: object
      required:
        - subject
        - receivedAt
        - senderEmailAddress
        - uniqueLinks
        - runs
        - screenshotPath
        - screenshotThumbnailPath
      properties:
        receivedAt:
          $ref: '#/components/schemas/DateAndTime'
        senderEmailAddress:
          type: string
          example: marketing@email.observepoint.com
        subject:
          type: string
          example: Christmas Marketing Campaign
        uniqueLinks:
          type: integer
          format: int64
          example: 317
        runs:
          type: array
          items:
            $ref: '#/components/schemas/ReceivedEmailMessageAuditInfo'
        screenshotPath:
          type: string
          description: A url that redirects to a time-limited screenshot of the email.
          example: /v2/screenshots?token=a.b.c
        screenshotThumbnailPath:
          type: string
          description: >-
            Provides a smaller resolution screenshot than the screenshot
            property.
          example: /v2/screenshots?token=a.b.c
    ReceivedEmailMessageAuditInfo:
      type: object
      required:
        - auditName
        - auditId
        - runId
      properties:
        auditName:
          type: string
          example: Audit Name
        auditId:
          type: integer
          example: 123
        runId:
          type: integer
          example: 123
        isCompleted:
          type: boolean
          description: TRUE if the audit run is completed, otherwise FALSE
    CmpProviders_CookieGroupsImportRequest:
      type: object
      required:
        - cmpProvider
        - sourceUrl
        - locales
      properties:
        cmpProvider:
          type: string
          description: The type of CMP provider expected on the sourceUrl
          enum:
            - ONE_TRUST
        sourceUrl:
          type: string
          description: The URL of the page where the CMP cookie data should be harvested
          example: https://www.example.com
        locales:
          type: array
          items:
            $ref: '#/components/schemas/CmpProviders_Locale'
    CmpProviders_CookieGroupsImportResultRequest:
      type: object
      required:
        - importRequestIds
      properties:
        importRequestIds:
          type: array
          description: The unique identifiers for the CMP import results
          items:
            type: string
            format: uuid
            maxItems: 500
            example: 123e4567-e89b-12d3-a456-426614174000
    CmpProviders_CookieGroupsImportRequestHandles:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/CmpProviders_CookieGroupsImportHandle'
    CmpProviders_CookieGroupsImportResults:
      type: object
      properties:
        importResults:
          type: object
          description: >
            A JSON object containing the current state of CMP import results.

            The object keys will represent each valid import request ID. Invalid
            request IDs will be omitted from the object.

            The object values will be the current state of the import request
            for the respective import request ID.
          additionalProperties:
            $ref: '#/components/schemas/CmpCookieGroups'
    CmpProviders_CookieGroupsImportHandle:
      type: object
      required:
        - requestId
        - locale
      properties:
        requestId:
          type: string
          format: uuid
          description: >-
            The unique identifier for the import request associated with this
            handle
        locale:
          $ref: '#/components/schemas/CmpProviders_Locale'
    CmpProviders_Locale:
      type: string
      description: >
        The locale of the cookie configuration. Provide an ISO-3166 alpha-2
        country code. If for a US state, use 'US' followed by a comma and the
        state abbreviation. Example: US,CA

        At least one locale must be provided.
    StartedAt:
      type: string
      format: datetime
      description: Date/time of when an item was started
    FolderId:
      type: integer
      format: int32
      description: ID of a folder
      example: 123
    SubFolderId:
      type: integer
      description: |
        The ID of the subfolder under which the WebJourney/Audit is within.
    CurrentlyRunningItem:
      type: object
      description: Run of data source item that is in progress.
      properties:
        runId:
          $ref: '#/components/schemas/RunId'
        startedAt:
          $ref: '#/components/schemas/StartedAt'
    ISO8601LocalDateTime:
      type: string
      description: >-
        ISO-8601 Formatted date time implicitly in the user's local timezone
        (ex: YYYY-MM-DDTHH:MM:SS/2020-10-30T12:00:00)
    ScheduledItem:
      type: object
      description: Base scheduled item which includes data source specific information.
      properties:
        itemName:
          description: Name of the scheduled item.
          type: string
        itemId:
          description: Item id of scheduled item.
          type: integer
        itemType:
          $ref: '#/components/schemas/DataSourceItemTypeCap'
        runs:
          type: array
          items:
            $ref: '#/components/schemas/CurrentlyRunningItem'
        futureOccurrences:
          type: array
          items:
            $ref: '#/components/schemas/ISO8601LocalDateTime'
        folderId:
          $ref: '#/components/schemas/FolderId'
        subFolderId:
          $ref: '#/components/schemas/SubFolderId'
        userId:
          $ref: '#/components/schemas/UserId'
        labels:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/LabelId'
        isMonitoredByScriptServices:
          type: boolean
          description: Whether the journey is monitored by script services.
        schedule:
          $ref: '#/components/schemas/ScheduleWithExceptionsAndDescription'
    ScheduledItemWithNextTest:
      type: object
      description: >-
        Scheduled item which includes data source specific information and next
        check info.
      allOf:
        - $ref: '#/components/schemas/ScheduledItem'
        - type: object
          properties:
            nextTest:
              type: string
              format: datetime
    CalendarUpdateItem:
      description: Item in a calendar update (PUT) request.
      type: object
      required:
        - itemType
        - itemId
        - schedule
      properties:
        itemType:
          $ref: '#/components/schemas/DataSourceItemTypeCap'
        itemId:
          description: Item id of scheduled item.
          type: number
        schedule:
          $ref: '#/components/schemas/ScheduleWithExceptions'
    CalendarUpdateRequestBody:
      description: The body for calendar item updates using the bulk PUT endpoint.
      type: object
      required:
        - updateItems
      properties:
        updateItems:
          type: array
          items:
            $ref: '#/components/schemas/CalendarUpdateItem'
    CustomHeaderBody:
      type: object
      required:
        - groupName
        - headers
        - requestUrlFilters
        - assignments
        - applyToAll
      properties:
        id:
          type: integer
          format: int64
        groupName:
          type: string
        headers:
          type: array
          items:
            $ref: '#/components/schemas/CustomHeader'
        requestUrlFilters:
          type: array
          items:
            $ref: '#/components/schemas/RequestUrlFilter'
        assignments:
          type: array
          items:
            $ref: '#/components/schemas/CustomHeaderAssignments'
        applyToAll:
          type: boolean
    CustomHeaderGroupSnapshot:
      type: object
      description: >-
        Custom header group for runtime snapshots - matches s3-schema
        CustomHeaderGroup structure
      required:
        - groupName
        - headers
        - requestUrlFilters
      properties:
        id:
          type: integer
          format: int64
        groupName:
          type: string
        headers:
          type: array
          items:
            $ref: '#/components/schemas/CustomHeader'
        requestUrlFilters:
          type: array
          items:
            $ref: '#/components/schemas/RequestUrlFilter'
    CustomHeaderGroupSummaryResponse:
      type: object
      required:
        - customHeaderGroups
      properties:
        customHeaderGroups:
          type: array
          items:
            $ref: '#/components/schemas/CustomHeaderGroupSummary'
    CustomHeaderGroupSummary:
      type: object
      required:
        - id
        - groupName
        - headerCount
        - requestUrlFilterCount
        - createdBy
        - createdAt
        - updatedAt
        - applyToAll
        - assignments
      properties:
        id:
          type: integer
          format: int64
        groupName:
          type: string
        headerCount:
          type: integer
        requestUrlFilterCount:
          type: integer
        createdBy:
          type: integer
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        applyToAll:
          type: boolean
        assignments:
          type: array
          items:
            $ref: '#/components/schemas/CustomHeaderAssignments'
    CustomHeader:
      type: object
      required:
        - name
        - value
        - type
      properties:
        name:
          type: string
        value:
          type: string
        type:
          type: string
          enum:
            - REQUEST
            - RESPONSE
    RequestUrlFilter:
      type: object
      required:
        - requestUrlFilter
        - allowSubdomains
      properties:
        requestUrlFilter:
          type: string
        allowSubdomains:
          type: boolean
    CustomHeaderAssignments:
      type: object
      required:
        - itemType
        - itemId
      properties:
        itemType:
          type: string
          enum:
            - AUDIT
            - WEB_JOURNEY
        itemId:
          type: integer
          format: int64
    CustomHeaderTargetItemsSearchRequest:
      type: object
      description: Filters supported by Custom Header Target Items Search
      properties:
        customHeaderGroupId:
          type: integer
          format: int64
        assignedToCustomHeaderGroup:
          type: boolean
        itemName:
          type: string
          minLength: 1
        itemLabels:
          type: array
          description: >-
            non-empty array of labels present on an item, works as "item has all
            specified labels" filter
          minItems: 1
          items:
            $ref: '#/components/schemas/LabelId'
        folders:
          $ref: '#/components/schemas/FolderDomainFilter'
    CustomHeaderTargetItemsSearchResponse:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/PaginationMetadata'
        items:
          type: array
          items:
            $ref: '#/components/schemas/CustomHeaderTargetItem'
    CustomHeaderTargetItem:
      type: object
      properties:
        isAssigned:
          type: boolean
        itemType:
          type: string
          enum:
            - AUDIT
            - WEB_JOURNEY
        itemId:
          type: integer
          format: int64
        itemName:
          type: string
        lastRunAt:
          type: string
          format: date-time
          description: The timestamp of the last run for this item
        itemLabels:
          type: array
          items:
            $ref: '#/components/schemas/AssignedLabel'
    CustomHeaderSortByEnum:
      type: string
      default: ITEM_NAME
      enum:
        - IS_ASSIGNED
        - ITEM_NAME
        - RUN_DATE
    WebJourneyCustomHeaderDTO:
      type: object
      required:
        - assignedCustomHttpHeaders
      properties:
        assignedCustomHttpHeaders:
          type: array
          items:
            required:
              - groupId
            properties:
              groupId:
                type: integer
                format: int64
              isApplyToAll:
                type: boolean
                description: >-
                  Indicates whether custom header should be applied to all
                  requests. For GET request, indicates that the header is not
                  just assigned to the request but also applied to all requests.
                  For PUT request, it specifies that the header should be
                  updated to apply to all requests, if set to true, header will
                  not be applied to the request.
    DataSourcesTargetItemsSearchRequest:
      type: object
      description: Filters supported by Unified Data Sources Target Items Search.
      properties:
        searchItemType:
          type: string
          enum:
            - ALERT
            - CUSTOM_HEADER
            - EMAIL_INBOX
            - RULE
        searchedItemId:
          type: integer
          format: int64
        assignedToSearchedItem:
          type: boolean
        itemName:
          type: string
          minLength: 1
        itemLabels:
          type: array
          description: >-
            non-empty array of labels present on an item, works as "item has all
            specified labels" filter
          minItems: 1
          items:
            $ref: '#/components/schemas/LabelId'
        folders:
          $ref: '#/components/schemas/FolderDomainFilter'
    DataSourcesTargetItemsSearchResponse:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/PaginationMetadata'
        items:
          type: array
          items:
            $ref: '#/components/schemas/DataSourcesTargetItem'
    DataSourcesTargetItem:
      type: object
      properties:
        isAssigned:
          type: boolean
        itemType:
          type: string
          enum:
            - AUDIT
            - WEB_JOURNEY
        itemId:
          type: integer
          format: int64
        itemName:
          type: string
        lastRunAt:
          type: string
          format: date-time
          description: The timestamp of the last run for this item
        itemLabels:
          type: array
          items:
            $ref: '#/components/schemas/AssignedLabel'
    DataSourceTargetItemSortByEnum:
      type: string
      default: ITEM_NAME
      enum:
        - ITEM_NAME
        - RUN_DATE
    ArchivedItemType:
      description: Type of archived item.
      type: string
      enum:
        - audit
        - web-journey
    ArchivedItemSortField:
      description: >
        Field to sort archived items by. Values correspond to the columns shown
        on the

        Archived Items page. Defaults to deletedAt (first enum value used by
        SortingPagination).
      type: string
      default: deletedAt
      enum:
        - deletedAt
        - name
        - originalFolderName
        - startingUrl
        - pageLimit
        - stepCount
        - schedule
        - createdAt
        - deletedBy
    ArchivedItem:
      type: object
      description: A single archived (soft-deleted) audit or journey.
      required:
        - id
        - name
        - type
        - schedule
        - createdAt
        - deletedAt
        - deletedBy
      properties:
        id:
          type: integer
          format: int64
          description: The item id (audit id or web journey id).
        name:
          type: string
          description: The item name.
        type:
          $ref: '#/components/schemas/ArchivedItemType'
        originalFolderId:
          type: integer
          format: int64
          nullable: true
          description: >-
            The Folder the item was in when archived. null if that Folder was
            deleted while the item was archived.
        originalFolderName:
          type: string
          nullable: true
          description: The name of the original Folder. null if the Folder was deleted.
        originalSubFolderId:
          type: integer
          format: int64
          nullable: true
          description: >-
            The Sub-folder (a Domain id) the item was in when archived. null if
            deleted.
        originalSubFolderName:
          type: string
          nullable: true
          description: >-
            The name of the original Sub-folder. null if the Sub-folder was
            deleted.
        startingUrl:
          type: string
          nullable: true
          description: >-
            The starting URL. For a journey, the first "Navigate To" action URL.
            null if none is available.
        pageLimit:
          type: integer
          format: int32
          nullable: true
          description: Audits only. The audit page limit. null for journeys.
        stepCount:
          type: integer
          format: int32
          nullable: true
          description: Journeys only. The number of steps/actions. null for audits.
        schedule:
          type: string
          description: >-
            A human-readable schedule display string, shown as-is (for example
            "Every day", "Unscheduled").
        createdAt:
          type: string
          format: date-time
          description: ISO 8601 date-time the item was created. Shown as Date Created.
        deletedAt:
          type: string
          format: date-time
          description: >-
            ISO 8601 date-time the item was archived (soft-deleted). Shown as
            Archived On and the default sort.
        deletedBy:
          type: string
          description: >-
            A display name or email of the user who archived the item. Shown as
            Archived By.
    ArchivedItemsResponse:
      type: object
      description: >
        A page of archived items for the requested type, plus counts.
        `totalCount` is

        scoped to this request (type + search) and drives pagination.
        `auditCount` and

        `webJourneyCount` are account-wide totals of archived items per type,
        ignoring

        `search` and paging, so the UI can render both tab badges from a single
        request.
      required:
        - items
        - totalCount
        - auditCount
        - webJourneyCount
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ArchivedItem'
        totalCount:
          type: integer
          format: int64
          description: >-
            Total number of archived items matching this request (type + search)
            across all pages. Drives pagination.
        auditCount:
          type: integer
          format: int64
          description: >-
            Total archived audits in the account, ignoring search and paging.
            For the Audits tab badge.
        webJourneyCount:
          type: integer
          format: int64
          description: >-
            Total archived web journeys in the account, ignoring search and
            paging. For the Journeys tab badge.
    SiteCensusBaseDTO:
      type: object
      required:
        - name
        - autoPauseAfter
        - notificationEmails
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for the Site Census.
        accountId:
          type: integer
          format: int64
          description: The account ID associated with the Site Census.
        name:
          type: string
          description: The name of the Site Census.
        autoPauseAfter:
          type: integer
          maximum: 10080
          minimum: 1
          description: The max time the scan will run, in minutes.
        ownerId:
          type: integer
          format: int64
          description: The userId of the user who created the Site Census.
        currentScanStartedAt:
          type: string
          format: date-time
          nullable: true
          description: The date and time when the current scan session started.
        lastScanStoppedAt:
          type: string
          format: date-time
          nullable: true
          description: The date and time when the last scan session stopped.
        notificationEmails:
          type: array
          minItems: 0
          items:
            type: string
            format: email
          description: >-
            Target email addresses for notification when this census auto-pauses
            or runs out of URLs.
        userAgentId:
          type: integer
          default: 122
          description: The user agent ID used for data collection.
        customHttpHeaders:
          type: array
          default: []
          minItems: 0
          items:
            $ref: '#/components/schemas/SiteCensusCustomHttpHeader'
          description: List of custom HTTP header groups assigned to this site census.
    SiteCensusCustomHttpHeader:
      type: object
      required:
        - groupId
      properties:
        groupId:
          type: integer
          format: int64
          description: The ID of the custom HTTP header group.
    SiteCensusBehaviorDTO:
      allOf:
        - $ref: '#/components/schemas/SiteCensusBaseDTO'
        - type: object
          required:
            - startingUrls
            - filterPatterns
          properties:
            startingUrls:
              type: array
              minItems: 0
              items:
                type: string
                format: uri
              description: The list of starting URLs for the Site Census.
            filterPatterns:
              type: array
              minItems: 0
              items:
                $ref: '#/components/schemas/SiteCensusFilterPattern'
    SiteCensusFilterPattern:
      type: object
      required:
        - pathPattern
        - fqdn
        - type
      properties:
        pathPattern:
          type: string
          description: The GLOB pattern to match the path of the URL.
        fqdn:
          type: string
          description: The fully qualified domain name (FQDN) to match against the URL.
        type:
          type: string
          enum:
            - PRIORITY
            - IGNORE
          description: Indicates whether matches should be prioritized or ignored.
    SiteCensusCompleteDTO:
      allOf:
        - $ref: '#/components/schemas/SiteCensusBehaviorDTO'
        - type: object
          required:
            - id
            - isArchived
          properties:
            id:
              type: integer
              format: int64
              description: The unique identifier for the Site Census.
            isArchived:
              type: boolean
              readOnly: true
              description: >-
                Indicates whether the Site Census has been archived. True if and
                only if the census has an archived_at timestamp. Archived
                censuses cannot be edited or restarted, but they can be deleted.
                Server-set; ignored on requests.
    SiteCensusResultsSummaryDTO:
      type: object
      required:
        - uniqueUrls
        - visitedUrls
        - urlsToVisit
        - ignoredUrls
        - brokenUrls
        - isRunning
        - isArchived
      properties:
        uniqueUrls:
          type: integer
          minimum: 0
          description: >-
            The number of unique included URLs found. Included is defined as
            URLs that share the same main-domain as any starting URL.
        visitedUrls:
          type: integer
          minimum: 0
          description: >-
            The number of included URLs visited. Included is defined as URLs
            that share the same main-domain as any starting URL.
        urlsToVisit:
          type: integer
          minimum: 0
          description: >-
            The number of included URLs to visit. Included is defined as URLs
            that share the same main-domain as any starting URL.
        ignoredUrls:
          type: integer
          minimum: 0
          description: >-
            The number of URLs matching an IGNORE filter pattern found on
            included pages. Included is defined as URLs that share the same
            main-domain as any starting URL.
        brokenUrls:
          type: integer
          minimum: 0
          description: >-
            The number of included URLs that are broken. Broken is defined as
            URLs that return a non-2xx,3xx status code. Included is defined as
            URLs that share the same main-domain as any starting URL.
        isRunning:
          type: boolean
          description: Indicates whether the Site Census is currently scanning.
        isArchived:
          type: boolean
          description: >-
            Indicates whether the Site Census has been archived. True if and
            only if the census has an archived_at timestamp.
    SiteCensusSummaryDTO:
      allOf:
        - $ref: '#/components/schemas/SiteCensusResultsSummaryDTO'
        - type: object
          required:
            - censusConfig
          properties:
            censusConfig:
              $ref: '#/components/schemas/SiteCensusCompleteDTO'
    SiteCensusSummariesResponseDTO:
      type: object
      required:
        - metadata
        - censuses
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        censuses:
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/SiteCensusSummaryDTO'
    SiteCensusUrlSegment:
      type: object
      required:
        - segmentType
      properties:
        segmentType:
          type: string
          description: >
            The type of segment in the path. A static segment is a string in the
            path that does not represent a variable.

            A dynamic segment is one that represents a variable in the URL. For
            example, a dynamic segment could be a user ID.
          enum:
            - STATIC
            - DYNAMIC
        staticSegmentValue:
          type: string
          description: >-
            present when segment type is `static`. A static segment is a string
            in the path that does not represent a variable.
        dynamicSegmentType:
          type: string
          description: >-
            present when segment type is `dynamic`. Use this type to make
            rendering decisions when displaying path segments.
          enum:
            - NUMBER
            - DATETIME
            - ALPHA
            - ALPHA_NUMERIC
    SiteCensusBaseUrlPattern:
      type: object
      description: >-
        The ObservePoint proprietary pattern used to classify URLs with similar
        paths based upon dynamic path segments.
      required:
        - fqdn
        - renderedPathPattern
      properties:
        fqdn:
          type: string
          description: The fully qualified domain name (FQDN) of the URL pattern.
        renderedPathPattern:
          type: string
          description: >-
            The rendered path of the URL pattern with the dynamic segment
            character. Not meant for display.
    SiteCensusUrlPattern:
      allOf:
        - $ref: '#/components/schemas/SiteCensusBaseUrlPattern'
        - type: object
          description: >-
            The ObservePoint proprietary pattern used to classify URLs with
            similar paths based upon dynamic path segments.
          required:
            - urlSegments
          properties:
            urlSegments:
              type: array
              minItems: 0
              description: >-
                The list of URL path segments.  Construct a full path pattern by
                appending the segment in order of array index separated by
                forward slashes.
              items:
                $ref: '#/components/schemas/SiteCensusUrlSegment'
    SiteCensusUrlPatternResultsDTO:
      type: object
      required:
        - urlPattern
        - totalUrls
        - urlsToVisit
        - visitedUrls
        - brokenUrls
      properties:
        urlPattern:
          $ref: '#/components/schemas/SiteCensusUrlPattern'
        totalUrls:
          type: integer
          minimum: 0
          description: The total number of URLs within this pattern.
        urlsToVisit:
          type: integer
          minimum: 0
          description: The number of URLs in this pattern that can still be visited.
        visitedUrls:
          type: integer
          minimum: 0
          description: The number of URLs in this pattern that have been visited.
        brokenUrls:
          type: integer
          minimum: 0
          description: >-
            The number of URLs in this pattern that have been visited, but
            returned with 4xx or 5xx status codes.
        latestFound:
          type: string
          format: date-time
          description: >-
            The date and time of the last URL in this pattern that was found in
            ISO 8601 format
    SiteCensusCurrentResultsDTO:
      type: object
      required:
        - metadata
        - paginatedUrlPatternResults
        - resultsSummary
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        paginatedUrlPatternResults:
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/SiteCensusUrlPatternResultsDTO'
        resultsSummary:
          $ref: '#/components/schemas/SiteCensusResultsSummaryDTO'
    SiteCensusPatternPreviewResponse:
      type: object
      required:
        - censusId
        - totalUrls
        - urls
      properties:
        censusId:
          type: integer
          format: int64
          description: The unique identifier for the Site Census.
        totalUrls:
          type: integer
        urls:
          type: array
          minItems: 0
          items:
            type: string
    SiteCensusResultsSortByEnum:
      type: string
      default: TOTAL_URLS
      enum:
        - TOTAL_URLS
        - URL_PATTERN
        - URLS_TO_VISIT
        - VISITED_URLS
        - BROKEN_URLS
        - LAST_FOUND
    SiteCensusUrlFolderSortByEnum:
      type: string
      default: FOLDER_NAME
      enum:
        - FOLDER_NAME
        - TOTAL_URLS
        - URLS_TO_VISIT
        - VISITED_URLS
        - BROKEN_URLS
        - LAST_FOUND
    SiteCensusUrlFolderResultDTO:
      type: object
      required:
        - folderPath
        - folderName
        - baseDomain
        - host
        - totalUrls
        - urlsToVisit
        - visitedUrls
        - brokenUrls
        - matched
      properties:
        folderPath:
          type: string
          description: The normalized folder path key.
        folderName:
          type: string
          description: The display name of the folder.
        parentFolderPath:
          type: string
          description: >-
            The normalized parent folder path key. Absent only for the root
            folder.
        baseDomain:
          type: string
          description: The URL base domain.
        host:
          type: string
          description: The URL hostname.
        totalUrls:
          type: integer
          minimum: 0
          description: >-
            The number of URLs counted in the folder's subtree (the folder and
            all of its descendants) that are in view for the current scope.
            Never restricted by searchPattern, so a folder reports the same
            value whether it was reached by browsing or by searching.
        visitedUrls:
          type: integer
          minimum: 0
          description: >-
            The number of counted URLs in the folder's subtree that have been
            visited (live: most_recent_status_code != 0; persisted rollup: any
            2xx/3xx/4xx/5xx). Always totalUrls - urlsToVisit.
        urlsToVisit:
          type: integer
          minimum: 0
          description: >-
            The number of counted URLs in the folder's subtree still awaiting a
            visit (live: most_recent_status_code = 0; persisted rollup: the
            unknown-status bucket, which also absorbs missing, 1xx and 6xx+
            codes).
        brokenUrls:
          type: integer
          minimum: 0
          description: >-
            The number of counted URLs in the folder's subtree where
            most_recent_status_code is between 400 and 599.
        latestFound:
          type: string
          format: date-time
          description: >-
            The latest url_found_at timestamp among the counted URLs in the
            folder's subtree.
        matched:
          type: boolean
          description: >-
            True if this folder is a hit counted toward totalCount: its own name
            (or, for a host root, its hostname) contains searchPattern, or it
            directly contains at least one URL whose page name does. Hits are
            the paged rows and the only rows carrying urls/matchedUrlCount.
            False means the folder is present only as tree context - an ancestor
            needed to connect a hit back to the root (or parentFolderPath);
            context rows are extra and do not count toward totalCount. Always
            true when searchPattern is omitted.
        matchedUrlCount:
          type: integer
          minimum: 0
          description: >
            The uncapped number of this folder's DIRECT child URLs in view:
            every in-view direct URL in browse mode, only those whose own page
            name contains searchPattern in search mode. Present exactly when
            `urls` is (matched rows, urlsPerFolder > 0). May exceed the length
            of `urls`, which is capped at urlsPerFolder - page the remainder
            through the folders/urls endpoint.
        urls:
          type: array
          minItems: 0
          description: >
            Up to urlsPerFolder of this folder's direct-child URLs in view (see
            matchedUrlCount for the uncapped total), always in (URL, id) order -
            the folders/urls endpoint's default, so these URLs reappear there in
            the same relative order (that endpoint lists every direct URL,
            unfiltered by this endpoint's view). Present only on matched rows
            when urlsPerFolder > 0; absent on context rows and when previews are
            disabled.
          items:
            $ref: '#/components/schemas/SiteCensusUrlFolderPageDTO'
    SiteCensusUrlFolderPageDTO:
      type: object
      description: >
        One direct-child URL of the folder row it is nested under. In search
        mode its own page name matched searchPattern; in browse mode every
        in-view direct URL qualifies. Carries no folder identity of its own -
        the enclosing folder row is the identity.
      required:
        - urlId
        - url
        - pageName
      properties:
        urlId:
          type: integer
          format: int64
          description: The site_census_urls row id for this URL.
        url:
          type: string
          description: The full page URL (scheme://host/path?query).
        pageName:
          type: string
          description: >-
            The last path segment - the part of the path that searchPattern is
            matched against.
        mostRecentStatusCode:
          type: integer
          nullable: true
          description: Most recent HTTP status observed; null/0 when not yet visited.
        urlFoundAt:
          type: string
          format: date-time
          nullable: true
          description: When the URL was first found, ISO 8601.
    SiteCensusUrlFolderResultsDTO:
      type: object
      required:
        - metadata
        - folders
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        folders:
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/SiteCensusUrlFolderResultDTO'
    SiteCensusFolderUrlSortByEnum:
      type: string
      default: URL
      enum:
        - URL
        - STATUS_CODE
        - LAST_FOUND
    SiteCensusFolderSummaryDTO:
      type: object
      required:
        - censusId
        - baseDomain
        - host
        - folderPath
        - totalUrls
        - directUrls
        - childFolderCount
        - visitedUrls
        - urlsToVisit
        - brokenUrls
        - includedUrls
        - ignoredUrls
        - finalized
      properties:
        censusId:
          type: integer
          format: int64
        baseDomain:
          type: string
        host:
          type: string
        folderPath:
          type: string
        totalUrls:
          type: integer
          minimum: 0
          description: >-
            Self-inclusive total URLs in this folder and all descendants
            (descendant_page_count).
        directUrls:
          type: integer
          minimum: 0
          description: URLs sitting directly in this folder (not descendants).
        childFolderCount:
          type: integer
          minimum: 0
          description: Number of immediate child folders.
        visitedUrls:
          type: integer
          minimum: 0
          description: Visited URLs in the subtree (success + redirect + broken buckets).
        urlsToVisit:
          type: integer
          minimum: 0
          description: >-
            Not-yet-categorized URLs in the subtree (unknown-status bucket); ~0
            for a finalized census.
        brokenUrls:
          type: integer
          minimum: 0
          description: URLs in the subtree with a 4xx/5xx status.
        includedUrls:
          type: integer
          minimum: 0
          description: Live count of subtree URLs NOT matching any IGNORE pattern.
        ignoredUrls:
          type: integer
          minimum: 0
          description: Live count of subtree URLs matching an IGNORE pattern.
        finalized:
          type: boolean
          description: >-
            True when the folder's precomputed rollup counts have been finalized
            and are trustworthy.
    SiteCensusFolderUrlDTO:
      type: object
      required:
        - urlId
        - url
      properties:
        urlId:
          type: integer
          format: int64
          description: The site_census_urls row id for this URL.
        url:
          type: string
          description: The full page URL (scheme://host/path?query).
        mostRecentStatusCode:
          type: integer
          nullable: true
          description: Most recent HTTP status observed; null/0 when not yet visited.
        urlFoundAt:
          type: string
          format: date-time
          nullable: true
          description: When the URL was first found, ISO 8601.
    SiteCensusFolderUrlsResultsDTO:
      type: object
      required:
        - metadata
        - urls
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        urls:
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/SiteCensusFolderUrlDTO'
    SiteCensusSortByEnum:
      type: string
      default: NAME
      enum:
        - NAME
        - UNIQUE_URLS
        - VISITED_URLS
        - URLS_TO_VISIT
        - IGNORED_URLS
        - BROKEN_URLS
        - SCAN_DATE
    SiteCensusSearchParam:
      type: string
      minLength: 1
      description: Parameter to search for site censuses
    FoundSiteCensusesListResponseDTO:
      type: object
      required:
        - metadata
        - items
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        items:
          type: array
          items:
            $ref: '#/components/schemas/FoundSiteCensusDTO'
    FoundSiteCensusDTO:
      type: object
      description: >
        Represents a site census retrieved from a search operation. Site
        censuses can be searched by the following properties:

        - `id`

        - `name`
      required:
        - id
        - name
        - accountId
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        accountId:
          type: integer
          format: int64
    EmailFinderSearchParam:
      type: string
      minLength: 1
      description: Parameter to search for email inboxes or messages
    FoundEmailInboxDTO:
      type: object
      description: >
        Represents an email inbox retrieved from a search operation. Email
        inboxes can be searched by the following properties:

        - `id`

        - `name`
      required:
        - id
        - name
        - accountId
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        accountId:
          type: integer
          format: int64
        mostRecentMessageId:
          type: integer
          format: int64
          nullable: true
          description: >-
            ID of the most recently received message in this inbox, or null if
            the inbox has no messages
    FoundEmailMessageDTO:
      type: object
      description: >
        Represents a received email message retrieved from a search operation.
        Email messages can be searched by the following properties:

        - `id`

        - `name` (the message subject)
      required:
        - id
        - name
        - accountId
        - inboxId
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        accountId:
          type: integer
          format: int64
        inboxId:
          type: integer
          format: int64
    EmailFinderResultsDTO:
      type: object
      required:
        - inboxes
        - messages
      properties:
        inboxes:
          type: array
          items:
            $ref: '#/components/schemas/FoundEmailInboxDTO'
        messages:
          type: array
          items:
            $ref: '#/components/schemas/FoundEmailMessageDTO'
    RequestBlocking:
      type: object
      description: >-
        (Optional) Present if run configuration had TMS blocking enabled and
        request for this entry was blocked.
      required:
        - blockReason
        - urlSignature
      properties:
        blockReason:
          description: The configuration chosen by user. Phase 2 will include url_signature
          type: string
          enum:
            - tag_id
            - tag_category
            - url_signature
        urlSignature:
          type: string
          description: >-
            The singature used to identify requests.  Tag Signatures shall not
            be exposed to customers (blockReason is `tag_id` or `tag_category`).
        tagId:
          description: >-
            (Optional - Present when reason is `tag_id`) Allows FE to get
            Vendor, Category and other info as they do in tag initiators
          type: integer
        tagCategoryId:
          description: (Optional) Present when reason is `tag_category`)
          type: integer
        failureMessage:
          description: >-
            (Optional) Present if the request was meant to be blocked but it was
            not.
          type: string
    Substitution:
      type: object
      required:
        - substituteUrl
      properties:
        substituteUrl:
          type: string
        failure:
          $ref: '#/components/schemas/RemoteFileMappingFailure'
        tagId:
          type: integer
        tagName:
          type: string
    RemoteFileMappingFailure:
      type: object
      required:
        - failureType
      properties:
        failureType:
          $ref: '#/components/schemas/RemoteFileMappingFailureType'
        failureMessage:
          type: string
    RemoteFileMappingFailureType:
      type: integer
      enum:
        - 1
        - 2
        - 3
        - 4
      x-enum-varnames:
        - UNKNOWN
        - FILE_SIZE_LIMIT_EXCEEDED
        - FILE_NOT_FOUND
        - CANNOT_GET_FILE
    HarEntryTimings:
      type: object
      properties:
        blocked:
          type: number
          minimum: -1
          nullable: true
        dns:
          type: number
          minimum: -1
          nullable: true
        connect:
          type: number
          minimum: -1
          nullable: true
        send:
          type: number
          minimum: -1
        wait:
          type: number
          minimum: -1
        receive:
          type: number
          minimum: -1
        ssl:
          type: number
          minimum: -1
          nullable: true
        comment:
          $ref: '#/components/schemas/HarComment'
    HarResponse:
      type: object
      properties:
        status:
          type: integer
          minimum: 100
          maximum: 600
        statusText:
          type: string
        httpVersion:
          type: string
        cookies:
          type: array
          items:
            $ref: '#/components/schemas/HarCookie'
        headers:
          type: array
          items:
            $ref: '#/components/schemas/HarHeaderOrQueryString'
        content:
          $ref: '#/components/schemas/HarResponseContent'
        redirectURL:
          type: string
          nullable: true
        headersSize:
          type: integer
          minimum: -1
          description: >-
            Number of bytes in response headers (including ending \r\n\r\n). -1
            if unavailable
        bodySize:
          type: integer
          minimum: -1
          description: Number of bytes in response body. -1 if unavailable
        _transferSize:
          type: integer
          format: int64
          minimum: 0
        comment:
          $ref: '#/components/schemas/HarComment'
    HarResponseContent:
      type: object
      properties:
        size:
          type: integer
          minimum: 0
        compression:
          type: integer
          minimum: 0
          nullable: true
        mimeType:
          type: string
          format: mimeType
        text:
          type: string
          nullable: true
        encoding:
          type: string
          nullable: true
        comment:
          $ref: '#/components/schemas/HarComment'
    HarHeaderOrQueryString:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
          nullable: true
        comment:
          $ref: '#/components/schemas/HarComment'
    HarCookie:
      allOf:
        - $ref: '#/components/schemas/CookieBase'
        - type: object
          properties:
            comment:
              $ref: '#/components/schemas/HarComment'
    CookiePartyType:
      type: string
      description: >
        Indicates if cookie domain is different from domain of a page it was set
        on.

        `owned_3rd_party` is deprecated
      enum:
        - 1st_party
        - owned_3rd_party
        - 3rd_party
    CookieSameSite:
      type: string
      nullable: true
      enum:
        - None
        - Lax
        - Strict
    CookieBase:
      type: object
      required:
        - name
        - value
      properties:
        name:
          type: string
        value:
          type: string
        domain:
          type: string
        path:
          type: string
        expires:
          type: string
        httpOnly:
          type: boolean
        secure:
          type: boolean
        partyType:
          $ref: '#/components/schemas/CookiePartyType'
        sameSite:
          $ref: '#/components/schemas/CookieSameSite'
        partitionKey:
          description: >
            The partition key used for 3rd party cookies using CHIPS

            See
            https://developer.mozilla.org/en-US/docs/Web/Privacy/Partitioned_cookies
          type: string
        partitionKeyOpaque:
          description: >
            True if a partition key is used, but for security reasons the
            partition key is not exposed

            If this value is true, a cookie will be considered partitioned.
          type: boolean
    HarCache:
      type: object
      nullable: true
      properties:
        beforeRequest:
          $ref: '#/components/schemas/HarCacheEntry'
        afterRequest:
          $ref: '#/components/schemas/HarCacheEntry'
        comment:
          $ref: '#/components/schemas/HarComment'
    HarCacheEntry:
      type: object
      nullable: true
      properties:
        expires:
          $ref: '#/components/schemas/nullableDatetime'
        lastAccess:
          $ref: '#/components/schemas/datetime'
        eTag:
          type: string
        hitCount:
          type: integer
          minimum: 0
        comment:
          $ref: '#/components/schemas/HarComment'
    Har:
      type: object
      properties:
        log:
          $ref: '#/components/schemas/HarLog'
    HarComment:
      type: string
      nullable: true
    HarLog:
      type: object
      properties:
        version:
          type: string
        creator:
          $ref: '#/components/schemas/HarCreatorOrBrowser'
        browser:
          $ref: '#/components/schemas/HarCreatorOrBrowser'
        pages:
          type: array
          items:
            $ref: '#/components/schemas/HarPage'
        entries:
          type: array
          items:
            $ref: '#/components/schemas/HarEntry'
        comment:
          $ref: '#/components/schemas/HarComment'
    HarCreatorOrBrowser:
      type: object
      properties:
        name:
          type: string
        version:
          type: string
        comment:
          $ref: '#/components/schemas/HarComment'
    HarPage:
      type: object
      properties:
        startedDateTime:
          $ref: '#/components/schemas/datetime'
        id:
          type: string
          description: An automatically-generated identifier string unique within the HAR
        title:
          type: string
        pageTimings:
          $ref: '#/components/schemas/HarPageTimings'
        comment:
          $ref: '#/components/schemas/HarComment'
    HarPageTimings:
      type: object
      properties:
        onContentLoad:
          type: integer
          minimum: -1
          nullable: true
          description: >-
            Number of milliseconds from page load to firing of "onContentLoad"
            event, or -1 if not recorded
        onLoad:
          type: integer
          minimum: -1
          nullable: true
          description: >-
            Number of milliseconds from page load to firing of "onLoad" event,
            or -1 if not recorded
        comment:
          $ref: '#/components/schemas/HarComment'
    nullableDatetime:
      type: string
      format: date-time
      description: >-
        The full date and time, according to ISO-8601 (e. g.
        2020-08-25T21:15:43Z)
      nullable: true
    datetime:
      type: string
      format: date-time
      description: >-
        The full date and time, according to ISO-8601 (e. g.
        2020-08-25T21:15:43Z)
    RequestId:
      type: string
      format: uuid
      description: A UUIDv4 unique identifier for a CMP data harvest request
      maxLength: 36
    timestamp:
      type: integer
      format: int64
    CmpCookieGroups:
      type: object
      required:
        - requestId
        - accountId
        - created
        - status
        - cmpProvider
        - sourceUrl
        - locale
        - groups
      properties:
        requestId:
          $ref: '#/components/schemas/RequestId'
        accountId:
          $ref: '#/components/schemas/AccountId'
        created:
          $ref: '#/components/schemas/timestamp'
        status:
          $ref: '#/components/schemas/CmpCookieGroupStatus'
        errorMessage:
          type: string
          description: (Optional) Present if status is FAILURE
        cmpProvider:
          type: string
          description: CMP provider
          enum:
            - ONE_TRUST
        domain:
          type: string
          description: Domain to which the gathered cookie groups are related
        sourceUrl:
          type: string
          description: URL of the page where the CMP data was harvested
        locale:
          type: string
          description: >-
            An ISO-3166 alpha-2 country code or 'US' followed by a 2 letter
            state code separated by comma
        groups:
          type: array
          description: Array of CMP cookie groups
          items:
            $ref: '#/components/schemas/CmpCookieGrouping'
    CmpCookieGroupStatus:
      type: string
      description: Status of the CMP data harvest request
      enum:
        - PROCESSING
        - COMPLETE
        - FAILURE
    CmpCookieGrouping:
      type: object
      description: A consent group containing cookies assigned to the group
      required:
        - groupId
        - groupName
        - cookies
        - status
      properties:
        groupId:
          type: string
        groupName:
          type: string
        status:
          type: string
          description: >-
            The current status of the CMP group on the domain. e.g. "always
            active", "active", "inactive".
        cookies:
          type: array
          description: The cookies in the consent group
          items:
            $ref: '#/components/schemas/CmpCookieDefinition'
    CmpCookieDefinition:
      type: object
      required:
        - domain
        - regexDomain
        - name
      properties:
        domain:
          type: string
          description: The raw domain of the cookie as reported by the CMP
        regexDomain:
          type: string
          description: The cookie domain with regex applied to include any subdomains
        name:
          type: string
        nameIsRegex:
          type: boolean
          default: false
          description: >-
            Indicates if the cookie name should be treated as a regular
            expression
        description:
          type: string
    HarRequest:
      type: object
      properties:
        method:
          type: string
        url:
          type: string
        httpVersion:
          type: string
        cookies:
          type: array
          items:
            $ref: '#/components/schemas/HarCookie'
        headers:
          type: array
          items:
            $ref: '#/components/schemas/HarHeaderOrQueryString'
        queryString:
          type: array
          items:
            $ref: '#/components/schemas/HarHeaderOrQueryString'
        postData:
          $ref: '#/components/schemas/HarPostData'
        headersSize:
          type: integer
          minimum: -1
          description: >-
            Number of bytes in request headers (including ending \r\n\r\n). -1
            if unavailable
        bodySize:
          type: integer
          minimum: -1
          description: Number of bytes in POST data payload. -1 if unavailable
        comment:
          $ref: '#/components/schemas/HarComment'
        substitution:
          $ref: '#/components/schemas/Substitution'
        requestBlocking:
          $ref: '#/components/schemas/RequestBlocking'
    HarPostData:
      type: object
      properties:
        mimeType:
          type: string
          format: mimeType
        params:
          type: array
          items:
            $ref: '#/components/schemas/HarPostParameter'
        text:
          type: string
        comment:
          $ref: '#/components/schemas/HarComment'
      nullable: true
    HarPostParameter:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
          nullable: true
        fileName:
          type: string
          format: fileName
          nullable: true
        contentType:
          type: string
          format: mimeType
          nullable: true
        comment:
          $ref: '#/components/schemas/HarComment'
    HarEntry:
      type: object
      properties:
        pageref:
          type: string
          nullable: true
        startedDateTime:
          $ref: '#/components/schemas/datetime'
        time:
          type: integer
          minimum: 0
          description: Request's duration in milliseconds
        request:
          $ref: '#/components/schemas/HarRequest'
        response:
          $ref: '#/components/schemas/HarResponse'
        cache:
          $ref: '#/components/schemas/HarCache'
        timings:
          $ref: '#/components/schemas/HarEntryTimings'
        serverIPAddress:
          type: string
          format: ipAddress
          nullable: true
        connection:
          type: string
          nullable: true
        _tagId:
          type: integer
        _resourceType:
          type: string
          description: >-
            The type of request (e.g. 'xhr', 'fetch', 'document', 'script',
            'image', 'stylesheet', 'font', 'other')
        comment:
          $ref: '#/components/schemas/HarComment'
    Rule:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
        accountId:
          type: integer
          format: int32
        createdBy:
          type: integer
          format: int32
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        recipients:
          type: array
          items:
            type: string
        checkTimes:
          type: integer
          format: int32
        matchAllFilters:
          type: boolean
        pageFilters:
          type: array
          items:
            $ref: '#/components/schemas/PageFilter'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/RuleTag'
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label'
        fromTemplate:
          type: boolean
    PageFilter:
      type: object
      properties:
        id:
          type: integer
          format: int32
        ruleId:
          type: integer
          format: int32
        value:
          type: string
        type:
          $ref: '#/components/schemas/PageFilterTypeEnum'
        matchType:
          $ref: '#/components/schemas/MatchTypeEnum'
    PageFilterTypeEnum:
      type: integer
      description: Type of the page filter.
      nullable: true
      enum:
        - 1
        - 2
      x-enum-varnames:
        - URL
        - STATUSCODE
      x-enum-descriptions:
        - URL filter type
        - StatusCode filter type
    MatchTypeEnum:
      type: string
      nullable: true
      enum:
        - IsPresent
        - Equals
        - DoesNotEqual
        - Contains
        - DoesNotContain
        - IsSet
        - IsNotSet
        - Regex
        - GreaterThanOrEqualTo
        - LessThanOrEqualTo
    RuleTag:
      type: object
      properties:
        id:
          type: integer
          format: int32
        ruleId:
          type: integer
          format: int32
        tagId:
          type: integer
          format: int32
        matchType:
          $ref: '#/components/schemas/MatchTypeEnum'
        account:
          type: string
        validationDescription:
          type: string
        clause:
          $ref: '#/components/schemas/ClauseEnum'
        variables:
          type: array
          items:
            $ref: '#/components/schemas/RuleTagVariable'
    ClauseEnum:
      type: string
      nullable: true
      enum:
        - If
        - Then
        - Else
    RuleTagVariable:
      type: object
      properties:
        id:
          type: integer
          format: int32
        ruleTagId:
          type: integer
          format: int32
        variable:
          type: string
        value:
          type: string
        validationDescription:
          type: string
        matchType:
          $ref: '#/components/schemas/MatchTypeEnum'
        valueTagId:
          type: integer
          format: int32
        selectorType:
          $ref: '#/components/schemas/SelectorTypeEnum'
    SelectorTypeEnum:
      type: string
      enum:
        - Empty
        - String
        - UrlParameter
        - DataLayer
        - Tag
    GeoLocationCountryDTO:
      type: object
      description: >-
        Represents a country with geo-location information including continent
        details
      required:
        - countryId
        - countryName
        - countryCode
        - continentId
        - continentName
      properties:
        countryId:
          type: integer
          description: Unique identifier for the country
          example: 46
        countryName:
          type: string
          description: Display name of the country
          example: China
        countryCode:
          type: string
          description: ISO country code (2-letter code)
          example: CN
          maxLength: 2
          minLength: 2
        continentId:
          type: integer
          description: Unique identifier for the continent this country belongs to
          example: 5
        continentName:
          type: string
          description: Name of the continent this country belongs to
          example: Asia
    BrowserInfoDTO:
      type: object
      description: Browser configuration information for audit run snapshots
      properties:
        width:
          type: integer
          description: Browser viewport width in pixels
          example: 1920
        height:
          type: integer
          description: Browser viewport height in pixels
          example: 1080
        gcpEnabled:
          type: boolean
          description: Global Privacy Control (GPC) enabled flag
          example: true
        vpnEnabled:
          type: boolean
          description: VPN enabled flag for the audit run
          example: false
    AuditFiltersSnapshotRequestDTO:
      type: object
      description: >-
        Request body for creating audit run snapshots with optional filter
        override
      properties:
        filterSnapshotOverride:
          $ref: '#/components/schemas/AuditFilterSnapshotDTO'
    AuditFilterSnapshotDTO:
      type: object
      description: Audit filter snapshot configuration
      properties:
        accountId:
          type: integer
          description: Account ID for the audit filter snapshot
        itemId:
          type: integer
          format: int64
          description: Item ID (audit ID) for the snapshot
        runId:
          type: integer
          format: int64
          description: Run ID for the snapshot
        includes:
          type: array
          description: List of include filters
          items:
            $ref: '#/components/schemas/AuditFilterDTO'
        excludes:
          type: array
          description: List of exclude filters
          items:
            $ref: '#/components/schemas/AuditFilterDTO'
    AuditFilterDTO:
      type: object
      description: Audit filter configuration
      properties:
        filter:
          type: string
          description: Filter pattern or value
          example: https://example.com/*
        includeLimit:
          type: integer
          nullable: true
          description: Include limit for the filter (null for exclude filters)
          example: 100
    WebAuditDTO:
      type: object
      description: Web audit information
      required:
        - auditId
        - auditName
        - folderId
        - domainId
      properties:
        auditId:
          type: integer
          description: Unique identifier for the audit
        auditName:
          type: string
          description: Name of the audit
        ownerId:
          type: integer
          description: User ID of the audit owner
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the audit was created
        folderId:
          type: integer
          description: Folder ID where the audit is stored
        domainId:
          type: integer
          description: Domain ID associated with the audit
        updatedAt:
          type: string
          format: date-time
          description: Timestamp when the audit was last updated
    AuditNotesDTO:
      type: object
      description: Audit notes information
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier for the audit notes
        notes:
          type: string
          description: Notes content for the audit
    LatestRunItemDTO:
      type: object
      description: Latest run information for an audit
      required:
        - id
        - name
        - latestRun
        - domainInfo
      properties:
        id:
          type: integer
          description: Audit ID
        name:
          type: string
          description: Audit name
        latestRun:
          $ref: '#/components/schemas/RunInfoDTO'
        domainInfo:
          $ref: '#/components/schemas/DomainInfoDTO'
        labels:
          type: array
          description: Labels associated with the audit
          items:
            $ref: '#/components/schemas/Label'
    RunInfoDTO:
      type: object
      description: Run execution information
      required:
        - id
      properties:
        id:
          type: integer
          format: int64
          description: Run ID
        completedAt:
          type: string
          format: date-time
          description: Timestamp when the run completed
        pageCount:
          type: integer
          format: int64
          description: Number of pages processed in the run
    DomainInfoDTO:
      type: object
      description: Domain information
      required:
        - id
        - name
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
    WebJourneyDTO:
      type: object
      description: Web journey configuration and metadata
      required:
        - id
        - name
        - domainId
        - userId
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier for the web journey
          example: 12345
        name:
          type: string
          description: Name of the web journey
          example: E-commerce Checkout Flow
          maxLength: 255
        notes:
          type: string
          description: Optional notes or description
          example: Tests the complete checkout process
          nullable: true
        domainId:
          type: integer
          description: ID of the associated domain
          example: 123
        userId:
          type: integer
          description: ID of the user who created this web journey
          example: 456
        folderId:
          type: integer
          description: ID of the folder containing this web journey
          example: 789
          nullable: true
        browserWidth:
          type: integer
          description: Browser viewport width in pixels
          example: 1920
          minimum: 250
          maximum: 10000
          nullable: true
        browserHeight:
          type: integer
          description: Browser viewport height in pixels
          example: 1080
          minimum: 250
          maximum: 10000
          nullable: true
        loadVideos:
          type: boolean
          description: Whether to load video content
          example: true
          nullable: true
        vpnEnabled:
          type: boolean
          description: Whether VPN is enabled for this journey
          example: false
          nullable: true
        gpcEnabled:
          type: boolean
          description: Whether Global Privacy Control is enabled
          example: true
          nullable: true
        blockThirdPartyCookies:
          type: boolean
          description: Whether to block third-party cookies
          example: false
          nullable: true
        frequency:
          $ref: '#/components/schemas/WebJourneyFrequencyEnum'
        location:
          type: string
          description: Geographic location for the web journey execution
          example: US-West
          nullable: true
        userAgent:
          type: string
          description: User agent string to use
          example: Chrome/91.0.4472.124
          nullable: true
        userAgentDescription:
          type: string
          description: Human-readable description of the user agent
          example: Chrome Browser
          nullable: true
        customProxy:
          type: string
          description: Custom proxy server configuration
          example: proxy.example.com:8080
          nullable: true
        monitoredByScriptServices:
          type: boolean
          description: Whether this journey is monitored by script services
          example: true
          nullable: true
        createdAt:
          type: string
          format: date-time
          description: When the web journey was created
          example: '2023-06-01T10:30:00Z'
        nextCheck:
          type: string
          format: date-time
          description: When the next execution is scheduled
          example: '2023-06-02T10:30:00Z'
          nullable: true
        schedule:
          $ref: '#/components/schemas/Schedule'
          nullable: true
    WebJourneyUpdateDTO:
      type: object
      description: Web journey data for creation or update
      required:
        - domainId
      properties:
        name:
          type: string
          description: Name of the web journey
          example: E-commerce Checkout Flow
          maxLength: 255
        notes:
          type: string
          description: Optional notes or description
          example: Tests the complete checkout process
          nullable: true
        domainId:
          type: integer
          description: ID of the associated domain
          example: 123
        userId:
          type: integer
          description: ID of the user who created this web journey
          example: 456
        folderId:
          type: integer
          description: ID of the folder containing this web journey
          example: 789
          nullable: true
        browserWidth:
          type: integer
          description: Browser viewport width in pixels
          example: 1920
          minimum: 250
          maximum: 10000
          nullable: true
        browserHeight:
          type: integer
          description: Browser viewport height in pixels
          example: 1080
          minimum: 250
          maximum: 10000
          nullable: true
        loadVideos:
          type: boolean
          description: Whether to load video content
          example: true
          nullable: true
        vpnEnabled:
          type: boolean
          description: Whether VPN is enabled for this journey
          example: false
          nullable: true
        gpcEnabled:
          type: boolean
          description: Whether Global Privacy Control is enabled
          example: true
          nullable: true
        blockThirdPartyCookies:
          type: boolean
          description: Whether to block third-party cookies
          example: false
          nullable: true
        frequency:
          $ref: '#/components/schemas/WebJourneyFrequencyEnum'
        location:
          type: string
          description: Geographic location for the web journey execution
          example: US-West
          nullable: true
        userAgent:
          type: string
          description: User agent string to use
          example: Chrome/91.0.4472.124
          nullable: true
        userAgentDescription:
          type: string
          description: Human-readable description of the user agent
          example: Chrome Browser
          nullable: true
        customProxy:
          type: string
          description: Custom proxy server configuration
          example: proxy.example.com:8080
          nullable: true
        monitoredByScriptServices:
          type: boolean
          description: Whether this journey is monitored by script services
          example: true
          nullable: true
        nextCheck:
          type: string
          format: date-time
          description: When the next execution is scheduled
          example: '2023-06-02T10:30:00Z'
          nullable: true
        schedule:
          $ref: '#/components/schemas/BaseScheduleForCreation'
          nullable: true
    WebJourneyStatusDTO:
      type: object
      description: Current status of a web journey
      required:
        - status
        - webJourneyRunning
        - queued
      properties:
        status:
          $ref: '#/components/schemas/WebJourneyRunStatusEnum'
        webJourneyRunning:
          type: boolean
          description: Whether the web journey is currently running
          example: false
        lastCheck:
          type: string
          format: date-time
          description: When the web journey was last executed
          example: '2023-06-01T16:45:00Z'
          nullable: true
        queued:
          type: boolean
          description: Whether the web journey is queued for execution
          example: false
        failureType:
          $ref: '#/components/schemas/WebJourneyFailureTypeEnum'
          nullable: true
          description: >-
            The failure type of the last run, present only when status indicates
            failure
    WebJourneyFrequencyEnum:
      type: string
      description: Frequency options for web journey execution
      enum:
        - paused
        - once
        - 15 minutes
        - 1 hour
        - 6 hours
        - 12 hours
        - daily
        - weekly
        - biweekly
        - monthly
      example: daily
    WebJourneyRunStatusEnum:
      type: string
      description: Status of a web journey run
      enum:
        - NotChecked
        - Ok
        - Failure
        - PageFailure
        - ActionFailure
        - RulesFailure
        - ExecutingActions
        - ProcessingRules
        - DataCollectionFailure
      example: Ok
    WebJourneyFailureTypeEnum:
      type: string
      description: Type of failure for a web journey run
      enum:
        - JOURNEY_ACTION_FAIL
        - JOURNEY_COOKIE_COLLECTION_ERROR
        - JOURNEY_DATA_LAYER_COLLECTION_ERROR
        - JOURNEY_HAR_COLLECTION_ERROR
        - JOURNEY_SCREENSHOT_COLLECTION_ERROR
        - JOURNEY_DATA_COLLECTION_ERROR
    WebActionSelectorTypeEnum:
      type: string
      description: Types of web element selectors
      enum:
        - CSS
        - XPath
        - ID
        - Name
        - Class
        - Tag
        - Attribute
      example: CSS
    RemoteFileMapping:
      type: object
      description: Remote file mapping configuration
      required:
        - id
        - name
        - matchType
        - matchValue
        - accountId
        - createdBy
        - createdAt
        - updatedBy
        - updatedAt
      properties:
        id:
          type: integer
          format: int64
          description: Simple surrogate key in the database for this RFM config
          example: 123
        name:
          type: string
          maxLength: 255
          description: A user-supplied name to identify this RFM config
          example: Google Analytics Replacement
        fileId:
          type: string
          description: A string GUID used as the uploaded replacement file's "name" in S3
          example: 8c59d02b-6ebc-4893-9391-9be26c6d34cc
          nullable: true
        fileUrl:
          type: string
          maxLength: 5000
          description: >-
            The replacement URL, or else the name of the replacement file before
            it was uploaded
          example: https://example.com/replacement-script.js
          nullable: true
        matchType:
          type: string
          enum:
            - equals
            - regex
          description: Either "regex" or "equals"
          example: equals
        matchValue:
          type: string
          description: >-
            The request URL to be replaced (or the regex that matches URLs to
            replace)
          example: https://www.google-analytics.com/analytics.js
        accountId:
          type: integer
          description: >-
            Foreign key reference to accounts table. The owner of this
            RemoteFileMapping
          example: 343
        createdBy:
          type: integer
          description: Foreign key reference to the users table. Who created this RFM?
          example: 1362
        createdAt:
          type: string
          format: date-time
          description: When this RFM was created
          example: '2024-01-01T10:15:00.000Z'
        updatedBy:
          type: integer
          description: >-
            Foreign key reference to the users table. Who updated this RFM most
            recently?
          example: 1362
        updatedAt:
          type: string
          format: date-time
          description: When this RFM was last updated
          example: '2024-01-02T10:15:00.000Z'
    RemoteFileMappingRequest:
      type: object
      description: Request data for creating or updating remote file mapping
      required:
        - name
        - matchType
        - matchValue
      properties:
        name:
          type: string
          maxLength: 255
          description: A user-supplied name to identify this RFM config
          example: Google Analytics Replacement
        fileId:
          type: string
          description: A string GUID used as the uploaded replacement file's "name" in S3
          example: 8c59d02b-6ebc-4893-9391-9be26c6d34cc
          nullable: true
        fileUrl:
          type: string
          maxLength: 5000
          description: >-
            The replacement URL, or else the name of the replacement file before
            it was uploaded
          example: https://example.com/replacement-script.js
          nullable: true
        matchType:
          type: string
          enum:
            - equals
            - regex
          description: Either "regex" or "equals"
          example: equals
        matchValue:
          type: string
          description: >-
            The request URL to be replaced (or the regex that matches URLs to
            replace)
          example: https://www.google-analytics.com/analytics.js
    FileUploadResponse:
      type: object
      description: Response for file upload operation
      required:
        - fileId
      properties:
        fileId:
          type: string
          description: Unique identifier for the uploaded file
          example: g3c7fa03-e442-c57b-b179-b349ee4ebce4
    GitHubAppInstallationLinkResponse:
      $ref: '#/components/schemas/GitHubAppInstallationDTO'
    GhAppNameEnum:
      type: string
      description: Allowed GitHub App names for installation
      enum:
        - observepoint-integration
        - observepoint-test-app
    GitHubAppInstallationStatusEnum:
      type: string
      description: Installation status values aligned with backend enum
      enum:
        - pending
        - active
        - disabled
    GitHubAppInstallationSortByEnum:
      type: string
      description: Sortable fields for GitHub App installations
      enum:
        - initiated_at
        - completed_at
        - org_name
    GitHubAppInstallationDTO:
      type: object
      description: GitHub App installation record
      required:
        - id
        - createdByUserId
        - initiatedAt
        - status
      properties:
        id:
          type: integer
          format: int32
        createdByUserId:
          $ref: '#/components/schemas/UserId'
        status:
          $ref: '#/components/schemas/GitHubAppInstallationStatusEnum'
        orgName:
          type: string
        initiatedAt:
          $ref: '#/components/schemas/DateAndTime'
        completedAt:
          $ref: '#/components/schemas/DateAndTime'
        updatedAt:
          $ref: '#/components/schemas/DateAndTime'
        lastUsedAt:
          $ref: '#/components/schemas/DateAndTime'
        disabledAt:
          $ref: '#/components/schemas/DateAndTime'
        installationUrl:
          type: string
          format: uri
          description: >-
            GitHub App installation URL (only populated for pending
            installations)
        expiresAt:
          $ref: '#/components/schemas/DateAndTime'
    GitHubAppInstallations_ResponseDTO:
      type: object
      required:
        - installations
      properties:
        installations:
          type: array
          items:
            $ref: '#/components/schemas/GitHubAppInstallationDTO'
    GitHubAppInstallationCompleteRequestDTO:
      type: object
      description: >
        Request to complete a GitHub App installation.

        Must provide exactly one of: redirectSecret (for direct link flow) or
        claimCode (for claim flow).
      properties:
        redirectSecret:
          type: string
          format: uuid
          description: >-
            Secret from OAuth flow redirect (Phase 2A - user with ObservePoint
            account)
        claimCode:
          type: string
          minLength: 10
          maxLength: 10
          pattern: ^[A-Za-z0-9]{10}$
          description: >-
            10-character alphanumeric claim code (Phase 2B - teammate claims on
            behalf of GH admin)
    GitHubAppInstallationCompleteResponseDTO:
      type: object
      required:
        - installationId
      properties:
        installationId:
          $ref: '#/components/schemas/GitHubAppInstallationRecordId'
      description: Response returned when an installation request is successfully completed
    GitHubAppOAuthInitiateRequestDTO:
      type: object
      required:
        - installationId
        - hasOpAccount
      properties:
        installationId:
          $ref: '#/components/schemas/InstallationId'
        hasOpAccount:
          type: boolean
          description: Whether user has an ObservePoint account
      description: >
        Request to initiate GitHub OAuth flow for a GitHub App installation.

        User decision on whether they have an ObservePoint account determines
        the subsequent flow.
    GitHubAppRedirectResponseDTO:
      type: object
      required:
        - redirectUri
      properties:
        redirectUri:
          type: string
          format: uri
          description: URI to redirect the user to
      description: Common response containing a redirect URI for GitHub App OAuth flows
    ErrorModel:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        message:
          type: string
        details:
          type: string
        validationReport:
          type: object
