ObservePoint Alerts API

Alert management and configuration

Operations 11

POST /v3/alerts Create Alert #
GET /v3/alerts/{alertId} Get specific Alert by ID #
PUT /v3/alerts/{alertId} Update specific Alert #
DELETE /v3/alerts/{alertId} Delete specific Alert #
PUT /v3/alerts/{alertId}/labels Update labels for an Alert #
POST /v3/alerts/library Get Alerts Library items #
GET /v3/alerts/metrics/{metricType} Get Alerts by metric #
POST /v3/alerts/target-items/{itemType}/search Search target items (data sources - audits, journeys etc) that may have… #
PATCH /v3/alerts/{alertId}/target-items Update target items (data sources) that have specified Alert assigned #
POST /v3/alerts/search/assignments Search Alerts for assigning them to other items (audits, WJs etc) #
PATCH /v3/alerts/assignments/{itemType}/{itemId} Update Alerts assigned to specified item (audit, journey etc) #

Work with this as data

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

MCP server

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

https://apis.io/mcp

Tools for apis

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

Call it yourself

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

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

Get an API key

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

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

OpenAPI Specification

observepoint-alerts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: V3 Alerts API
  description: This section documents the V3 API endpoints that provide access to comprehensive audit and journey data from ObservePoint. Use these endpoints to retrieve detailed reports, export data, manage alerts, configure scans and privacy settings, and analyze web performance metrics from your ObservePoint scans.
  version: null
  contact:
    name: Observepoint
    url: https://www.observepoint.com/contact-us
servers:
- url: https://api.observepoint.com
  description: ObservePoint Production API
tags:
- name: Alerts
  x-displayName: Alerts
  description: Alert management and configuration
