Diligent Monitorings API

Website monitoring and alerts for changes and risks

OpenAPI Specification

diligent-monitorings-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  version: 1.6.0
  title: Diligent CDD Monitorings API
  description: 'Download Postman collection [here](https://docs.godiligent.ai/files/postman_collection.json).

    '
servers:
- url: https://api.godiligent.ai
  description: Production
- url: https://api.sandbox.godiligent.ai
  description: Sandbox
security:
- xApiKey: []
tags:
- name: Monitorings
  description: Website monitoring and alerts for changes and risks
paths:
  /monitoring-alerts:
    get:
      tags:
      - Monitorings
      summary: List monitoring alerts
      description: Retrieve a paginated list of monitoring alerts for the authenticated customer. Supports filtering by seen/unseen status and execution time, and provides an unseen alert count.
      parameters:
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
        description: Number of alerts per page (1-100, default 10)
      - name: next_token
        in: query
        required: false
        schema:
          type: string
        description: Pagination token for next page (Base64-encoded)
      - name: only_unacknowledged
        in: query
        required: false
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
        description: If 'true', returns only unacknowledged alerts
      - name: acknowledged
        in: query
        required: false
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
        description: If 'true', returns only acknowledged alerts
      - name: execution_time_before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Only include alerts executed before this time (ISO8601)
      - name: execution_time_after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Only include alerts executed after this time (ISO8601)
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitoringAlertsListResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
      security:
      - xApiKey: []
  /monitoring-alerts/acknowledge:
    post:
      tags:
      - Monitorings
      summary: Acknowledge (mark as seen) monitoring alerts
      description: Acknowledge (mark as seen) one or all monitoring alerts for the authenticated customer. Exactly one of alertId or all must be provided in the request body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AcknowledgeAlertsRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcknowledgeAlertsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '401':
          description: Unauthorized
        '404':
          description: Alert not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
      security:
      - xApiKey: []
  /monitorings:
    post:
      tags:
      - Monitorings
      summary: Create a new monitoring
      description: Create a new monitoring for a customer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MonitoringRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Monitoring'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '500':
          description: Internal Server Error
      security:
      - xApiKey: []
    get:
      tags:
      - Monitorings
      summary: List monitorings
      description: Get a list of monitorings for a customer
      parameters:
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
        description: Number of items per page (1-100, default 10)
      - name: sort_by
        in: query
        required: false
        schema:
          type: string
          enum:
          - last_execution
          - next_run
          - state
          - website
          default: last_execution
        description: 'Field to sort by (default: last_execution)'
      - name: sort_direction
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
        description: Sort order (asc or desc, default desc)
      - name: next_token
        in: query
        required: false
        schema:
          type: string
        description: Pagination token for next page
      - name: state
        in: query
        required: false
        schema:
          type: string
        description: Filter by running state
      - name: website
        in: query
        required: false
        schema:
          type: string
        description: Filter by specific website URL
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Monitoring'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '500':
          description: Internal Server Error
      security:
      - xApiKey: []
  /monitorings/bulk-create:
    post:
      tags:
      - Monitorings
      summary: Bulk create monitorings
      description: Create multiple monitorings in a single request. All websites must be unique and not already exist for the customer.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              minItems: 1
              maxItems: 200
              items:
                allOf:
                - $ref: '#/components/schemas/MonitoringRequest'
                - type: object
                  properties:
                    run_now:
                      type: boolean
                      description: If true, monitoring will be executed immediately after creation.
                    expires_at:
                      type: string
                      format: date-time
                      description: Optional expiration date for the monitoring.
      responses:
        '200':
          description: Successful bulk creation
          content:
            application/json:
              schema:
                type: object
                properties:
                  is_successful:
                    type: boolean
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Monitoring'
        '400':
          description: Validation or duplicate error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  duplicates:
                    type: array
                    items:
                      type: object
                      properties:
                        website:
                          type: string
                          description: The duplicate website URL
                        index:
                          type: integer
                          description: The index position of the duplicate item in the request array
                    description: List of duplicate website objects with their positions in the request array
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
      security:
      - xApiKey: []
  /monitorings/{id}/deactivate:
    delete:
      tags:
      - Monitorings
      summary: Deactivate a monitoring
      description: Deactivate a monitoring by ID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          example: d6e3b214-30b1-4401-a1b8-a1bd3c6a84e4
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      security:
      - xApiKey: []