paths:
  /v3/alerts:
    post:
      tags:
      - Alerts
      operationId: createAlert
      summary: Create Alert
      requestBody:
        description: Alert definition
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAlertRequestDTO'
      responses:
        '201':
          description: created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAlertResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      security:
      - API_Key: []
      description: POST /v3/alerts
  /v3/alerts/{alertId}:
    parameters:
    - $ref: '#/components/parameters/PathParamAlertId'
    get:
      tags:
      - Alerts
      operationId: getAlertById
      summary: Get specific Alert by ID
      responses:
        '200':
          description: alert definition
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAlertDefinitionResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - API_Key: []
      description: GET /v3/alerts/{alertId}
    put:
      tags:
      - Alerts
      operationId: updateAlertById
      summary: Update specific Alert
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAlertRequestDTO'
      responses:
        '204':
          description: updated successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - API_Key: []
      description: PUT /v3/alerts/{alertId}
    delete:
      tags:
      - Alerts
      operationId: deleteAlertById
      summary: Delete specific Alert
      responses:
        '204':
          description: deleted successfully
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - API_Key: []
      description: DELETE /v3/alerts/{alertId}
  /v3/alerts/{alertId}/labels:
    parameters:
    - $ref: '#/components/parameters/PathParamAlertId'
    put:
      tags:
      - Alerts
      operationId: updateAlertLabels
      summary: Update labels for an Alert
      requestBody:
        content:
          application/json:
            schema:
              title: AlertSetLabelsRequestDTO
              description: existing labels will be overwritten by labels listed here
              type: object
              properties:
                labels:
                  type: array
                  items:
                    $ref: '#/components/schemas/LabelId'
      responses:
        '204':
          description: alert labels updated successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - API_Key: []
      description: PUT /v3/alerts/{alertId}/labels
  /v3/alerts/library:
    parameters:
    - $ref: '#/components/parameters/QueryParamAlertsSearchPageSize'
    - $ref: '#/components/parameters/pageParam'
    - $ref: '#/components/parameters/SortDescendingParam'
    - name: sortBy
      in: query
      required: false
      allowEmptyValue: false
      schema:
        $ref: '#/components/schemas/GetAlertsLibrarySortColumn'
    post:
      tags:
      - Alerts
      operationId: getAlertsForLibrary
      summary: Get Alerts Library items
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetAlertsLibraryRequestDTO'
      responses:
        '200':
          description: Alerts Library items
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAlertsLibraryResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - API_Key: []
      description: POST /v3/alerts/library
  /v3/alerts/metrics/{metricType}:
    parameters:
    - name: metricType
      in: path
      required: true
      allowEmptyValue: false
      schema:
        $ref: '#/components/schemas/AlertMetricTypeEnum'
    - $ref: '#/components/parameters/QueryParamAlertsSearchPageSize'
    - $ref: '#/components/parameters/pageParam'
    - $ref: '#/components/parameters/SortDescendingParam'
    - name: sortBy
      in: query
      required: false
      allowEmptyValue: false
      schema:
        $ref: '#/components/schemas/GetAlertsByMetricSortColumn'
    get:
      tags:
      - Alerts
      operationId: getAlertsByMetric
      summary: Get Alerts by metric
      responses:
        '200':
          description: All alerts in an account with the same metric
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAlertsByMetricResponseDTO'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - API_Key: []
      description: GET /v3/alerts/metrics/{metricType}
  /v3/alerts/target-items/{itemType}/search:
    parameters:
    - $ref: '#/components/parameters/PathParamAlertAssignmentItemType'
    - $ref: '#/components/parameters/QueryParamAlertAssignmentsPageSize'
    - $ref: '#/components/parameters/pageParam'
    - $ref: '#/components/parameters/QueryParamAlertAssignmentsSort'
    - $ref: '#/components/parameters/SortDescendingParam'
    post:
      tags:
      - Alerts
      operationId: searchTargetItemsForAlert
      summary: Search target items (data sources - audits, journeys etc) that may have…
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchAlertAssignmentsRequestDTO'
      responses:
        '200':
          description: Items (data sources) that may have specified Alert assigned or not assigned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchAlertAssignmentsResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - API_Key: []
      description: POST /v3/alerts/target-items/{itemType}/search
  /v3/alerts/{alertId}/target-items:
    parameters:
    - $ref: '#/components/parameters/PathParamAlertId'
    patch:
      tags:
      - Alerts
      operationId: updateTargetItemsOfAlert
      summary: Update target items (data sources) that have specified Alert assigned
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSpecificAlertAssignmentsRequestDTO'
      responses:
        '204':
          description: Updated successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - API_Key: []
      description: PATCH /v3/alerts/{alertId}/target-items
  /v3/alerts/search/assignments:
    parameters:
    - $ref: '#/components/parameters/QueryParamAlertsSearchPageSize'
    - $ref: '#/components/parameters/pageParam'
    - name: sortBy
      in: query
      required: false
      allowEmptyValue: false
      schema:
        $ref: '#/components/schemas/SearchAlertsForAssignmentSortColumn'
    - $ref: '#/components/parameters/SortDescendingParam'
    post:
      tags:
      - Alerts
      operationId: searchAlertsForAssignment
      summary: Search Alerts for assigning them to other items (audits, WJs etc)
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchAlertsForAssignmentRequestDTO'
      responses:
        '200':
          description: Assignments
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchAlertsForAssignmentResponseDTO'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - API_Key: []
      description: POST /v3/alerts/search/assignments
  /v3/alerts/assignments/{itemType}/{itemId}:
    parameters:
    - $ref: '#/components/parameters/PathParamAlertAssignmentItemType'
    - $ref: '#/components/parameters/PathParamAlertAssignmentItemId'
    patch:
      tags:
      - Alerts
      operationId: updateAlertsAssignedToItem
      summary: Update Alerts assigned to specified item (audit, journey etc)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSpecificItemAlertsRequestDTO'
      responses:
        '204':
          description: updated successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/UnAuthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      security:
      - API_Key: []
      description: PATCH /v3/alerts/assignments/{itemType}/{itemId}