components:
  schemas:
    ValidationError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorItem'
      required:
      - errors
    MonitoringAlertsListResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/MonitoringAlert'
        unacknowledged_count:
          type: integer
          description: Number of unacknowledged alerts
          example: 1
        next_token:
          type: string
          description: Pagination token for next page (null if last page)
          example: eyJjdXN0b21lcklkIjp7IlMiOiI2OWRmNWQ4MS0yYjc0LTRmNDItYTQwMS0xM2ViOTZiYTA2MTkifSwiZXhlY3V0aW9uVGltZSI6eyJTIjoiMjAyNS0wNy0zMVQxMjowMTozMC44OTFaIn19
    AcknowledgeAlertsResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Whether the operation succeeded
        message:
          type: string
          description: Success message
        unacknowledged_count:
          type: integer
          description: Number of unacknowledged alerts remaining
          nullable: true
    AcknowledgeAlertsRequest:
      type: object
      properties:
        alert_id:
          type: string
          description: ID of the alert to acknowledge
        all:
          type: boolean
          description: If true, acknowledge all alerts
      oneOf:
      - required:
        - alert_id
      - required:
        - all
      description: Either alert_id OR all must be provided, but not both
    ValidationErrorItem:
      type: object
      properties:
        path:
          type: array
          items:
            type: string
          description: JSON path to the field with the error
        message:
          type: string
          description: Error message
        code:
          type: string
          description: Error code indicating the type of error
      required:
      - path
      - message
      - code
    MonitoringAlert:
      type: object
      properties:
        id:
          type: string
          description: Unique alert identifier
          example: a1b2c3d4
        monitoring_id:
          type: string
          format: uuid
          description: Monitoring ID
          example: d6e3b214-30b1-4401-a1b8-a1bd3c6a84e4
        customer_id:
          type: string
          format: uuid
          description: Customer ID
          example: d6e3b214-30b1-4401-a1b8-a1bd3c6a84e4
        execution_result_id:
          type: string
          format: uuid
          description: Execution result ID
          example: d6e3b214-30b1-4401-a1b8-a1bd3c6a84e4
        website:
          type: string
          format: uri
          description: Website URL
          example: https://example.com
        failed_checks:
          type: array
          items:
            type: object
            properties:
              check:
                type: string
                description: Check type
                example: non_operational_website
              explanation:
                type: string
                description: Explanation of the failed check
                example: Website is not reachable
              method_used:
                type: string
                description: Method used to perform the check
                example: AI
              status:
                type: string
                description: Status of the check
                example: FAILED
          description: Failed checks
          example:
          - check: non_operational_website
            explanation: No Website Data found
            method_used: ''
            status: FAILED
        execution_time:
          type: string
          description: Execution time of the monitoring
          example: '2022-01-01T00:00:00.000Z'
        created_at:
          type: string
          description: Creation time of the alert
          example: '2022-01-01T00:00:00.000Z'
        acknowledged_at:
          type: string
          nullable: true
          description: Acknowledged time of the alert or null if not acknowledged
          example: '2025-08-01T06:12:47.905Z'
        external_id:
          type: string
          nullable: true
          description: External reference ID or null if not set
          example: '123456'
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error message
    MonitoringRequest:
      type: object
      required:
      - website
      - checks
      - frequency
      properties:
        website:
          type: string
          format: uri
          description: The website URL to monitor
          example: https://example.com
        checks:
          type: array
          minItems: 1
          uniqueItems: true
          items:
            type: string
            enum:
            - non_operational_website
            - high_risk_mcc
            - high_risk_diligent_classification
            - catalog_contain_loan_flipping_indicators
          description: Array of monitoring checks to perform
          example:
          - non_operational_website
          - high_risk_diligent_classification
        frequency:
          type: string
          enum:
          - weekly
          - every_2_weeks
          - every_3_weeks
          - every_4_weeks
          default: every_2_weeks
          description: How often to run the monitoring checks
          example: weekly
        run_now:
          type: boolean
          default: true
          description: Whether to execute the monitoring immediately after creation
        expires_at:
          type: string
          format: date-time
          description: Optional expiration date for the monitoring (defaults to 6 months from creation)
          example: '2024-12-31T23:59:59.000Z'
        skip_duplicate:
          type: boolean
          description: If an existing, active monitoring exist with the same site skip don't fail
          example: false
    Monitoring:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique monitoring identifier
          example: d6e3b214-30b1-4401-a1b8-a1bd3c6a84e4
        website:
          type: string
          format: uri
          description: The monitored website URL
          example: https://example.com
        customer_id:
          type: string
          description: Customer identifier
        checks:
          type: array
          items:
            type: string
            enum:
            - non_operational_website
            - high_risk_diligent_classification
            - catalog_contain_loan_flipping_indicators
          description: Active monitoring checks
        frequency:
          type: string
          enum:
          - weekly
          - every_2_weeks
          - every_3_weeks
          - every_4_weeks
          description: Monitoring frequency
        is_active:
          type: boolean
          description: Whether monitoring is active
        running_state:
          type: string
          enum:
          - IDLE
          - RUNNING
          - FAILED
          description: Current execution state
        next_run_at:
          type: string
          format: date-time
          description: Next scheduled execution time
        expires_at:
          type: string
          format: date-time
          description: Monitoring expiration date
        last_execution:
          type: string
          format: date-time
          nullable: true
          description: Timestamp of last execution, null if never executed
        created_at:
          type: string
          format: date-time
          description: Creation timestamp
        updated_at:
          type: string
          format: date-time
          description: Last update timestamp
        execution_results:
          type: array
          items:
            type: object
          description: Results from the latest monitoring execution
        external_id:
          type: string
          description: External identifier for this monitoring
  securitySchemes:
    xApiKey:
      type: apiKey
      name: X-API-KEY
      in: header