components:
  schemas:
    SearchAlertsForAssignmentSortColumn:
      type: string
      description: 'Behaviour per type:

        - REPORT_METRIC: sort by name of data/report type corresponding to alert''s `metricType`

        '
      enum:
      - ALERT_NAME
      - REPORT_METRIC
    UserId:
      type: integer
      description: ID of a user
      example: 123
    GetAlertsLibraryResponseDTO:
      type: object
      required:
      - metadata
      - alerts
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        alerts:
          type: array
          items:
            title: GetAlertsLibraryItem
            type: object
            required:
            - id
            - name
            - metricType
            - labels
            - updatedAt
            - targetItemCount
            - subscribedCount
            - isOwner
            properties:
              id:
                $ref: '#/components/schemas/AlertId'
              name:
                $ref: '#/components/schemas/AlertName'
              metricType:
                $ref: '#/components/schemas/AlertMetricTypeEnum'
              labels:
                type: array
                minItems: 0
                items:
                  $ref: '#/components/schemas/LabelId'
              updatedAt:
                $ref: '#/components/schemas/DateAndTime'
              targetItemCount:
                type: integer
                description: Number of audits/journeys that have this alert configured
              subscribedCount:
                type: integer
                description: Number of notification profiles configured for this alert
              isOwner:
                type: boolean
                description: Indicates whether the current user is the owner of this alert
    SearchAlertAssignmentsResponseDTO:
      type: object
      required:
      - metadata
      - items
      properties:
        metadata:
          $ref: '#/components/schemas/CommonIterableResponseMetadata'
        items:
          type: array
          items:
            title: AlertAssignmentItem
            type: object
            description: '`itemLastRunAt` property available only for audits and web-journeys.

              '
            required:
            - isAssigned
            - itemType
            - itemId
            - itemName
            properties:
              isAssigned:
                type: boolean
                description: TRUE if Alert is assigned to this item, FALSE otherwise
              itemType:
                $ref: '#/components/schemas/AlertAssignmentItemTypeEnum'
              itemId:
                $ref: '#/components/schemas/AlertAssignmentItemId'
              itemName:
                type: string
                description: Name of audit/WJ etc
              itemLastRunAt:
                $ref: '#/components/schemas/DateAndTime'
              itemLabels:
                description: may be absent if item does not support labels
                type: array
                minItems: 0
                items:
                  $ref: '#/components/schemas/LabelId'
    FoldersFilter:
      type: array
      description: non-empty array of folders with domains (subfolders), items from which will be included in response
      minItems: 1
      items:
        $ref: '#/components/schemas/FoldersFilterItem'
    CreateAlertResponseDTO:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/AlertId'
    SearchAlertsForAssignmentRequestDTO:
      type: object
      description: All included filters are optional. All populated filters are combined via `AND` boolean operator
      properties:
        targetItem:
          title: SearchAlertsForAssignmentSpecificTargetItem
          description: Item (audit/journey) alerts are assigned or not assigned to
          type: object
          required:
          - itemType
          - itemId
          - isAssigned
          properties:
            itemType:
              $ref: '#/components/schemas/AlertAssignmentItemTypeEnum'
            itemId:
              $ref: '#/components/schemas/AlertAssignmentItemId'
            isAssigned:
              type: boolean
              description: When TRUE it works as "alert IS assigned to specified target item (audit/journey)" and if false "alert IS NOT assigned to specified target item
        search:
          type: string
          minLength: 1
          description: When value is present it works as "alert `name` contains given substring" filter
        labels:
          type: array
          description: non-empty array of labels present on an alert, works as "alert has all specified labels" filter
          minItems: 1
          items:
            $ref: '#/components/schemas/LabelId'
        isDefaultForNewDataSources:
          $ref: '#/components/schemas/AlertIsDefaultForNewDataSources'
    AlertMetricTypeEnum:
      type: string
      description: "Deprecated metric types:\n  - ACCOUNT_USAGE_THIS_MONTH_AUDIT_PAGE_SCANNED_COUNT\n  - ACCOUNT_USAGE_12_MONTH_AUDIT_PAGE_SCANNED_COUNT\n  - ACCOUNT_USAGE_12_MONTH_WJ_RUN_COUNT\n  - ACCOUNT_USAGE_THIS_MONTH_WJ_RUN_COUNT\n  - ACCOUNT_USAGE_LAST_30_DAYS_LOGIN_USER_COUNT\n  - PAGE_SUMMARY_FAILED_RULE_COUNT\n"
      enum:
      - ACCOUNT_USAGE_THIS_MONTH_AUDIT_PAGE_SCANNED_COUNT
      - ACCOUNT_USAGE_12_MONTH_AUDIT_PAGE_SCANNED_COUNT
      - ACCOUNT_USAGE_12_MONTH_WJ_RUN_COUNT
      - ACCOUNT_USAGE_THIS_MONTH_WJ_RUN_COUNT
      - ACCOUNT_USAGE_LAST_30_DAYS_LOGIN_USER_COUNT
      - ACCOUNT_USAGE_V2_THIS_MONTH_AUDIT_PAGE_USAGE_PERCENTAGE
      - ACCOUNT_USAGE_V2_CURRENT_TERM_PAGE_USAGE_PERCENTAGE
      - ACCOUNT_USAGE_V2_CURRENT_TERM_WJ_RUN_USAGE_PERCENTAGE
      - ACCOUNT_USAGE_V2_THIS_MONTH_WJ_RUN_USAGE_PERCENTAGE
      - ACCOUNT_USAGE_V2_LAST_30_DAYS_LOGIN_USER_COUNT
      - SCORE_TOTAL
      - SCORE_TAG_PRESENCE
      - SCORE_TAG_PERFORMANCE
      - SCORE_RULES
      - SCORE_PAGE_PERFORMANCE
      - SCORE_COOKIE
      - PAGE_SUMMARY_PAGE_COUNT
      - PAGE_SUMMARY_AVG_PAGE_LOAD_TIME
      - PAGE_SUMMARY_BROKEN_INITIAL_PAGE_COUNT
      - PAGE_SUMMARY_BROKEN_FINAL_PAGE_COUNT
      - PAGE_SUMMARY_PAGE_WITH_BROKEN_LINKS_COUNT
      - PAGE_SUMMARY_FAILED_RULE_COUNT
      - PAGE_SUMMARY_WEB_VITALS_P75_LARGEST_CONTENTFUL_PAINT
      - PAGE_SUMMARY_WEB_VITALS_P75_FIRST_CONTENTFUL_PAINT
      - PAGE_SUMMARY_WEB_VITALS_P75_TIME_TO_FIRST_BYTE
      - PAGE_SUMMARY_WEB_VITALS_P75_CUMULATIVE_LAYOUT_SHIFT
      - TAG_INVENTORY_PAGE_COUNT
      - TAG_INVENTORY_UNIQUE_TAG_COUNT
      - TAG_INVENTORY_BROKEN_TAG_COUNT
      - TAG_INVENTORY_BROKEN_PAGE_COUNT
      - TAG_HEALTH_PAGE_COUNT
      - TAG_HEALTH_AVG_TAG_LOAD_TIME
      - TAG_HEALTH_AVG_TAG_REQUEST_SIZE
      - TAG_HEALTH_SLOW_TAG_PERCENTAGE
      - TAG_HEALTH_BROKEN_TAG_PERCENTAGE
      - TAG_HEALTH_TAG_REQUEST_COUNT
      - TAG_DUPLICATES_AND_MULTIPLES_PAGE_COUNT
      - TAG_DUPLICATES_AND_MULTIPLES_UNIQUE_TAG_COUNT
      - TAG_DUPLICATES_AND_MULTIPLES_TAG_REQUEST_COUNT
      - TAG_DUPLICATES_AND_MULTIPLES_TAG_DUPLICATE_COUNT
      - TAG_DUPLICATES_AND_MULTIPLES_TAG_MULTIPLE_COUNT
      - VARIABLE_INVENTORY_PAGE_COUNT
      - VARIABLE_INVENTORY_UNIQUE_TAG_COUNT
      - VARIABLE_INVENTORY_TAG_REQUEST_COUNT
      - VARIABLE_INVENTORY_UNIQUE_VARIABLE_COUNT
      - VARIABLE_INVENTORY_UNIQUE_VARIABLE_VALUE_COUNT
      - BROWSER_LOGS_PAGE_COUNT
      - BROWSER_LOGS_ERROR_LOG_COUNT
      - BROWSER_LOGS_WARN_LOG_COUNT
      - BROWSER_LOGS_INFO_LOG_COUNT
      - BROWSER_LOGS_DEBUG_LOG_COUNT
      - BROWSER_LOGS_OTHER_LOG_COUNT
      - COOKIE_INVENTORY_PAGE_COUNT
      - COOKIE_INVENTORY_UNIQUE_COOKIE_COUNT
      - COOKIE_INVENTORY_FIRST_PARTY_COOKIE_COUNT
      - COOKIE_INVENTORY_THIRD_PARTY_COOKIE_COUNT
      - COOKIE_INVENTORY_NON_SECURE_COOKIE_COUNT
      - COOKIE_INVENTORY_SAME_SITE_EMPTY_COOKIE_COUNT
      - PRIVACY_COOKIES_PAGE_COUNT
      - PRIVACY_COOKIES_PAGE_WITH_UNAPPROVED_COOKIES_COUNT
      - PRIVACY_COOKIES_UNIQUE_COOKIE_COUNT
      - PRIVACY_COOKIES_APPROVED_COOKIE_COUNT
      - PRIVACY_COOKIES_UNAPPROVED_COOKIE_COUNT
      - PRIVACY_TAGS_PAGE_COUNT
      - PRIVACY_TAGS_PAGE_WITH_UNAPPROVED_TAGS_COUNT
      - PRIVACY_TAGS_UNIQUE_TAG_COUNT
      - PRIVACY_TAGS_APPROVED_TAG_COUNT
      - PRIVACY_TAGS_UNAPPROVED_TAG_COUNT
      - PRIVACY_REQUESTS_PAGE_COUNT
      - PRIVACY_REQUESTS_PAGE_WITH_UNAPPROVED_REQUESTS_COUNT
      - PRIVACY_REQUESTS_REQUEST_COUNT
      - PRIVACY_REQUESTS_UNIQUE_DOMAIN_COUNT
      - PRIVACY_REQUESTS_UNIQUE_LOCATION_COUNT
      - PRIVACY_REQUESTS_APPROVED_REQUEST_COUNT
      - PRIVACY_REQUESTS_UNAPPROVED_REQUEST_COUNT
      - FILE_CHANGES_PAGE_COUNT
      - FILE_CHANGES_CHANGED_FILE_COUNT
      - FILE_CHANGES_NEW_FILE_COUNT
      - FILE_CHANGES_FILE_DATE_CHANGE_COUNT
      - FILE_CHANGES_FILE_SIZE_CHANGE_COUNT
      - RULE_RESULTS_PAGE_COUNT
      - RULE_RESULTS_RULE_COUNT
      - RULE_RESULTS_RULE_FAILURE_COUNT
      - RULE_RESULTS_FAILED_RULE_COUNT
      - RULE_RESULTS_PASSED_RULE_COUNT
      - RULE_RESULTS_NOT_APPLIED_RULE_COUNT
      - RULE_RESULTS_FAILED_RULE_PAGE_COUNT
      - RULE_RESULTS_PASSED_RULE_PAGE_COUNT
      - RULE_RESULTS_NOT_APPLIED_RULE_PAGE_COUNT
    AlertName:
      type: string
      minLength: 1
      description: User-defined name of the alert
    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'
    AlertAssignmentItemTypeEnum:
      type: string
      enum:
      - AUDIT
      - WEB_JOURNEY
    GetAlertsLibrarySortColumn:
      type: string
      enum:
      - ALERT_NAME
      - TARGET_ITEMS
      - REPORT_METRIC
      - UPDATED_AT
      - SUBSCRIBERS
    AlertIsDefaultForNewDataSources:
      type: boolean
      description: 'Makes this alert selected by default in data-source (audit/WJ) creation UI.

        This is a user-specific flag.

        '
    ErrorModel:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        message:
          type: string
        details:
          type: string
        validationReport:
          type: object
    AlertAssignmentItem:
      type: object
      required:
      - itemType
      - itemId
      properties:
        itemType:
          $ref: '#/components/schemas/AlertAssignmentItemTypeEnum'
        itemId:
          $ref: '#/components/schemas/AlertAssignmentItemId'
    DomainId:
      type: integer
      format: int32
      description: ID of a domain
      example: 123
    AlertNotificationPolicyEnum:
      type: string
      description: 'Behaviour per type:

        - WHEN_NEWLY_TRIGGERED: (*default*) send alert when goes from "ok" to "triggered" (resets when no longer triggered)

        - ALWAYS_WHEN_TRIGGERED: send alert notification each time it is triggered per run

        '
      enum:
      - WHEN_NEWLY_TRIGGERED
      - ALWAYS_WHEN_TRIGGERED
    UpdateSpecificItemAlertsRequestDTO:
      type: object
      required:
      - assignmentUpdates
      properties:
        assignmentUpdates:
          type: array
          items:
            title: UpdateSpecificItemAlertAssignments_Item
            type: object
            required:
            - alertId
            - operation
            properties:
              alertId:
                $ref: '#/components/schemas/AlertId'
              operation:
                $ref: '#/components/schemas/AlertAssignmentUpdateOperationTypeEnum'
    AlertConfigTrait:
      description: Core parts of alert definition
      type: object
      required:
      - name
      - metricType
      - targetValueComparator
      - filtersV0
      properties:
        name:
          $ref: '#/components/schemas/AlertName'
        metricType:
          $ref: '#/components/schemas/AlertMetricTypeEnum'
        metricChangeType:
          $ref: '#/components/schemas/AlertMetricChangeTypeEnum'
        targetValueComparator:
          $ref: '#/components/schemas/AlertMetricValueComparator'
        filtersV0:
          type: object
          description: 'Filters to be applied before computing the alert. Exact type depends on `metricType`, see mapping in `AlertMetricTypeToFilterMapping`

            '
    CommonIterableResponseMetadata:
      description: Common metadata for iterable
      type: object
      required:
      - pagination
      properties:
        pagination:
          $ref: '#/components/schemas/PaginationMetadata'
    AlertAssignmentsSortColumn:
      type: string
      enum:
      - IS_ASSIGNED
      - ITEM_NAME
      - RUN_DATE
    FolderId:
      type: integer
      format: int32
      description: ID of a folder
      example: 123
    LabelId:
      type: integer
      format: int64
      description: Label identifier
      example: 223
      minimum: 1
    UpdateSpecificAlertAssignmentsRequestDTO:
      type: object
      required:
      - assignmentUpdates
      properties:
        assignmentUpdates:
          type: array
          items:
            title: UpdateSpecificAlertAssignments_Item
            type: object
            required:
            - scope
            - itemType
            - itemId
            - operation
            properties:
              scope:
                description: For forward-compatibility
                type: string
                enum:
                - SINGLE_ITEM
              itemType:
                $ref: '#/components/schemas/AlertAssignmentItemTypeEnum'
              itemId:
                $ref: '#/components/schemas/AlertAssignmentItemId'
              operation:
                $ref: '#/components/schemas/AlertAssignmentUpdateOperationTypeEnum'
    AlertMetricValueComparator:
      type: object
      description: 'Subtypes: - AlertMetricSpecificValueComparator - AlertMetricValueInRangeComparator - AlertMetricValueNotInRangeComparator

        '
      required:
      - operator
      properties:
        operator:
          $ref: '#/components/schemas/AlertMetricValueComparisonOperatorEnum'
      discriminator:
        propertyName: operator
        mapping:
          GREATER: '#/components/schemas/AlertMetricSpecificValueComparator'
          GREATER_OR_EQUAL: '#/components/schemas/AlertMetricSpecificValueComparator'
          EQUAL: '#/components/schemas/AlertMetricSpecificValueComparator'
          NOT_EQUAL: '#/components/schemas/AlertMetricSpecificValueComparator'
          LESS_OR_EQUAL: '#/components/schemas/AlertMetricSpecificValueComparator'
          LESS: '#/components/schemas/AlertMetricSpecificValueComparator'
          BETWEEN: '#/components/schemas/AlertMetricValueInRangeComparator'
          NOT_BETWEEN: '#/components/schemas/AlertMetricValueNotInRangeComparator'
    FoldersFilterItem:
      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'
    SearchAlertAssignmentsRequestDTO:
      type: object
      description: 'Filters for searching for items that may have specific Alert assigned or not assigned.

        - when `alertId` is specified, `isAssigned` field in response object will be set to true

        for items already assigned to alert with the specified ID

        '
      properties:
        alertId:
          $ref: '#/components/schemas/AlertId'
        assignedToAlert:
          type: boolean
          description: 'if `alertId` is NOT specified, `assignedToAlert` is ignored.

            if `alertId` IS specified `assignedToAlert` has 3 states:

            when TRUE - only items assigned to the specified alert will be returned;

            when FALSE - only NOT assigned;

            when NOT specified or NULL - both assigned and not assigned items will be returned

            '
        itemName:
          type: string
          minLength: 1
          description: optional "item name contains substring" filter
        itemId:
          $ref: '#/components/schemas/AlertAssignmentItemId'
        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/FoldersFilter'
    GetAlertsByMetricSortColumn:
      type: string
      enum:
      - ALERT_NAME
      - SUBSCRIBERS
    GetAlertsLibraryRequestDTO:
      type: object
      description: All filters are optional. All populated filters are combined via `AND` boolean operator
      properties:
        alertName:
          minLength: 1
          type: string
          description: when present works as "alert `name` contains give substring` filter
        metricType:
          $ref: '#/components/schemas/AlertMetricTypeEnum'
        labels:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/LabelId'
        createdByUserId:
          $ref: '#/components/schemas/UserId'
        isSubscribed:
          type: boolean
          default: false
          description: When `true` then only those alerts will be returned that have Notification Profile of a requestor user assigned onto them
    AlertMetricChangeTypeEnum:
      type: string
      description: 'Behaviour per type:

        - VALUE_CHANGE: current - previous

        - VALUE_CHANGE_ABS: ABS(current - previous)

        - RELATIVE_VALUE_CHANGE: 100% * (current - previous) / previous

        - RELATIVE_VALUE_CHANGE: ABS(100% * (current - previous) / previous)


        Composite metric change operators shown on ObservePoint UI should be defined as described below:

        - `Changes by (∆)` = VALUE_CHANGE_ABS + GREATER_OR_EQUAL(positive number)

        - `Increases by (+)` = VALUE_CHANGE + GREATER_OR_EQUAL(positive number)

        - `Decreases by (-)` = VALUE_CHANGE + LESS_OR_EQUAL(negative number)

        - `Any change` = VALUE_CHANGE_ABS (or VALUE_CHANGE) + NOT_EQUAL(0)

        - `Changes by (∆ %)` = RELATIVE_CHANGE_ABS + GREATER_OR_EQUAL(positive number)

        - `Increases by (+%)` = RELATIVE_CHANGE + GREATER_OR_EQUAL(positive number)

        - `Decreases by (-%)` = RELATIVE_CHANGE + LESS_OR_EQUAL(negative number)

        '
      enum:
      - VALUE_CHANGE
      - VALUE_CHANGE_ABS
      - RELATIVE_VALUE_CHANGE
      - RELATIVE_VALUE_CHANGE_ABS
    CreateAlertRequestDTO:
      type: object
      description: 'Alert is triggered when comparison holds: `actual value` <targetValueComparisonOperator> `targetValue`

        '
      required:
      - name
      - metricType
      - targetValueComparator
      - filtersV0
      properties:
        name:
          $ref: '#/components/schemas/AlertName'
        labels:
          type: array
          description: Passing null instead of this array while updating an entity will prevent API from changing associated labels
          items:
            $ref: '#/components/schemas/LabelId'
        metricType:
          $ref: '#/components/schemas/AlertMetricTypeEnum'
        metricChangeType:
          $ref: '#/components/schemas/AlertMetricChangeTypeEnum'
        targetValueComparator:
          $ref: '#/components/schemas/AlertMetricValueComparator'
        filtersV0:
          type: object
          description: 'Filters to be applied before computing the alert. Exact type depends on `metricType`, see mapping in `AlertMetricTypeToFilterMapping`

            '
        emails:
          type: array
          description: List of email addresses that receive notifications when alert triggers. Will be replaced with Notification Profiles
          items:
            $ref: '#/components/schemas/EmailAddress'
        customAlertMessage:
          type: string
        notificationPolicy:
          $ref: '#/components/schemas/AlertNotificationPolicyEnum'
        isDefaultForNewDataSources:
          $ref: '#/components/schemas/AlertIsDefaultForNewDataSources'
        assignments:
          type: array
          description: 'Passing null instead of this array while updating an alert will prevent API from changing its assignments.

            To pass only updates of assignments (additions/removals) for existing alert use `PATCH /v3/alerts/{alertId}/target-items` endpoint

            '
          items:
            $ref: '#/components/schemas/AlertAssignmentItem'
        skipSendingAlertSharedWithYouEmail:
          type: boolean
          description: 'When TRUE, "Alert shared with you" email will NOT be sent to newly added email addresses.

            When NOT specified or FALSE, it will be sent.

            '
    PaginationMetadata:
      type: object
      required:
      - totalCount
      - totalPageCount
      - pageSize
      - currentPageSize
      - currentPageNumber
      properties:
        totalCount:
        

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/observepoint/refs/heads/main/openapi/observepoint-alerts-api-openapi.yml