{
  "openapi": "3.1.0",
  "info": {
    "title": "Verify API Portal",
    "description": "Ensure your data is accurate, complete, and consistent with Precisely's Data Integrity solutions.\nOur APIs provide robust data validation, cleansing, and enrichment capabilities to help you maintain high-quality data across your organization.\n<details>\n    <summary>Error Codes</summary>\n\nAPIs will return the following error codes in case of any error:\n\n\n| Error Code                           | Description\n|--------------------------------------|-------------------------------------------------------\n| DIS-QUALITY-PIPELINES-USR-0001       | Page number must be greater than or equal to 1\n| DIS-QUALITY-PIPELINES-USR-0002       | Limit must be at least 1 and cannot exceed 100\n| DIS-QUALITY-PIPELINES-USR-0003       | Invalid pipeline id\n| DIS-QUALITY-PIPELINES-USR-0004       | Invalid pipeline run configuration id\n| DIS-QUALITY-PIPELINES-USR-0005       | Invalid job id\n| DIS-QUALITY-PIPELINES-USR-0006       | Cannot cancel pipeline job since job must be in a running state\n| DIS-QUALITY-PIPELINES-USR-1001       | Pipeline not found\n| DIS-QUALITY-PIPELINES-USR-1002       | Pipeline run configuration not found\n| DIS-QUALITY-PIPELINES-USR-1003       | Pipeline job not found\n| DIS-QUALITY-PIPELINES-USR-1004       | Sample file not found\n| DIS-QUALITY-PIPELINES-USR-1005       | Invalid pipeline run configuration type to run\n| DIS-QUALITY-PIPELINES-USR-2001       | Not authorized to perform the requested action\n| DIS-QUALITY-PIPELINES-USR-2002       | The requested resource was not found\n| DIS-QUALITY-PIPELINES-USR-2003       | Invalid or malformed request\n| DIS-QUALITY-PIPELINES-SVC-0001       | An unexpected error occurred on the server\n| DIS-QUALITY-PIPELINES-SVC-0002       | The service is currently unavailable\n| DIS-QUALITY-PIPELINES-SVC-1001       | Cannot cancel pipeline job since job status is not available\n\n<br/>\n\n| Error Code                           | Description (Rules Domain)\n|--------------------------------------|-------------------------------------------------------\n| DIS-QUALITY-RULES-USR-0001           | Page number must be greater than or equal to 1\n| DIS-QUALITY-RULES-USR-0002           | Limit must be at least 1 and cannot exceed 100\n| DIS-QUALITY-RULES-USR-0003           | Invalid rule id\n| DIS-QUALITY-RULES-USR-0004           | Invalid rule run configuration id\n| DIS-QUALITY-RULES-USR-0005           | Invalid rule job id\n| DIS-QUALITY-RULES-USR-0006           | Invalid rule request -\n| DIS-QUALITY-RULES-USR-0007           | Rule name already exists\n| DIS-QUALITY-RULES-USR-0008           | Metric group not found\n| DIS-QUALITY-RULES-USR-0009           | Rule name cannot be\n| DIS-QUALITY-RULES-SVC-0010           | Error for creating rule -\n| DIS-QUALITY-RULES-USR-1001           | Rule not found\n| DIS-QUALITY-Rule-USR-1003            | Cannot delete in progress Rule\n| DIS-QUALITY-Rule-USR-1004            | Cannot delete Default Rule\n| DIS-QUALITY-RULES-USR-2001           | Not authorized to perform the requested action\n| DIS-QUALITY-RULES-USR-2002           | The requested resource was not found\n| DIS-QUALITY-RULES-USR-2003           | Invalid or malformed request\n| DIS-QUALITY-RULES-SVC-0001           | An unexpected error occurred on the server\n| DIS-QUALITY-RULES-SVC-0002           | The service is currently unavailable\n| DIS-QUALITY-RULES-USR-3002           | Asset not found\n| DIS-QUALITY-RULES-USR-3003           | Profile not found or access limit exceeded\n| DIS-QUALITY-RULES-USR-4001           | Invalid query - (empty key)\n| DIS-QUALITY-RULES-USR-4002           | Unexpected query parameter\n| DIS-QUALITY-RULES-USR-4003           | Asset not found or not associated with rule\n\n<br/>\n\n| Error Code                           | Description (Profile Domain)\n|--------------------------------------|-------------------------------------------------------\n| DIS-QUALITY-PROFILE-USR-0001         | Page number must be greater than or equal to 1\n| DIS-QUALITY-PROFILE-USR-0002         | Limit must be at least 1 and cannot exceed 100\n| DIS-QUALITY-PROFILE-USR-0005         | Invalid profile job id\n| DIS-QUALITY-PROFILE-USR-0006         | Invalid asset id\n| DIS-QUALITY-PROFILE-USR-1001         | Profile not found\n| DIS-QUALITY-PROFILE-USR-1002         | Profile already exists\n| DIS-QUALITY-PROFILE-USR-1003         | Profile execution job not found\n| DIS-QUALITY-PROFILE-USR-1004         | Profile task state not found for given job id\n| DIS-QUALITY-PROFILE-USR-2001         | Not authorized to perform the requested action\n| DIS-QUALITY-PROFILE-USR-2002         | The requested resource was not found\n| DIS-QUALITY-PROFILE-USR-2003         | Invalid or malformed request\n| DIS-QUALITY-PROFILE-SVC-0001         | An unexpected error occurred on the server\n| DIS-QUALITY-PROFILE-SVC-0002         | The service is currently unavailable\n| DIS-QUALITY-PROFILE-USR-3002         | Asset not found\n| DIS-QUALITY-PROFILE-USR-3003         | Profile not found for asset id - %s\n| DIS-QUALITY-PROFILE-USR-3004         | Job not found\n| DIS-QUALITY-PROFILE-USR-4001         | Invalid query - (empty key)\n| DIS-QUALITY-PROFILE-USR-4002         | Unexpected query parameter - %s\n\n<br/>\n\n| Error Code                           | Description (Scores Domain)\n|--------------------------------------|-------------------------------------------------------\n| DIS-QUALITY-SCORES-USR-0001          | Page number must be greater than or equal to 1\n| DIS-QUALITY-SCORES-USR-0002          | Limit must be at least 1 and cannot exceed 100\n| DIS-QUALITY-SCORES-USR-0003          | Invalid asset id\n| DIS-QUALITY-SCORES-USR-3002          | Asset not found\n| DIS-QUALITY-SCORES-USR-2001          | Not authorized to perform the requested action\n| DIS-QUALITY-SCORES-USR-2002          | The requested resource was not found\n| DIS-QUALITY-SCORES-USR-2003          | Invalid or malformed request\n| DIS-QUALITY-SCORES-SVC-0001          | An unexpected error occurred on the server\n| DIS-QUALITY-SCORES-SVC-0002          | The service is currently unavailable\n| DIS-QUALITY-SCORES-USR-4001          | Invalid query - (empty key)\n| DIS-QUALITY-SCORES-USR-4002          | Unexpected query parameter\n\n</details>\n",
    "contact": {
      "name": "API Support",
      "url": "https://www.precisely.com",
      "email": "support@precisely.com"
    },
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.cloud.precisely.com",
      "description": "US (default)"
    },
    {
      "url": "https://api.eu1.cloud.precisely.com",
      "description": "EU"
    },
    {
      "url": "https://api.au1.cloud.precisely.com",
      "description": "AU"
    },
    {
      "url": "https://api.gb1.cloud.precisely.com",
      "description": "GB"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Quality Pipelines",
      "description": "Operations related to pipeline management and execution."
    },
    {
      "name": "Observer",
      "description": "Endpoints for Observer APIs"
    },
    {
      "name": "Quality Metric",
      "description": "Endpoints for listing metric types"
    },
    {
      "name": "Quality Scores",
      "description": "Operations related to retrieving asset quality scores, dimensions, and related metrics."
    },
    {
      "name": "Alert",
      "description": "Endpoints for Alert APIs"
    },
    {
      "name": "Quality Configuration",
      "description": "Endpoints for quality configuration management"
    },
    {
      "name": "Quality Rules",
      "description": "Operations related to rule configuration and quality rule management."
    },
    {
      "name": "Quality Validation",
      "description": "Endpoints for validating and converting conditions and expressions"
    },
    {
      "name": "Quality Profiles",
      "description": "Operations related to profiling assets, retrieving profile statistics, and managing profile jobs."
    }
  ],
  "paths": {
    "/v1/quality/rules/jobs/{jobId}": {
      "put": {
        "tags": [
          "Quality Rules"
        ],
        "summary": "Cancel a running rule job",
        "description": "Cancels a running rule job based on the provided jobId. Returns the cancellation status and error details if any.",
        "operationId": "cancelRule",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "Job ID to cancel",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
            },
            "example": "9cf1012e-157d-4819-b851-232c7000c3a3"
          }
        ],
        "requestBody": {
          "description": "Cancellation request",
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully cancelled the running rule job.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelJobStatus"
                },
                "example": {
                  "taskId": "9cf1012e-157d-4819-b851-232c7000c3a3",
                  "startDate": "2025-11-27T11:40:18.838Z",
                  "endDate": "2025-11-27T11:40:27.177Z",
                  "status": "CANCELLED",
                  "comments": [
                    "Job Cancelled"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request, provided invalid jobId to cancel the running rule job.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid jobId",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/jobs/job-123",
                  "errorCode": "DIS-QUALITY-RULES-USR-0004"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/jobs/job-123",
                  "errorCode": "DIS-QUALITY-JOB-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/profiles/jobs/{jobId}": {
      "get": {
        "tags": [
          "Quality Profiles"
        ],
        "summary": "Get profile run information of a job",
        "description": "Fetches the profile run information of a jobId.",
        "operationId": "fetchProfileRunStatus",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "Profile Job ID",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
            },
            "example": "a1b2c3d4-1234-5678-9abc-def012345678"
          }
        ],
        "responses": {
          "200": {
            "description": "Job found and details returned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileRunStatus"
                },
                "example": {
                  "taskId": "a1b2c3d4-1234-5678-9abc-def012345678",
                  "taskType": "measurement_request_task",
                  "childTaskIds": [
                    "e2f3a4b5-2345-6789-abcd-ef1234567890",
                    "b3c4d5e6-3456-789a-bcde-f23456789012",
                    "c4d5e6f7-4567-89ab-cdef-345678901234"
                  ],
                  "startDate": "2025-11-13T07:13:09.267Z",
                  "endDate": "2025-11-13T07:22:28.39Z",
                  "status": "SUCCESSFUL",
                  "comments": [],
                  "childTaskInfo": [
                    {
                      "taskId": "e2f3a4b5-2345-6789-abcd-ef1234567890",
                      "taskType": "PROFILE",
                      "parentTaskIds": [
                        "a1b2c3d4-1234-5678-9abc-def012345678"
                      ],
                      "childTaskIds": [
                        "d5e6f7a8-5678-9abc-def0-456789012345",
                        "e6f7a8b9-6789-abcd-ef01-567890123456"
                      ],
                      "startDate": "2025-11-13T07:13:09.278Z",
                      "endDate": "2025-11-13T07:22:28.359Z",
                      "status": "SUCCESSFUL",
                      "comments": []
                    },
                    {
                      "taskId": "c4d5e6f7-4567-89ab-cdef-345678901234",
                      "taskType": "pipeline_execution_task",
                      "parentTaskIds": [
                        "a1b2c3d4-1234-5678-9abc-def012345678"
                      ],
                      "startDate": "2025-11-13T07:13:09.351Z",
                      "endDate": "2025-11-13T07:22:28.343Z",
                      "status": "SUCCESSFUL"
                    },
                    {
                      "taskId": "b3c4d5e6-3456-789a-bcde-f23456789012",
                      "taskType": "schema_drift_task",
                      "parentTaskIds": [
                        "a1b2c3d4-1234-5678-9abc-def012345678"
                      ],
                      "startDate": "2025-11-13T07:13:09.39Z",
                      "endDate": "2025-11-13T07:13:09.655Z",
                      "status": "SUCCESSFUL",
                      "comments": []
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid or malformed request",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/profiles/jobs/a1b2c3d4-1234-5678-9abc-def012345678",
                  "errorCode": "DIS-QUALITY-PROFILE-USR-2003"
                }
              }
            }
          },
          "404": {
            "description": "Profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Profile execution job not found",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/profiles/jobs/a1b2c3d4-1234-5678-9abc-def012345678",
                  "errorCode": "DIS-QUALITY-PROFILE-USR-1003"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/profiles/jobs/a1b2c3d4-1234-5678-9abc-def012345678",
                  "errorCode": "DIS-QUALITY-PROFILE-SVC-0001"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Quality Profiles"
        ],
        "summary": "Cancel a running profile job",
        "description": "Cancels a running profile job based on the provided jobId. Returns the cancellation status and error details if any.",
        "operationId": "cancelProfile",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "Profile Job ID to cancel",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
            },
            "example": "9cf1012e-157d-4819-b851-232c7000c3a3"
          }
        ],
        "requestBody": {
          "description": "Cancellation request",
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully cancelled the running profile job.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelJobStatus"
                },
                "example": {
                  "taskId": "9cf1012e-157d-4819-b851-232c7000c3a3",
                  "startDate": "2025-11-27T11:40:18.838Z",
                  "endDate": "2025-11-27T11:40:27.177Z",
                  "status": "CANCELLED",
                  "comments": [
                    "Job Cancelled"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request, provided invalid jobId to cancel the running profile job.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid jobId",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/profiles/jobs/profile-job-123",
                  "errorCode": "DIS-QUALITY-PROFILES-USR-0004"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/pipelines/jobs/{jobId}": {
      "get": {
        "tags": [
          "Quality Pipelines"
        ],
        "summary": "Get pipeline job status",
        "description": "Retrieves detailed information about a specific pipeline job including status, timing, and processing metrics",
        "operationId": "getPipelineJobById",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the pipeline job to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
            },
            "example": "db93fdcb-00af-4187-80b8-58010f3d16f4"
          }
        ],
        "responses": {
          "200": {
            "description": "Pipeline job retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PipelineJobItemView"
                },
                "example": {
                  "id": "38f73530-8948-481a-8a80-7ed51ece5e58",
                  "pipelineId": "6853d5dd80b6dd07285dbd8e",
                  "pipeline": "Test_Pipeline",
                  "runConfigId": "6853d69880b6dd07285dbd8f",
                  "runConfigName": "Test_Run_Config",
                  "sourceAssetTypePath": "[Host].[Database].[Schema].[Table]",
                  "sourceAssetNamePath": "[TestSource].[catalog].[dq].[input]",
                  "targetAssetTypePath": null,
                  "targetAssetNamePath": null,
                  "startTime": 1753859968635,
                  "endTime": 1753860182094,
                  "duration": 213459,
                  "recordsProcessed": 100,
                  "status": "SUCCESSFUL",
                  "user": "test@abc.com",
                  "externalUrl": "https://external-url.com",
                  "externalId": "1027355645833034",
                  "comment": "",
                  "counts": [
                    {
                      "name": "[TestSource].[catalog].[dq].[input]",
                      "type": "input",
                      "count": 50
                    },
                    {
                      "name": "[TestSource].[catalog].[dq].[input]",
                      "type": "input",
                      "count": 50
                    }
                  ],
                  "targetAssets": [
                    {
                      "assetTypePath": "[Host].[Database].[Schema].[Table]",
                      "assetNamePath": "[TestSource].[catalog].[dq].[output]",
                      "label": "Output"
                    }
                  ],
                  "sourceAssets": [
                    {
                      "assetTypePath": "[Host].[Database].[Schema].[Table]",
                      "assetNamePath": "[TestSource].[catalog].[dq].[input]",
                      "label": "Input"
                    }
                  ],
                  "isScheduled": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid job id",
                  "instance": "/v1/quality/pipelines/jobs/db93fdcb-00af-4187-80b8-58010f3d16f4",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-0005"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Forbidden",
                  "status": 403,
                  "detail": "Not authorized to perform the requested action",
                  "instance": "/v1/quality/pipelines/jobs/db93fdcb-00af-4187-80b8-58010f3d16f4",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-2001"
                }
              }
            }
          },
          "404": {
            "description": "Pipeline job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Pipeline job not found",
                  "instance": "/v1/quality/pipelines/jobs/db93fdcb-00af-4187-80b8-58010f3d16f4",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-1003"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "/v1/quality/pipelines/jobs/db93fdcb-00af-4187-80b8-58010f3d16f4",
                  "errorCode": "DIS-QUALITY-PIPELINES-SVC-0001"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Quality Pipelines"
        ],
        "summary": "Stop a pipeline",
        "description": "Cancels a running or queued pipeline job execution",
        "operationId": "cancelPipelineJob",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the pipeline job to cancel",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
            },
            "example": "db93fdcb-00af-4187-80b8-58010f3d16f4"
          }
        ],
        "requestBody": {
          "description": "Pipeline job cancellation request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PipelineJobCancelRequest"
              },
              "example": {
                "status": "CANCELLED"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Pipeline job cancelled successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PipelineJobCancelResponse"
                },
                "example": {
                  "jobId": "db93fdcb-00af-4187-80b8-58010f3d16f4",
                  "status": "CANCELLED",
                  "message": "Pipeline job has been successfully cancelled"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid job id",
                  "instance": "/v1/quality/pipelines/jobs/db93fdcb-00af-4187-80b8-58010f3d16f4",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-0005"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Forbidden",
                  "status": 403,
                  "detail": "Not authorized to perform the requested action",
                  "instance": "/v1/quality/pipelines/jobs/db93fdcb-00af-4187-80b8-58010f3d16f4",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-2001"
                }
              }
            }
          },
          "404": {
            "description": "Pipeline job not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Pipeline job not found",
                  "instance": "/v1/quality/pipelines/jobs/db93fdcb-00af-4187-80b8-58010f3d16f4",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-1003"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "/v1/quality/pipelines/jobs/db93fdcb-00af-4187-80b8-58010f3d16f4",
                  "errorCode": "DIS-QUALITY-PIPELINES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/configuration/failed-record-storage": {
      "put": {
        "tags": [
          "Quality Configuration"
        ],
        "summary": "Create or update failed record storage configuration",
        "description": "Creates a new failed-record storage configuration when no matching source connection exists. Updates the existing configuration when the same source connection is already mapped to an asset, deleting and rebuilding the source relation as part of the update. Before create/update, target connection compatibility is validated for the provided source connection. The name is auto-generated as FailedRecordLogTable_{sourceConnectionId}.",
        "operationId": "upsertFailedRecordStorage",
        "requestBody": {
          "description": "Failed record storage configuration payload.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FailedRecordStorageConfigurationRequest"
              },
              "example": {
                "sourceConnectionId": "6a0c302df75b947d1b53c621",
                "targetConnectionId": "6a16ae776fc4de102f21131a",
                "targetAssetNamePath": "[databricks_dnd].[hive_metastore].[automation_schemadrift].[FAILED_RECORDS_OUTPUT]",
                "targetAssetTypePath": "[Host].[Database].[Schema].[Table]"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Configuration created or updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FailedRecordStorageConfigurationResponse"
                },
                "example": {
                  "status": "SUCCESS"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request body",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Target connection is not compatible with the source connection",
                  "instance": "/v1/quality/configuration/failed-record-storage",
                  "errorCode": "DIS-QUALITY-CONFIG-USR-2002"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Forbidden",
                  "status": 403,
                  "detail": "Not authorized to perform the requested action",
                  "instance": "/v1/quality/configuration/failed-record-storage",
                  "errorCode": "DIS-QUALITY-CONFIG-USR-2001"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "/v1/quality/configuration/failed-record-storage",
                  "errorCode": "DIS-QUALITY-CONFIG-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/observers/{id}": {
      "get": {
        "tags": [
          "Observer"
        ],
        "summary": "Get observer by ID",
        "description": "Returns a single observer definition by its unique ID.",
        "operationId": "findById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Observer ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Observer found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObserverResponse"
                },
                "example": {
                  "id": "6829a1c3e4b0f12345abcdef",
                  "name": "daily-freshness-check",
                  "description": "Monitors freshness of ingested data",
                  "status": "ACTIVE",
                  "createdDate": "2026-05-01T10:00:00.000Z",
                  "lastModifiedDate": "2026-06-01T12:30:00.000Z"
                }
              }
            }
          },
          "404": {
            "description": "Observer not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObserverResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Observer"
        ],
        "summary": "Update observer definition",
        "description": "Updates an existing observer definition with the supplied configuration.",
        "operationId": "update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Observer ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ObserverUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Observer updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObserverResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request body",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Observer not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObserverResponse"
                }
              }
            }
          },
          "409": {
            "description": "An observer already exists for this asset",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Observer"
        ],
        "summary": "Delete observer definition",
        "description": "Deletes an observer definition by its unique ID.",
        "operationId": "delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Observer ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Observer deleted successfully"
          },
          "404": {
            "description": "Observer not found"
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/quality/samples/{sampleName}": {
      "get": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "Download a sample file",
        "description": "Downloads the raw file content for a named sample.",
        "operationId": "downloadSampleV2",
        "parameters": [
          {
            "name": "sampleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 255,
              "minLength": 0,
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          },
          {
            "name": "assetTypePath",
            "in": "query",
            "description": "Optional asset type path; defaults to \"[File]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetNamePath",
            "in": "query",
            "description": "Optional asset name path; defaults to \"[sampleName]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "File downloaded successfully",
            "content": {
              "application/octet-stream": {}
            }
          },
          "404": {
            "description": "Sample not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "Upload a sample file",
        "description": "Persists raw delimited file content as a named sample for a given asset. Returns the created SampleFileModel with field metadata and row count.",
        "operationId": "uploadSampleV2",
        "parameters": [
          {
            "name": "sampleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 255,
              "minLength": 0,
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          },
          {
            "name": "assetTypePath",
            "in": "query",
            "description": "Optional asset type path; defaults to \"[File]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetNamePath",
            "in": "query",
            "description": "Optional asset name path; defaults to \"[sampleName]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "CSV or delimited file to upload"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Sample successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SampleFileView"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "Delete a sample file",
        "description": "Deletes a named sample.",
        "operationId": "deleteSampleV2",
        "parameters": [
          {
            "name": "sampleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 255,
              "minLength": 0,
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          },
          {
            "name": "assetTypePath",
            "in": "query",
            "description": "Optional asset type path; defaults to \"[File]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetNamePath",
            "in": "query",
            "description": "Optional asset name path; defaults to \"[sampleName]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Sample deleted successfully"
          },
          "404": {
            "description": "Sample not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v2/quality/samples/profile/{sampleName}": {
      "post": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "Profile a sample",
        "description": "Runs a profiling pipeline against a named sample for a given asset. Returns execution results containing inspection data.",
        "operationId": "profileSampleV2",
        "parameters": [
          {
            "name": "sampleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 255,
              "minLength": 0,
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          },
          {
            "name": "maxRows",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "assetTypePath",
            "in": "query",
            "description": "Optional asset type path; defaults to \"[File]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetNamePath",
            "in": "query",
            "description": "Optional asset name path; defaults to \"[sampleName]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Profile execution results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v2/quality/samples/evaluate/{sampleName}": {
      "post": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "Evaluate a sample against pipeline rules",
        "description": "Runs a 4-step evaluation pipeline (inputSegment → evaluateExpressionOperator → aggregationOperator → outputSegment) against a named sample for the given asset. Returns rule evaluation execution results.",
        "operationId": "evaluateSampleV2",
        "parameters": [
          {
            "name": "sampleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 255,
              "minLength": 0,
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          },
          {
            "name": "maxRows",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "assetTypePath",
            "in": "query",
            "description": "Optional asset type path; defaults to \"[File]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetNamePath",
            "in": "query",
            "description": "Optional asset name path; defaults to \"[sampleName]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Evaluate execution results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters or missing pipelineId",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v2/quality/samples/analyze/{sampleName}": {
      "post": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "Analyze a sample",
        "description": "Runs an analysis pipeline against a named sample for a given asset. The pipeline profiles the data and, where the sample contains address, email, or phone columns, enriches it with verified/parsed output columns. By default, returns both the profile and the enriched rows; pass includeOutput=false to build a simpler linear pipeline that returns only the profile. Optionally compose the sample with an existing pipeline by providing a pipelineId; the sample will be run through that pipeline first before analysis, if its input schema matches the sample's schema.",
        "operationId": "analyzeSampleV2",
        "parameters": [
          {
            "name": "sampleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 255,
              "minLength": 0,
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          },
          {
            "name": "maxRows",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "assetTypePath",
            "in": "query",
            "description": "Optional asset type path; defaults to \"[File]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetNamePath",
            "in": "query",
            "description": "Optional asset name path; defaults to \"[sampleName]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pipelineId",
            "in": "query",
            "description": "Optional id of an existing pipeline to run the sample through before analysis; the pipeline's declared input schema must match the sample's schema",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            }
          },
          {
            "name": "includeOutput",
            "in": "query",
            "description": "Optional flag controlling whether the full output (enriched rows) is returned; defaults to true. When true, the pipeline is built with a broadcaster that returns both the profile and the enriched rows. When false, the pipeline is built as a simpler linear pipeline that only returns the profile.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "maxColumns",
            "in": "query",
            "description": "Optional maximum number of columns the sample may have for analysis; defaults to 50 if not provided",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "exclusiveMinimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Analyze execution results",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalyzeSampleResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v2/quality/profiles/jobs": {
      "post": {
        "tags": [
          "Quality Profiles"
        ],
        "summary": "Create a V2 profile job",
        "description": "Creates a profile job with an explicit profile type (BASIC or ADVANCED). The profile definition asset is resolved internally from the catalog based on the profileType. Provide either assetIds (list) or assetGroupId — not both.",
        "operationId": "createProfileJobV2",
        "requestBody": {
          "description": "V2 profile job request — provide profileType plus either assetIds or assetGroupId",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProfileJobV2Request"
              },
              "examples": {
                "Asset IDs": {
                  "description": "Asset IDs",
                  "value": {
                    "assetIds": [
                      "asset_id1",
                      "asset_id2"
                    ],
                    "profileType": "Basic/Advanced",
                    "name": "Customer_Profile_Assessment"
                  }
                },
                "Asset Group": {
                  "description": "Asset Group",
                  "value": {
                    "assetGroupId": "asset_group_id",
                    "profileType": "Basic/Advanced",
                    "name": "Group_Profile_Assessment"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Profile job created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                },
                "example": {
                  "jobId": "123e4567-e89b-12d3-a456-426614174000"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request — missing or invalid profileType, or bad assetIds / assetGroupId",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "examples": {
                  "Missing profileType": {
                    "description": "Missing profileType",
                    "value": {
                      "type": "about:blank",
                      "title": "Bad Request",
                      "status": 400,
                      "detail": "profileType is required",
                      "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v2/quality/profiles/jobs",
                      "errorCode": "DIS-QUALITY-PROFILE-USR-0010"
                    }
                  },
                  "Invalid profileType": {
                    "description": "Invalid profileType",
                    "value": {
                      "type": "about:blank",
                      "title": "Bad Request",
                      "status": 400,
                      "detail": "Invalid profileType, must be BASIC or ADVANCED",
                      "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v2/quality/profiles/jobs",
                      "errorCode": "DIS-QUALITY-PROFILE-USR-0009"
                    }
                  },
                  "Ambiguous target selection": {
                    "description": "Ambiguous target selection",
                    "value": {
                      "type": "about:blank",
                      "title": "Bad Request",
                      "status": 400,
                      "detail": "Provide either assetIds or assetGroupId",
                      "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v2/quality/profiles/jobs",
                      "errorCode": "DIS-QUALITY-PROFILE-USR-0007"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Profile definition asset not found for the given profileType",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Profile definition asset not found for type: Basic",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v2/quality/profiles/jobs",
                  "errorCode": "DIS-QUALITY-PROFILE-USR-1005"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v2/quality/profiles/jobs",
                  "errorCode": "DIS-QUALITY-PROFILE-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/validate/condition": {
      "post": {
        "tags": [
          "Quality Validation"
        ],
        "summary": "Validate condition and convert to expression",
        "description": "Accepts a plain-English condition text and validates whether it can be converted into a structured expression. Returns validExpression as true with the converted expression when the condition is valid, otherwise returns false with error details describing why the condition is invalid. This endpoint is read-only and does not modify any resources.",
        "operationId": "validateCondition",
        "requestBody": {
          "description": "Condition validation payload.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateConditionRequest"
              },
              "example": {
                "condition": "Value IS NOT NULL"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Validation completed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidateConditionResponse"
                },
                "examples": {
                  "Valid condition": {
                    "description": "Valid condition",
                    "value": {
                      "condition": "Value IS NOT NULL",
                      "validExpression": true,
                      "expression": "{\"type\":\"basic\",\"config\":{\"SimpleExpression\":{\"operator\":\"IS NOT NULL\",\"left\":{\"Column\":{\"columnName\":\"Value\"}}}}}"
                    }
                  },
                  "Invalid condition": {
                    "description": "Invalid condition",
                    "value": {
                      "condition": "some random text",
                      "validExpression": false,
                      "errors": [
                        "Unable to parse the provided condition into a valid expression. Ensure it follows a supported format such as '<FieldName> IS NOT NULL' or '<FieldName> IS NULL'."
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request payload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Condition is required and must not be blank",
                  "instance": "/v1/quality/validate/condition",
                  "errorCode": "DIS-QUALITY-EXPRESSION-USR-0001"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "/v1/quality/validate/condition",
                  "errorCode": "DIS-QUALITY-EXPRESSION-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/semantics/jobs": {
      "post": {
        "tags": [
          "Quality Profiles"
        ],
        "summary": "Create a job for semantic assessment",
        "description": "Creates a job for semantic assessment of the specified asset. Returns a job response with a unique job identifier.",
        "operationId": "createJobForSemanticRun",
        "requestBody": {
          "description": "Job request payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SemanticJobRequest"
              },
              "examples": {
                "Asset Ids": {
                  "description": "Asset Ids",
                  "value": {
                    "assetIds": [
                      "asset_id1",
                      "asset_id2"
                    ],
                    "name": "Customer_Semantic_Assessment"
                  }
                },
                "Asset Group": {
                  "description": "Asset Group",
                  "value": {
                    "assetGroupId": "asset_group_id",
                    "name": "Group_Semantic_Assessment"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Semantic assessment job created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                },
                "example": {
                  "jobId": "123e4567-e89b-12d3-a456-426614174000"
                }
              }
            }
          },
          "400": {
            "description": "Invalid job request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid job request",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/semantics/jobs",
                  "errorCode": "DIS-QUALITY-JOB-USR-0001"
                }
              }
            }
          },
          "404": {
            "description": "Metric type or asset not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Asset not found for given ID",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/semantics/jobs",
                  "errorCode": "DIS-QUALITY-JOB-USR-0002"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/semantics/jobs",
                  "errorCode": "DIS-QUALITY-JOB-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/samples/{sampleName}": {
      "get": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "Get sample details",
        "description": "Retrieves details for a specific sample by name.",
        "operationId": "getSampleV1",
        "parameters": [
          {
            "name": "sampleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sample details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SampleFileView"
                }
              }
            }
          },
          "404": {
            "description": "Sample not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "deprecated": true
      },
      "post": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "Upload a sample file",
        "description": "Persists raw delimited file content as a named sample for a given asset. Returns the created SampleFileModel with field metadata and row count.",
        "operationId": "uploadSampleV1",
        "parameters": [
          {
            "name": "sampleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "CSV or delimited file to upload"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Sample successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SampleFileView"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/quality/samples/profile/{sampleName}": {
      "post": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "Profile a sample",
        "description": "Runs a profiling pipeline against a named sample for a given asset. Returns execution results containing inspection data.",
        "operationId": "profileSampleV1",
        "parameters": [
          {
            "name": "sampleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxRows",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Profile execution results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/quality/samples/evaluate/{sampleName}": {
      "post": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "Evaluate a sample against pipeline rules",
        "description": "Runs a 4-step evaluation pipeline (inputSegment → evaluateExpressionOperator → aggregationOperator → outputSegment) against a named sample for the given asset. Returns rule evaluation execution results.",
        "operationId": "evaluateSampleV1",
        "parameters": [
          {
            "name": "sampleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxRows",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Evaluate execution results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters or missing pipelineId",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/quality/rules": {
      "get": {
        "tags": [
          "Quality Rules"
        ],
        "summary": "List all rules or filter by asset ID",
        "description": "Returns a paginated list of rule summaries. Optionally filters by asset ID if provided. Each summary includes key configuration and execution status.",
        "operationId": "listRules",
        "parameters": [
          {
            "name": "assetId",
            "in": "query",
            "description": "Asset ID to filter rules",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "68c289f1c78ac464af9a3fd0"
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Filter expressions in DSL format (fieldName:operator(value)). Supported filters: name:ct(<value>) or name:eq(<value>), ruleType:eq(Expression|Sql), enableAutoRun:eq(true|false)",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "example": "name:ct(Completeness)"
              }
            }
          },
          {
            "name": "scoreClass",
            "in": "query",
            "description": "Score class to filter rules",
            "required": false,
            "schema": {
              "type": "string",
              "default": "Quality",
              "description": "Score class a rule belongs to.",
              "enum": [
                "Quality",
                "Governance"
              ],
              "example": "Quality"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items per page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 100,
              "minimum": 1
            },
            "example": 10
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of rules returned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageView"
                },
                "example": {
                  "items": [
                    {
                      "id": "691ac85f91748d99a7db9a0c",
                      "name": "null1",
                      "description": "null",
                      "primaryMetricTypeId": "691ac85f96db0d33d60c5b51",
                      "enableAutoRun": false,
                      "targetAssetCount": 1,
                      "runStatus": {
                        "correlationId": "6ee12eee-42e9-4e8e-849c-c0fc0ea6bb8d",
                        "state": "Success",
                        "lastRunAt": "2025-11-24T11:44:14.140Z"
                      },
                      "targetAssetGroups": [
                        "691ac85fc73a235990285e05"
                      ],
                      "dimensionId": "66ac9fe6091f80486b23249e",
                      "dimensionName": "Accuracy"
                    }
                  ],
                  "pageSize": 10,
                  "currentPage": 1,
                  "totalItems": 2,
                  "totalPages": 1
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Page number must be greater than or equal to 1",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules",
                  "errorCode": "DIS-QUALITY-RULES-USR-0001"
                }
              }
            }
          },
          "404": {
            "description": "No rules found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "No rules found for the given criteria",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules",
                  "errorCode": "DIS-QUALITY-RULES-USR-0004"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules",
                  "errorCode": "DIS-QUALITY-RULES-SVC-0001"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Quality Rules"
        ],
        "summary": "Create a new quality rule",
        "description": "Creates a new quality rule with the provided details.",
        "operationId": "createRule",
        "requestBody": {
          "description": "Rule creation payload.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuleRequestCreateView"
              },
              "example": {
                "name": "rule_name",
                "description": "rule_description",
                "dimensionName": "dimension_name",
                "targetAssetsFilter": [
                  "properties.CatalogType:eq(Field)&filter=id:eq(asset_id)"
                ],
                "mappings": [
                  {
                    "datasetId": "dataset_id",
                    "columnMapping": [
                      {
                        "columnName": "column_name",
                        "dataType": "string",
                        "alias": "column_alias",
                        "targetField": "column_name"
                      }
                    ]
                  }
                ],
                "captureFailedRecords": true,
                "enableAutoRun": true,
                "targetingType": "Field",
                "passCondition": {
                  "type": "script",
                  "config": "condition_expression"
                },
                "filterCondition": {
                  "type": "script",
                  "config": "filter_expression"
                },
                "scoreBands": [
                  {
                    "label": "Poor",
                    "color": "red",
                    "minimumValue": 0
                  },
                  {
                    "label": "Average",
                    "color": "orange",
                    "minimumValue": 0.8
                  },
                  {
                    "label": "Good",
                    "color": "green",
                    "minimumValue": 0.9
                  }
                ],
                "customProperties": [
                  {
                    "name": "custom_property_name",
                    "value": "custom_property_value"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Rule created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "693eed89aa5bb52e34cc61dd"
                    }
                  }
                },
                "example": {
                  "id": "693eed89aa5bb52e34cc61dd"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request payload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid rule request - Rule must have a name present",
                  "instance": "/v1/quality/rules",
                  "errorCode": "DIS-QUALITY-RULES-USR-0006"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "/v1/quality/rules",
                  "errorCode": "DIS-QUALITY-RULES-SVC-0001"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Quality Rules"
        ],
        "summary": "Update a quality rule",
        "description": "Updates an existing quality rule with the provided details. Returns a status message.",
        "operationId": "updateRule",
        "requestBody": {
          "description": "Rule update payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuleRequestUpdateView"
              },
              "example": {
                "id": "rule_id",
                "name": "rule_name",
                "description": "rule_description",
                "dimensionName": "dimension_name",
                "passCondition": {
                  "type": "script",
                  "config": "condition_expression"
                },
                "captureFailedRecords": true,
                "enableAutoRun": true,
                "targetingType": "Dataset",
                "targetAssetsFilter": [
                  "properties.CatalogType:eq(Dataset)&filter=id:eq(asset_id)"
                ],
                "mappings": [
                  {
                    "datasetId": "dataset_id",
                    "columnMapping": [
                      {
                        "columnName": "column_name",
                        "dataType": "string",
                        "alias": "column_alias"
                      }
                    ]
                  }
                ],
                "scoreBands": [
                  {
                    "label": "Poor",
                    "color": "red",
                    "minimumValue": 0
                  },
                  {
                    "label": "Average",
                    "color": "orange",
                    "minimumValue": 0.8
                  },
                  {
                    "label": "Good",
                    "color": "green",
                    "minimumValue": 0.9
                  }
                ],
                "customProperties": [
                  {
                    "name": "custom_property_name",
                    "value": "custom_property_value"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Rule updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "694b9c09fdf9159bd458aaa1"
                    }
                  }
                },
                "example": {
                  "id": "694b9c09fdf9159bd458aaa1"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request payload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Rule must have an id present for update",
                  "instance": "/v1/quality/rules",
                  "errorCode": "DIS-QUALITY-Rule-USR-1005"
                }
              }
            }
          },
          "404": {
            "description": "Rule not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Rule not found",
                  "instance": "/v1/quality/rules",
                  "errorCode": "DIS-QUALITY-Rule-USR-1001"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "/v1/quality/rules",
                  "errorCode": "DIS-QUALITY-RULES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/rules/{ruleId}/jobs": {
      "get": {
        "tags": [
          "Quality Rules"
        ],
        "summary": "Get rule execution status by ID",
        "description": "Fetches the rule execution status along with asset information",
        "operationId": "fetchRuleExecutionStatus",
        "parameters": [
          {
            "name": "ruleId",
            "in": "path",
            "description": "ID of the rule to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "6929364c4e818705c17e7cd3"
          },
          {
            "name": "assetId",
            "in": "query",
            "description": "Asset ID",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "68c289f1c78ac464af9a3fd0"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items per page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 100,
              "minimum": 1
            },
            "example": 10
          }
        ],
        "responses": {
          "200": {
            "description": "Rule found and execution status returned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RuleExecutionStatus"
                },
                "example": {
                  "id": "6944e5800e3000e0588d3659",
                  "primaryMetricTypeId": "6944e5800e3000e0588d3656",
                  "name": "8229_Dataset_1",
                  "runStatus": {
                    "correlationId": "893087b0-3e3e-4630-93bd-bd1f9c3a3491",
                    "state": "Success",
                    "lastRunAt": "2025-12-19T05:48:05.909Z"
                  },
                  "errorDetails": [],
                  "ruleAssetView": {
                    "items": [
                      {
                        "assetName": "customer_info",
                        "assetPath": "Databricks_Automationdb > kt_metastore > test_freshness > customer_info",
                        "assetId": "6944e48e749df0beee68331b",
                        "parentAssetId": "6944e48e749df0beee683319",
                        "score": 0,
                        "passCount": 0,
                        "totalCount": 3,
                        "failCount": 0,
                        "evaluateCount": 0,
                        "capturedFailedRecords": true,
                        "isSampleAvailable": false,
                        "catalogType": "Dataset",
                        "lastRunAt": "2025-12-19T05:48:00.311Z",
                        "scoreBands": {
                          "label": "Poor",
                          "color": "red",
                          "minimumValue": 0
                        }
                      }
                    ],
                    "totalPages": 1,
                    "totalItems": 1,
                    "currentPage": 1,
                    "pageSize": 10
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid or malformed request",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b/jobs",
                  "errorCode": "DIS-QUALITY-RULES-USR-2003"
                }
              }
            }
          },
          "404": {
            "description": "Rule not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Rule not found for given ID",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b/jobs",
                  "errorCode": "DIS-QUALITY-RULES-USR-0003"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b/jobs",
                  "errorCode": "DIS-QUALITY-RULES-SVC-0001"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Quality Rules"
        ],
        "summary": "Create a job for a rule",
        "description": "Creates a job for the specified rule ID. The asset ID is optional. Returns a job response with a unique job identifier.",
        "operationId": "createJobForRule",
        "parameters": [
          {
            "name": "ruleId",
            "in": "path",
            "description": "ID of the rule on which job need to be trigger",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "6929364c4e818705c17e7cd3"
          }
        ],
        "requestBody": {
          "description": "Job request payload.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobRequest"
              },
              "example": {
                "assetId": "asset_id",
                "name": "Custom_Job_Name"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Job created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                },
                "example": {
                  "jobId": "123e4567-e89b-12d3-a456-426614174000"
                }
              }
            }
          },
          "400": {
            "description": "Invalid job request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid job request",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b/jobs",
                  "errorCode": "DIS-QUALITY-JOB-USR-0001"
                }
              }
            }
          },
          "404": {
            "description": "Rule not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Rule not found for given ID",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b/jobs",
                  "errorCode": "DIS-QUALITY-JOB-USR-0002"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b/jobs",
                  "errorCode": "DIS-QUALITY-JOB-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/profiles/jobs": {
      "post": {
        "tags": [
          "Quality Profiles"
        ],
        "summary": "Create a job for a profile",
        "description": "Creates a job for the specified profile. Returns a job response with a unique job identifier.",
        "operationId": "createJobForProfile",
        "requestBody": {
          "description": "Job request payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobRequest"
              },
              "example": {
                "assetId": "asset_id",
                "name": "Custom_Job_Name"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Job created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResponse"
                },
                "example": {
                  "jobId": "123e4567-e89b-12d3-a456-426614174000"
                }
              }
            }
          },
          "400": {
            "description": "Invalid job request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid job request",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/profiles/jobs",
                  "errorCode": "DIS-QUALITY-JOB-USR-0001"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/profiles/jobs",
                  "errorCode": "DIS-QUALITY-JOB-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/pipelines/jobs": {
      "get": {
        "tags": [
          "Quality Pipelines"
        ],
        "summary": "List pipeline jobs",
        "description": "Retrieves a paginated list of all pipeline job executions with their current status and metadata",
        "operationId": "listPipelineJobs",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items per page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 100,
              "minimum": 1
            },
            "example": 10
          }
        ],
        "responses": {
          "200": {
            "description": "Pipeline jobs retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageView"
                },
                "example": {
                  "items": [
                    {
                      "id": "38f73530-8948-481a-8a80-7ed51ece5e58",
                      "pipelineId": "6853d5dd80b6dd07285dbd8e",
                      "pipeline": "Test_Pipeline",
                      "runConfigId": "6853d69880b6dd07285dbd8f",
                      "runConfigName": "Test_Run_Config",
                      "sourceAssetTypePath": "[Host].[Database].[Schema].[Table]",
                      "sourceAssetNamePath": "[TestSource].[catalog].[dq].[input]",
                      "targetAssetTypePath": null,
                      "targetAssetNamePath": null,
                      "startTime": 1753859968635,
                      "endTime": 1753860182094,
                      "duration": 213459,
                      "recordsProcessed": 100,
                      "status": "SUCCESSFUL",
                      "user": "test@abc.com",
                      "externalUrl": "https://external-url.com",
                      "externalId": "1027355645833034",
                      "comment": "",
                      "counts": [
                        {
                          "name": "[TestSource].[catalog].[dq].[input]",
                          "type": "input",
                          "count": 50
                        },
                        {
                          "name": "[TestSource].[catalog].[dq].[input]",
                          "type": "input",
                          "count": 50
                        }
                      ],
                      "targetAssets": [
                        {
                          "assetTypePath": "[Host].[Database].[Schema].[Table]",
                          "assetNamePath": "[TestSource].[catalog].[dq].[output]",
                          "label": "Output"
                        }
                      ],
                      "sourceAssets": [
                        {
                          "assetTypePath": "[Host].[Database].[Schema].[Table]",
                          "assetNamePath": "[TestSource].[catalog].[dq].[input]",
                          "label": "Input"
                        }
                      ],
                      "isScheduled": false
                    }
                  ],
                  "pageSize": 10,
                  "currentPage": 1,
                  "totalItems": 1,
                  "totalPages": 1
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Page number must be greater than or equal to 1",
                  "instance": "/v1/quality/pipelines/jobs",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-0001"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Forbidden",
                  "status": 403,
                  "detail": "Not authorized to perform the requested action",
                  "instance": "/v1/quality/pipelines/jobs",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-2001"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "/v1/quality/pipelines/jobs",
                  "errorCode": "DIS-QUALITY-PIPELINES-SVC-0001"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Quality Pipelines"
        ],
        "summary": "Start a pipeline",
        "description": "Creates and starts a new data quality pipeline job with the specified pipeline and run configuration",
        "operationId": "createPipelineJob",
        "requestBody": {
          "description": "Pipeline job creation request containing run configuration ID",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PipelineJobCreateRequest"
              },
              "example": {
                "runConfigId": "689db618617b4bd63438e56d"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Pipeline job created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PipelineJobCreateResponse"
                },
                "example": {
                  "jobId": "db93fdcb-00af-4187-80b8-58010f3d16f4"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "instance": "/v1/quality/pipelines/jobs",
                  "errors": {
                    "runConfigId": [
                      "DIS-QUALITY-PIPELINES-USR-0004:Invalid pipeline run configuration id"
                    ]
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Forbidden",
                  "status": 403,
                  "detail": "Not authorized to perform the requested action",
                  "instance": "/v1/quality/pipelines/jobs",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-2001"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "/v1/quality/pipelines/jobs",
                  "errorCode": "DIS-QUALITY-PIPELINES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/observers": {
      "get": {
        "tags": [
          "Observer"
        ],
        "summary": "List observer definitions",
        "description": "Returns a paginated list of observer definitions with optional filtering by name, type, status, and asset group.",
        "operationId": "list",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "Filter by observer name",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Filter by evaluation type (NUMERIC, TEMPORAL, STRUCTURAL)",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "NUMERIC",
                "TEMPORAL",
                "STRUCTURAL"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by observer status",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ACTIVE",
                "INACTIVE",
                "PAUSED"
              ]
            }
          },
          {
            "name": "assetIds",
            "in": "query",
            "description": "Filter by asset IDs",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "assetGroups",
            "in": "query",
            "description": "Filter by asset group IDs",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "Filter by observation tags",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "observationKind",
            "in": "query",
            "description": "Filter by observation kind (e.g. VOLUME, RULE, SCORE, FRESHNESS, SCHEMA_DRIFT)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number (1-based)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items per page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            },
            "example": 20
          },
          {
            "name": "ascending",
            "in": "query",
            "description": "Sort direction — true for ascending",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true
            },
            "example": true
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "Field to sort by",
            "required": false,
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of observers returned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObserverPageView"
                },
                "example": {
                  "items": [
                    {
                      "id": "6829a1c3e4b0f12345abcdef",
                      "name": "daily-freshness-check",
                      "description": "Monitors freshness of ingested data",
                      "status": "ACTIVE",
                      "createdDate": "2026-05-01T10:00:00.000Z",
                      "lastModifiedDate": "2026-06-01T12:30:00.000Z"
                    }
                  ],
                  "totalPages": 1,
                  "totalItems": 1,
                  "currentPage": 1,
                  "pageSize": 20
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Observer"
        ],
        "summary": "Create observer definition",
        "description": "Creates a new observer definition with the supplied configuration.",
        "operationId": "create",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ObserverRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Observer created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObserverResponse"
                },
                "example": {
                  "id": "6829a1c3e4b0f12345abcdef",
                  "name": "daily-freshness-check",
                  "description": "Monitors freshness of ingested data",
                  "status": "ACTIVE",
                  "createdDate": "2026-06-03T10:00:00.000Z",
                  "lastModifiedDate": "2026-06-03T10:00:00.000Z"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request body",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "The targeted asset or asset group does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409": {
            "description": "An observer already exists for this asset",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v1/observers/metric-values/{metricValueId}/exclude": {
      "post": {
        "tags": [
          "Observer"
        ],
        "summary": "Exclude a metric value",
        "description": "Adds the EXCLUDE tag to the specified metric instance in the scoring service.",
        "operationId": "exclude",
        "parameters": [
          {
            "name": "metricValueId",
            "in": "path",
            "description": "The scoring-service metric instance ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Metric value excluded successfully"
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Metric value not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v1/observers/{id}/status": {
      "patch": {
        "tags": [
          "Observer"
        ],
        "summary": "Patch observer status",
        "description": "Updates only the lifecycle status of an existing observer.",
        "operationId": "patchStatus",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Observer ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ObserverPatchStatusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Observer status updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObserverResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid status value",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Observer not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObserverResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v1/alerts/{id}/state": {
      "patch": {
        "tags": [
          "Alert"
        ],
        "summary": "Update alert state",
        "description": "Updates the lifecycle state of an alert, optionally recording a comment. A dismiss reason is required when closing an alert.",
        "operationId": "patchState",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique alert ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AlertPatchStateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Alert state updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AlertResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid state transition or missing dismiss reason",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404": {
            "description": "Alert not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v2/quality/scores/{assetId}": {
      "get": {
        "tags": [
          "Quality Scores"
        ],
        "summary": "Get quality scores for an asset (latest / history)",
        "description": "Returns paginated quality scores for a single asset. **Latest mode** (no date params): returns the single most recent score record, sorted by effectiveDate DESC. **History mode** (fromDate provided): returns all records within the date range, sorted by effectiveDate ASC. Optional **dimensionId** narrows results to a specific quality dimension.",
        "operationId": "getScoresV2",
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "description": "assetId to fetch asset quality scores",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "68c289f1c78ac464af9a3fd0"
          },
          {
            "name": "dimensionId",
            "in": "query",
            "description": "Dimension Id to narrow results to a specific quality dimension.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "00000000a00aa0001aaa0a1a"
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "Start of the requested date range, inclusive (yyyy-MM-dd). Omit for latest mode.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2024-01-01"
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "End of the requested date range, inclusive (yyyy-MM-dd). Defaults to today when only fromDate is provided.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2024-03-31"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number (default: 1).",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results per page, 1–100 (default: 10).",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 100,
              "minimum": 1
            },
            "example": 10
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved asset quality scores.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScoresQueryResponseView"
                },
                "example": {
                  "items": [
                    {
                      "assetId": "68c289f1c78ac464af9a3fd0",
                      "dimensionId": "00000000a00aa0001aaa0a1a",
                      "score": 88.5,
                      "scoreBand": [
                        {
                          "label": "Excellent",
                          "color": "#2ECC71",
                          "minimumValue": 80
                        },
                        {
                          "label": "Good",
                          "color": "#F39C12",
                          "minimumValue": 60
                        },
                        {
                          "label": "Poor",
                          "color": "#E74C3C",
                          "minimumValue": 0
                        }
                      ],
                      "effectiveDate": "2024-03-01"
                    }
                  ],
                  "totalItems": 1,
                  "totalPages": 1,
                  "currentPage": 1,
                  "pageSize": 10
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters — MISSING_REQUIRED_FILTER | INVALID_FILTER_VALUE | INVALID_DATE_RANGE | INVALID_DATE_FORMAT | INVALID_PAGINATION",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid or malformed request",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v2/quality/scores/68c289f1c78ac464af9a3fd0",
                  "errorCode": "DIS-QUALITY-SCORES-USR-0001"
                }
              }
            }
          },
          "404": {
            "description": "Asset not found for the given ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Asset not found for the given ID",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v2/quality/scores/68c289f1c78ac464af9a3fd0",
                  "errorCode": "DIS-QUALITY-SCORES-USR-0003"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v2/quality/scores/68c289f1c78ac464af9a3fd0",
                  "errorCode": "DIS-QUALITY-SCORES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v2/quality/samples": {
      "get": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "List samples",
        "description": "Returns samples, optionally filtered and paginated.\n\nFiltering behavior:\nThe 'tags' parameter performs an exact match against one or more tags.\nThe 'sampleName' parameter performs an exact match on the sample name.\nThe 'searchKey' parameter performs a case-insensitive partial match against both the sample name and the asset name path, and cannot be combined with the other filter parameters (tags, sampleName, assetTypePath, assetNamePath, sampleType).\nThe 'assetTypePath' parameter performs an exact match on the asset type path.\nThe 'assetNamePath' parameter performs an exact match on the full asset name path.\nThe 'sampleType' parameter performs an exact match on the sample type (e.g. \"uploaded\" or \"generated\").",
        "operationId": "listSamplesV2",
        "parameters": [
          {
            "name": "tags",
            "in": "query",
            "description": "Optional set of tags to filter by (exact match)",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "uniqueItems": true
            }
          },
          {
            "name": "sampleName",
            "in": "query",
            "description": "Optional sample name to filter by (exact match)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "searchKey",
            "in": "query",
            "description": "Optional case-insensitive partial match against sample name and asset name path; cannot be combined with other filters",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetTypePath",
            "in": "query",
            "description": "Optional asset type path to filter by (exact match)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetNamePath",
            "in": "query",
            "description": "Optional asset name path to filter by (exact match)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sampleType",
            "in": "query",
            "description": "Optional sample type to filter by (exact match), e.g. \"uploaded\" or \"generated\"",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index; defaults to 0",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Page size; defaults to 20",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ascending",
            "in": "query",
            "description": "Sort direction; defaults to true (ascending)",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "Field to sort by; defaults to \"name\"",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of sample summaries",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SampleSummary"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid filter combination (e.g. searchKey combined with other filters)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v2/quality/samples/{sampleName}/metadata": {
      "get": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "Get sample details",
        "description": "Retrieves details for a specific sample by name.",
        "operationId": "getSampleV2",
        "parameters": [
          {
            "name": "sampleName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 255,
              "minLength": 0,
              "pattern": "^[A-Za-z0-9_-]+$"
            }
          },
          {
            "name": "assetTypePath",
            "in": "query",
            "description": "Optional asset type path; defaults to \"[File]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetNamePath",
            "in": "query",
            "description": "Optional asset name path; defaults to \"[sampleName]\" if not provided",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sample details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SampleFileView"
                }
              }
            }
          },
          "404": {
            "description": "Sample not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v2/quality/rules/{ruleId}/results": {
      "get": {
        "tags": [
          "Quality Rules"
        ],
        "summary": "List rule asset results (latest / history)",
        "description": "Returns paginated quality rule execution results for a single asset and rule. **Latest mode** (no date params): returns the most recent result per metric type, sorted by effectiveDate DESC. **History mode** (fromDate provided): returns all results within the date range, sorted by effectiveDate ASC.",
        "operationId": "getRuleResultsV2",
        "parameters": [
          {
            "name": "ruleId",
            "in": "path",
            "description": "Rule Id of the rule to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "6929364c4e818705c17e7cd3"
          },
          {
            "name": "assetId",
            "in": "query",
            "description": "Asset Id",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "68c289f1c78ac464af9a3fd0"
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "Start of the requested date range, inclusive (yyyy-MM-dd). Omit for latest mode.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2024-01-01"
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "End of the requested date range, inclusive (yyyy-MM-dd). Defaults to today when fromDate is provided.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2024-03-31"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results per page, 1–100 (default: 10).",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 100,
              "minimum": 1
            },
            "example": 10
          }
        ],
        "responses": {
          "200": {
            "description": "Rule results page returned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RuleResultsQueryResponseView"
                },
                "example": {
                  "items": [
                    {
                      "assetId": "68c289f1c78ac464af9a3fd0",
                      "ruleId": "507f1f77bcf86cd799439011",
                      "score": 92.5,
                      "passCount": 925,
                      "failCount": 75,
                      "evaluateCount": 1000,
                      "totalCount": 1000,
                      "scoreBand": [
                        {
                          "label": "Excellent",
                          "color": "#2ECC71",
                          "minimumValue": 80
                        },
                        {
                          "label": "Good",
                          "color": "#F39C12",
                          "minimumValue": 60
                        },
                        {
                          "label": "Poor",
                          "color": "#E74C3C",
                          "minimumValue": 0
                        }
                      ],
                      "effectiveDate": "2024-03-01"
                    }
                  ],
                  "totalItems": 1,
                  "totalPages": 1,
                  "currentPage": 1,
                  "pageSize": 10
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters — MISSING_REQUIRED_FILTER | INVALID_FILTER_VALUE | INVALID_DATE_RANGE | INVALID_DATE_FORMAT | INVALID_PAGINATION | UNSUPPORTED_ASSET_SCOPE",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid or malformed request",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v2/quality/rules/689d9917437bd1d494d6b/results",
                  "errorCode": "DIS-QUALITY-RULES-USR-0001"
                }
              }
            }
          },
          "404": {
            "description": "Rule or asset not found for given ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Rule or asset not found for given ID",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v2/quality/rules/689d9917437bd1d494d6b/results",
                  "errorCode": "DIS-QUALITY-RULES-USR-0003"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v2/quality/rules/689d9917437bd1d494d6b/results",
                  "errorCode": "DIS-QUALITY-RULES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/scores/{assetId}": {
      "get": {
        "tags": [
          "Quality Scores"
        ],
        "summary": "Get quality scores for an asset",
        "description": "Returns the quality scores for the specified asset, including dimension scores, band information, and paging metadata.",
        "operationId": "fetchAssetQualityScores",
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "description": "assetId to fetch asset quality scores",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "68c289f1c78ac464af9a3fd0"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items per dimension",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "maximum": 100,
              "minimum": 1
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved asset quality scores.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetQualityScoreView"
                },
                "example": {
                  "assetView": {
                    "assetId": "68c289f1c78ac464af9a3fd0",
                    "assetName": "AA",
                    "assetType": "[Host].[Database].[Schema].[Table]",
                    "assetPath": "syncsort_partner.us-east-1.snowflakecomputing.com > SMS > AUTOMATION > AA",
                    "assetTypeId": "660fc5da53199ad437e3c986",
                    "parentId": "67e51dc26a9d069e143d2530",
                    "parentName": "AUTOMATION",
                    "catalogType": "Dataset",
                    "leaf": false
                  },
                  "dimensionScores": {
                    "aggregatedScore": 0.5,
                    "scoreBands": {
                      "label": "Poor",
                      "color": "Red",
                      "minimumValue": 0
                    },
                    "dimensions": [
                      {
                        "id": "66ac9fe6091f80486b23249e",
                        "name": "Accuracy",
                        "targets": 3,
                        "score": 0,
                        "scoreBands": {
                          "label": "Poor",
                          "color": "Red",
                          "minimumValue": 0
                        },
                        "lastRunAt": "2025-11-26T06:27:21.509Z",
                        "childQualityScores": {
                          "assetScores": {
                            "totalPages": 2,
                            "totalItems": 2,
                            "currentPage": 1,
                            "pageSize": 1,
                            "items": [
                              {
                                "id": "68c289f1c78ac464af9a3fd1",
                                "name": "FIRSTNAME",
                                "score": 0,
                                "description": "Field score",
                                "lastRunAt": "2025-11-26T06:27:20.503Z",
                                "scoreBands": {
                                  "label": "Poor",
                                  "color": "Red",
                                  "minimumValue": 0
                                }
                              }
                            ]
                          },
                          "ruleScores": [
                            {
                              "id": "691ac85f91748d99a7db9a0c",
                              "name": "null1",
                              "score": 0,
                              "description": "Rule for accuracy validation",
                              "lastRunAt": "2025-11-24T11:44:14.109Z",
                              "scoreBands": {
                                "label": "Poor",
                                "color": "red",
                                "minimumValue": 0
                              }
                            }
                          ]
                        }
                      },
                      {
                        "id": "66ac9fe6091f80486b23249c",
                        "name": "Completeness",
                        "targets": 2,
                        "score": 1,
                        "scoreBands": {
                          "label": "Good",
                          "color": "Green",
                          "minimumValue": 0.9
                        },
                        "lastRunAt": "2025-12-12T05:25:58.968Z",
                        "childQualityScores": {
                          "assetScores": {
                            "totalPages": 2,
                            "totalItems": 2,
                            "currentPage": 1,
                            "pageSize": 1,
                            "items": [
                              {
                                "id": "68c289f1c78ac464af9a3fd1",
                                "name": "FIRSTNAME",
                                "score": 1,
                                "description": "Field score",
                                "lastRunAt": "2025-12-12T05:25:57.949Z",
                                "scoreBands": {
                                  "label": "Good",
                                  "color": "Green",
                                  "minimumValue": 0.9
                                }
                              }
                            ]
                          },
                          "ruleScores": []
                        }
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. The asset ID or parameters are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid asset ID or malformed request",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/scores/68c289f1c78ac464af9a3fd1",
                  "errorCode": "DIS-QUALITY-SCORES-USR-0001"
                }
              }
            }
          },
          "404": {
            "description": "Asset not found for the given ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Asset not found for the given ID",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/scores/68c289f1c78ac464af9a3fd1",
                  "errorCode": "DIS-QUALITY-SCORES-USR-0003"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/scores/68c289f1c78ac464af9a3fd1",
                  "errorCode": "DIS-QUALITY-SCORES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/samples": {
      "get": {
        "tags": [
          "Quality Samples"
        ],
        "summary": "List samples",
        "description": "Returns all samples stored under the default asset type.",
        "operationId": "listSamplesV1",
        "responses": {
          "200": {
            "description": "List of sample summaries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SampleSummary"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/v1/quality/rules/{ruleId}": {
      "get": {
        "tags": [
          "Quality Rules"
        ],
        "summary": "Get rule by ID",
        "description": "Retrieves a rule and its configuration details by ID. Provides scoring bands, metric group info and last run status if available.",
        "operationId": "getRuleById",
        "parameters": [
          {
            "name": "ruleId",
            "in": "path",
            "description": "ID of the rule to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "6929364c4e818705c17e7cd3"
          }
        ],
        "responses": {
          "200": {
            "description": "Rule found and returned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RuleView"
                },
                "example": {
                  "id": "6929364c4e818705c17e7cd3",
                  "primaryMetricTypeId": "6929364c75b6770472abda72",
                  "supportingMetricTypeIds": [
                    "6929364c75b6770472abda73",
                    "66d1fec93824ef1a04ee6633"
                  ],
                  "name": "SIT_03",
                  "description": "null",
                  "captureFailedRecords": true,
                  "enableAutoRun": true,
                  "targetAssetGroups": [
                    "6929364c6003e42ec3c6eb14"
                  ],
                  "mappings": [
                    {
                      "metricTypeId": "69ba4fbb9907c70f0d257123",
                      "metricMappings": [
                        {
                          "datasetId": "694e8ab58b75478e5dc9a090",
                          "columnMapping": [
                            {
                              "columnName": "CUSTOMERID",
                              "alias": "CUSTOMERID",
                              "dataType": "integer"
                            },
                            {
                              "columnName": "DATEOFBIRTH",
                              "alias": "DATEOFBIRTH",
                              "dataType": "date"
                            }
                          ]
                        }
                      ]
                    }
                  ],
                  "runStatus": {
                    "correlationId": "",
                    "state": "NotRun",
                    "lastRunAt": "2025-11-28T05:42:36.150Z"
                  },
                  "targetAssetCount": 1,
                  "passCondition": "FIRSTNAME is populated.",
                  "filterCondition": null,
                  "createdBy": "qa_douser_dev11@precisely.testinator.com",
                  "createdDate": "2025-11-28T05:42:36.150Z",
                  "lastModifiedBy": "qa_douser_dev11@precisely.testinator.com",
                  "lastModifiedDate": "2025-12-10T07:17:52.456Z",
                  "script": true,
                  "dimensionId": "66ac9fe6091f80486b23249c",
                  "dimensionName": "Completeness",
                  "scoreBands": [
                    {
                      "label": "Poor",
                      "color": "red",
                      "minimumValue": 0
                    },
                    {
                      "label": "Average",
                      "color": "orange",
                      "minimumValue": 0.8
                    },
                    {
                      "label": "Good",
                      "color": "green",
                      "minimumValue": 0.9
                    }
                  ],
                  "customProperties": [
                    {
                      "name": "custom_property_name",
                      "value": "custom_property_value"
                    }
                  ],
                  "reconciliationStrategy": null
                }
              }
            }
          },
          "400": {
            "description": "Invalid rule ID supplied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid rule id",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b",
                  "errorCode": "DIS-QUALITY-RULES-USR-0003"
                }
              }
            }
          },
          "404": {
            "description": "Rule not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Rule not found",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b",
                  "errorCode": "DIS-QUALITY-Rule-USR-1001"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b",
                  "errorCode": "DIS-QUALITY-RULES-SVC-0001"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Quality Rules"
        ],
        "summary": "Delete a rule by ID",
        "description": "Deletes a rule by given ID. Returns 200 OK on successful deletion.",
        "operationId": "deleteRule",
        "parameters": [
          {
            "name": "ruleId",
            "in": "path",
            "description": "Rule ID to delete",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "6929364c4e818705c17e7cd3"
          }
        ],
        "responses": {
          "200": {
            "description": "Rule deleted successfully",
            "content": {
              "application/json": {
                "example": {
                  "message": "Rule with ID 694b9990fdf9159bd458a99d has been successfully deleted.",
                  "status": "Success"
                }
              }
            }
          },
          "400": {
            "description": "Invalid rule ID supplied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid rule id",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b",
                  "errorCode": "DIS-QUALITY-RULES-USR-0003"
                }
              }
            }
          },
          "404": {
            "description": "Rule not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Rule not found",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/6896504109f058870fa824bb",
                  "errorCode": "DIS-QUALITY-Rule-USR-1001"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b",
                  "errorCode": "DIS-QUALITY-RULES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/rules/{ruleId}/results": {
      "get": {
        "tags": [
          "Quality Rules"
        ],
        "summary": "List rule asset results",
        "description": "Returns a paginated list of asset-level scoring results for the given rule. Includes score, band, pass/fail counts and paging metadata.",
        "operationId": "getRuleResults",
        "parameters": [
          {
            "name": "ruleId",
            "in": "path",
            "description": "ID of the rule to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "6929364c4e818705c17e7cd3"
          },
          {
            "name": "assetId",
            "in": "query",
            "description": "asset ID to filter results",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "68c289f1c78ac464af9a3fd0"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items per page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "maximum": 100,
              "minimum": 1
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Rule results page returned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageView"
                },
                "example": {
                  "items": [
                    {
                      "assetName": "order_id",
                      "assetPath": "Databricks_Automationdb > kt_metastore > test_freshness > customer_info > order_id",
                      "assetId": "6944e48e749df0beee683324",
                      "parentAssetId": "6944e48e749df0beee68331b",
                      "score": 0,
                      "passCount": 0,
                      "totalCount": 3,
                      "failCount": 0,
                      "evaluateCount": 0,
                      "capturedFailedRecords": true,
                      "isSampleAvailable": false,
                      "catalogType": "Field",
                      "lastRunAt": "2025-12-19T05:48:28.666Z",
                      "scoreBands": {
                        "label": "Poor",
                        "color": "red",
                        "minimumValue": 0
                      }
                    }
                  ],
                  "totalPages": 1,
                  "totalItems": 1,
                  "currentPage": 1,
                  "pageSize": 1
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Page number must be greater than or equal to 1 or invalid rule/asset id.",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b/results",
                  "errorCode": "DIS-QUALITY-RULES-USR-0001"
                }
              }
            }
          },
          "404": {
            "description": "Rule not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Rule or asset not found for given ID",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b/results",
                  "errorCode": "DIS-QUALITY-RULES-USR-0003"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/rules/689d9917437bd1d494d6b/results",
                  "errorCode": "DIS-QUALITY-RULES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/profiles": {
      "get": {
        "tags": [
          "Quality Profiles"
        ],
        "summary": "Get profile of an asset by ID",
        "description": "Fetches the profile and summary for the given assetId.",
        "operationId": "fetchProfileAsset",
        "parameters": [
          {
            "name": "assetId",
            "in": "query",
            "description": "Asset ID",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "68c289f1c78ac464af9a3fd0"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items per page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 100,
              "minimum": 1
            },
            "example": 10
          }
        ],
        "responses": {
          "200": {
            "description": "Profile found and details returned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileAssetView"
                },
                "example": {
                  "assetId": "68c289f1c78ac464af9a3fd0",
                  "createdDate": "2025-12-23T07:58:20.618Z",
                  "profileType": "Full",
                  "profileIdentifier": "8a8a29db9b48abd9019b4a371301011c",
                  "sampleCount": 38,
                  "blankCount": 0,
                  "nullCount": 0,
                  "matchCount": 38,
                  "outlierDetail": [],
                  "possibleKey": false,
                  "bottomK": [],
                  "topK": [
                    "Fanechka",
                    "Northrup"
                  ],
                  "cardinalityDetail": [
                    {
                      "key": "Fanechka",
                      "count": 2
                    },
                    {
                      "key": "Northrup",
                      "count": 2
                    }
                  ],
                  "shapesDetail": [],
                  "percentileStatistics": [],
                  "totalCount": 38,
                  "popularityCount": 99,
                  "isAuthorizedForPopularity": true,
                  "fieldView": {
                    "items": [
                      {
                        "id": "68c289f1c78ac464af9a3fd1",
                        "fieldName": "FIRSTNAME",
                        "dataType": "String",
                        "popularity": 54,
                        "nullCount": 0,
                        "blankCount": 0,
                        "distinctValues": 19,
                        "semanticType": "NAME.FIRST",
                        "minimumValue": "-",
                        "maximumValue": "-",
                        "validCount": 38,
                        "invalidCount": 0,
                        "outlierCount": 0,
                        "sampleCount": 38,
                        "maxLength": "9",
                        "minLength": "4"
                      },
                      {
                        "id": "68c289f1c78ac464af9a3fd2",
                        "fieldName": "LASTNAME",
                        "dataType": "String",
                        "popularity": 55,
                        "nullCount": 0,
                        "blankCount": 0,
                        "distinctValues": 19,
                        "semanticType": "NAME.LAST",
                        "minimumValue": "-",
                        "maximumValue": "-",
                        "validCount": 38,
                        "invalidCount": 0,
                        "outlierCount": 0,
                        "sampleCount": 38,
                        "maxLength": "9",
                        "minLength": "4"
                      }
                    ],
                    "totalPages": 1,
                    "totalItems": 2,
                    "currentPage": 1,
                    "pageSize": 10
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid or malformed request",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/profiles?assetId=68c289f1c78ac464af9a3fd1&page=1&limit=10",
                  "errorCode": "DIS-QUALITY-RULES-USR-2003"
                }
              }
            }
          },
          "404": {
            "description": "Profile not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Profile not found for given ID",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/profiles?assetId=68c289f1c78ac464af9a3fd8?page=1&limit=10",
                  "errorCode": "DIS-QUALITY-RULES-USR-3002"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "https://verify-api-portal-dev.dqcore.cloud.precisely.services/v1/quality/profiles?assetId=68c289f1c78ac464af9a3fd1?page=1&limit=10",
                  "errorCode": "DIS-QUALITY-RULES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/pipelines": {
      "get": {
        "tags": [
          "Quality Pipelines"
        ],
        "summary": "List available pipelines",
        "description": "Retrieves a paginated list of pipelines",
        "operationId": "listPipelines",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items per page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 100,
              "minimum": 1
            },
            "example": 10
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Filter expression.\nSyntax: field:op(val)\nFilterable fields: createdBy, modifiedBy\nOperators:\n  eq - equals\n  ne - not equals\n  in - in the comma-separated list of values\n  ni - not in the comma-separated list of values\n  ct - contains\n  sw - starts with\n  ew - ends with\nExamples:\nfilter=createdBy:eq(example@precisely.testinator.com)\nfilter=modifiedBy:in(alice@precisely.testinator.com,bob@precisely.testinator.com)\nfilter=createdBy:eq(alice@precisely.testinator.com):1&modifiedBy:eq(bob@precisely.testinator.com):2\nClauses are AND-ed by default; use a trailing ':group' index to OR groups together.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of pipelines retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageView"
                },
                "example": {
                  "items": [
                    {
                      "id": "67e259257f3a733215481765",
                      "name": "Test_Pipeline_Name",
                      "sourceAssetTypePath": "[Host].[Database].[Schema].[Table]",
                      "sourceAssetNamePath": "[TestSource].[test_catalog].[dq].[test_table]",
                      "createdBy": "abc@precisely.com",
                      "createdDate": "2025-08-21T04:24:20.356Z",
                      "lastModifiedBy": "abc@precisely.com",
                      "lastModifiedDate": "2025-08-21T04:24:20.356Z",
                      "error": false,
                      "validationStatus": true,
                      "inputStepCount": 1
                    }
                  ],
                  "pageSize": 10,
                  "currentPage": 1,
                  "totalItems": 1,
                  "totalPages": 1
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Page number must be greater than or equal to 1",
                  "instance": "/v1/quality/pipelines",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-0001"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Forbidden",
                  "status": 403,
                  "detail": "Not authorized to perform the requested action",
                  "instance": "/v1/quality/pipelines",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-2001"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "/v1/quality/pipelines",
                  "errorCode": "DIS-QUALITY-PIPELINES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/pipelines/{pipelineId}/run-configs": {
      "get": {
        "tags": [
          "Quality Pipelines"
        ],
        "summary": "List available run configurations for a pipeline",
        "description": "Retrieves a paginated list of run configurations associated with a specific pipeline ID.",
        "operationId": "listPipelineRunConfigsByPipelineId",
        "parameters": [
          {
            "name": "pipelineId",
            "in": "path",
            "description": "Unique identifier of the pipeline to retrieve run configurations for",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Unique identifier of the pipeline to retrieve run configurations for",
              "example": "67e259257f3a733215481765",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "67e259257f3a733215481765"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items per page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 100,
              "minimum": 1
            },
            "example": 10
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the list of run configs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageView"
                },
                "example": {
                  "items": [
                    {
                      "id": "67e259e809286e440e2851d9",
                      "name": "Test_Run_Config_Name",
                      "scheduled": false,
                      "compatibilityStatus": true,
                      "type": "Batch",
                      "published": false,
                      "lastModifiedBy": "test@precisely.com",
                      "lastModifiedDate": "2025-03-25T07:23:20.209Z"
                    }
                  ],
                  "pageSize": 10,
                  "currentPage": 1,
                  "totalItems": 1,
                  "totalPages": 1
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid pipeline id",
                  "instance": "/v1/quality/pipelines/{pipelineId}/run-configs",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-0003"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Forbidden",
                  "status": 403,
                  "detail": "Not authorized to perform the requested action",
                  "instance": "/v1/quality/pipelines/{pipelineId}/run-configs",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-2001"
                }
              }
            }
          },
          "404": {
            "description": "Pipeline not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Pipeline not found",
                  "instance": "/v1/quality/pipelines/{pipelineId}/run-configs",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-1001"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "/v1/quality/pipelines/{pipelineId}/run-configs",
                  "errorCode": "DIS-QUALITY-PIPELINES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/pipelines/{pipelineId}/run-configs/{runConfigId}": {
      "get": {
        "tags": [
          "Quality Pipelines"
        ],
        "summary": "Get details of a run configuration",
        "description": "Retrieves detailed information about a specific run configuration for a pipeline, including its connection and engine details.",
        "operationId": "getRunConfigDetailsById",
        "parameters": [
          {
            "name": "pipelineId",
            "in": "path",
            "description": "Unique identifier of the pipeline to execute",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Unique identifier of the pipeline to execute",
              "example": "67e259257f3a733215481765",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "67e259257f3a733215481765"
          },
          {
            "name": "runConfigId",
            "in": "path",
            "description": "Unique identifier of the run configuration to use for the pipeline job",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Unique identifier of the run configuration to use for the pipeline job",
              "example": "689db618617b4bd63438e56d",
              "pattern": "^[0-9a-fA-F]{24}$"
            },
            "example": "689db618617b4bd63438e56d"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the run configuration details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                },
                "example": "{\"pipelineRunConfig\":{\"id\":\"689db618617b4bd63438e56d\",\"name\":\"Test_Run_Config_Name\",\"connectionId\":\"67f39924ba2eee6be1aa968a\",\"sourceAssetNamePath\":\"[Source_Datasource].[dq].[dbo].[test_dataset]\",\"sourceAssetTypePath\":\"[Host].[Database].[Schema].[Table]\",\"targetAssetNamePath\":null,\"targetAssetTypePath\":null,\"overwriteTarget\":false,\"dropTarget\":false,\"pipelineEngineId\":\"67f39a36c13a892caca36f80\",\"targetAssets\":{\"32e52518-532d-0de1-83dd-c20a52da6d8e\":{\"connectionId\":\"67f39924ba2eee6be1aa968a\",\"assetNamePath\":\"[Target_Datasource].[dq].[dbo].[output]\",\"assetTypePath\":\"[Host].[Database].[Schema].[Table]\",\"overwriteTarget\":true,\"dropTarget\":true}},\"sourceAssets\":{\"initialInput\":{\"connectionId\":\"67f39924ba2eee6be1aa968a\",\"assetNamePath\":\"[Source_Datasource].[dq].[dbo].[test_dataset]\",\"assetTypePath\":\"[Host].[Database].[Schema].[Table]\"}},\"scheduleConfiguration\":null,\"compatibilityStatus\":true,\"published\":false,\"type\":\"Batch\",\"serviceIdentifierUrl\":null,\"description\":null,\"lastModifiedBy\":null,\"lastModifiedDate\":null},\"connection\":{\"id\":\"67f39924ba2eee6be1aa968a\",\"name\":\"Source_Datasource_SQLServer_Connection\",\"type\":\"Mssql\",\"displayName\":\"SQLServer_Connection\",\"exists\":false,\"datasourceName\":\"\"},\"pipelineEngine\":{\"id\":\"67f39a36c13a892caca36f80\",\"name\":\"PipelineEngine_Agent\",\"type\":\"\",\"connectionId\":\"\",\"agentVirtualId\":\"\",\"properties\":{\"sparkDriverMemory\":\"1g\",\"sparkExecutorInstances\":\"1\",\"sparkExecutorMemory\":\"3g\",\"sparkExecutorCores\":\"3\"}}}"
              }
            }
          },
          "400": {
            "description": "Invalid pipeline or run configuration ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Bad Request",
                  "status": 400,
                  "detail": "Invalid pipeline run configuration id",
                  "instance": "/v1/quality/pipelines/{pipelineId}/run-configs/{runConfigId}",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-0004"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Forbidden",
                  "status": 403,
                  "detail": "Not authorized to perform the requested action",
                  "instance": "/v1/quality/pipelines/{pipelineId}/run-configs/{runConfigId}",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-2001"
                }
              }
            }
          },
          "404": {
            "description": "Pipeline or run configuration not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Not Found",
                  "status": 404,
                  "detail": "Pipeline run configuration not found",
                  "instance": "/v1/quality/pipelines/{pipelineId}/run-configs/{runConfigId}",
                  "errorCode": "DIS-QUALITY-PIPELINES-USR-1002"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                },
                "example": {
                  "type": "about:blank",
                  "title": "Internal Server Error",
                  "status": 500,
                  "detail": "An unexpected error occurred on the server",
                  "instance": "/v1/quality/pipelines/{pipelineId}/run-configs/{runConfigId}",
                  "errorCode": "DIS-QUALITY-PIPELINES-SVC-0001"
                }
              }
            }
          }
        }
      }
    },
    "/v1/quality/metric-types": {
      "get": {
        "tags": [
          "Quality Metric"
        ],
        "summary": "List metric types",
        "description": "Returns a paginated list of metric types. Routing is feature-flag driven: when the measurement feature flag is enabled the call is delegated to the Measurement Service; otherwise the Scoring Service is used. Supports filtering and sorting.",
        "operationId": "getMetricTypes",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "description": "Filter expression. Repeat the parameter for multiple filters, e.g. ?filter=name:ct(passCount)&filter=state:eq(Active)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "Sort field expression (e.g. name)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number (0-based)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items per page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 100
            },
            "example": 10
          },
          {
            "name": "ascending",
            "in": "query",
            "description": "Sort direction — true for ascending",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of metric types returned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageView"
                },
                "example": {
                  "items": [
                    {
                      "id": "6929364c75b6770472abda72",
                      "name": "passCountPercentage",
                      "description": "Pass count percentage metric for Completeness_Rule_01",
                      "valueType": "PERCENTAGE",
                      "overridability": "All",
                      "state": "Active",
                      "testConfiguration": {
                        "engine": "DIS",
                        "type": "MetricBasedConfig",
                        "entrySource": "AutoGenerated",
                        "conditions": [
                          "passCount / totalCount"
                        ]
                      }
                    }
                  ],
                  "totalPages": 1,
                  "totalItems": 1,
                  "currentPage": 0,
                  "pageSize": 10
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v1/observers/types": {
      "get": {
        "tags": [
          "Observer"
        ],
        "summary": "List supported observation types",
        "description": "Returns the list of all supported observation types with their allowed alerting modes.",
        "operationId": "listTypes",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Page number (1-based)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items per page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            },
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of observation types returned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObservationTypePageView"
                },
                "example": {
                  "items": [
                    {
                      "observationType": "FRESHNESS",
                      "description": "Monitors data freshness",
                      "allowedAlertingModes": [
                        "THRESHOLD_ONLY",
                        "CONFIDENCE_ONLY",
                        "HYBRID"
                      ]
                    }
                  ],
                  "totalPages": 1,
                  "totalItems": 1,
                  "currentPage": 1,
                  "pageSize": 20
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        }
      }
    },
    "/v1/alerts": {
      "get": {
        "tags": [
          "Alert"
        ],
        "summary": "Query alerts",
        "description": "Returns a paginated list of alerts filtered by observer, observation type, asset, metric value, and date range.",
        "operationId": "list_1",
        "parameters": [
          {
            "name": "alertId",
            "in": "query",
            "description": "Filter by alert ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "observerId",
            "in": "query",
            "description": "Filter by observer ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evaluationType",
            "in": "query",
            "description": "Filter by evaluation type",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "NUMERIC",
                "TEMPORAL",
                "STRUCTURAL"
              ]
            }
          },
          {
            "name": "observationKind",
            "in": "query",
            "description": "Filter by observation kind",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "Filter by observation tags",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "assetId",
            "in": "query",
            "description": "Filter by asset ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "metricValueId",
            "in": "query",
            "description": "Filter by metric value ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "Filter to alerts at or after this timestamp (ISO-8601)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "Filter to alerts at or before this timestamp (ISO-8601)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeHistory",
            "in": "query",
            "description": "Whether to include the alert's history events in the response (only applies when alertId is provided)",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number (1-based)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "minimum": 1
            },
            "example": 1
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items per page",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            },
            "example": 20
          },
          {
            "name": "ascending",
            "in": "query",
            "description": "Sort direction — true for ascending",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true
            },
            "example": true
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "Field to sort by",
            "required": false,
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated list of alerts returned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AlertPageView"
                },
                "example": {
                  "items": [
                    {
                      "id": "683ef1a2e4b0a98765fedcba",
                      "observerId": "6829a1c3e4b0f12345abcdef",
                      "observationType": "FRESHNESS",
                      "assetId": "asset-001",
                      "severity": "CRITICAL",
                      "state": "OPEN",
                      "metricTypeId": "metric-type-001",
                      "metricValueId": "metric-value-001",
                      "timestamp": "2026-06-03T14:30:00.000Z",
                      "createdBy": "system",
                      "createdDate": "2026-06-03T14:30:00.000Z",
                      "lastModifiedBy": "jane.doe",
                      "lastModifiedDate": "2026-06-03T15:00:00.000Z"
                    }
                  ],
                  "totalPages": 1,
                  "totalItems": 1,
                  "currentPage": 1,
                  "pageSize": 20
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AlertConfig": {
        "type": "object",
        "description": "Configuration that controls how observer alerts and warnings are evaluated",
        "properties": {
          "alertLogic": {
            "type": "string",
            "enum": [
              "AND",
              "OR"
            ]
          },
          "alertingMode": {
            "type": "string",
            "enum": [
              "HYBRID",
              "CONFIDENCE_ONLY",
              "THRESHOLD_ONLY"
            ]
          },
          "ciAlertPercent": {
            "type": "integer",
            "format": "int32"
          },
          "ciWarnPercent": {
            "type": "integer",
            "format": "int32"
          },
          "comparisonMethod": {
            "type": "string",
            "enum": [
              "LAST_VALUE",
              "MOVING_AVERAGE"
            ]
          },
          "sensitivity": {
            "type": "integer",
            "format": "int32"
          },
          "thresholdAlertValue": {
            "type": "number",
            "format": "double"
          },
          "thresholdDuringLearning": {
            "type": "boolean"
          },
          "thresholdType": {
            "type": "string",
            "enum": [
              "PERCENT",
              "RELATIVE",
              "ABSOLUTE"
            ]
          },
          "thresholdWarnValue": {
            "type": "number",
            "format": "double"
          },
          "trainingWindow": {
            "$ref": "#/components/schemas/TrainingWindow"
          },
          "warnEnabled": {
            "type": "boolean"
          },
          "warnLogic": {
            "type": "string",
            "enum": [
              "AND",
              "OR"
            ]
          }
        }
      },
      "AlertCreatedDetailView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AlertHistoryDetailView"
          },
          {
            "type": "object",
            "properties": {
              "evaluationType": {
                "type": "string"
              },
              "initialState": {
                "type": "string"
              },
              "observationKind": {
                "type": "string"
              },
              "severity": {
                "type": "string"
              }
            }
          }
        ],
        "description": "Details for the ALERT_CREATED event — a snapshot of the alert at the moment it was first raised"
      },
      "AlertDetail": {
        "type": "object",
        "description": "Detailed alert evaluation data returned with an observer alert",
        "properties": {
          "alertTimestamp": {
            "type": "string",
            "format": "date-time"
          },
          "bandSnapshot": {
            "$ref": "#/components/schemas/BandSnapshot"
          },
          "evaluations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AlertItemView"
            }
          },
          "metricTimestamp": {
            "type": "string",
            "format": "date-time"
          },
          "observerId": {
            "type": "string"
          },
          "tenantId": {
            "type": "string"
          }
        }
      },
      "AlertHistoryDetailView": {
        "description": "Event details for an alert history entry; the concrete shape depends on the entry's eventType"
      },
      "AlertHistoryView": {
        "type": "object",
        "description": "A single chronological event recorded against an alert (created, state change, comment, assignment, or value exclusion)",
        "properties": {
          "alertId": {
            "type": "string"
          },
          "createdBy": {
            "type": "string"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "details": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AlertCreatedDetailView"
              },
              {
                "$ref": "#/components/schemas/AssignedDetailView"
              },
              {
                "$ref": "#/components/schemas/CommentAddedDetailView"
              },
              {
                "$ref": "#/components/schemas/StateChangedDetailView"
              },
              {
                "$ref": "#/components/schemas/ValueExcludedDetailView"
              }
            ]
          },
          "eventType": {
            "type": "string",
            "enum": [
              "ALERT_CREATED",
              "STATE_CHANGED",
              "COMMENT_ADDED",
              "ASSIGNED",
              "VALUE_EXCLUDED"
            ]
          },
          "id": {
            "type": "string"
          }
        }
      },
      "AlertItemView": {
        "type": "object",
        "description": "Single evaluation item included in observer alert details",
        "properties": {
          "confidenceMetrics": {
            "type": "array",
            "items": {}
          },
          "configType": {
            "type": "string"
          },
          "currentValue": {
            "type": "number",
            "format": "double"
          },
          "direction": {
            "type": "string"
          },
          "drifts": {
            "type": "array",
            "items": {}
          },
          "evaluationType": {
            "type": "string"
          },
          "level": {
            "type": "string"
          },
          "metricKey": {
            "type": "string"
          },
          "metrics": {
            "type": "array",
            "items": {}
          },
          "thresholdBreached": {
            "type": "number",
            "format": "double"
          },
          "thresholdMetrics": {
            "type": "array",
            "items": {}
          }
        }
      },
      "AlertPageView": {
        "type": "object",
        "description": "Paginated response containing observer alerts",
        "properties": {
          "currentPage": {
            "type": "integer",
            "format": "int32",
            "description": "Current page number",
            "example": 1,
            "minimum": 1
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AlertResponse",
              "description": "Alert returned for the current page"
            }
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "description": "Number of items per page",
            "example": 20,
            "minimum": 1
          },
          "totalItems": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of items across all pages",
            "example": 1,
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of pages available based on page size and total items",
            "example": 1,
            "minimum": 0
          }
        }
      },
      "AlertPatchCommentRequest": {
        "type": "object",
        "description": "Comment recorded when patching an alert's state",
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "FALSE_POSITIVE",
              "EXPECTED_BEHAVIOR",
              "FIXED",
              "WONT_FIX",
              "OTHER"
            ]
          },
          "text": {
            "type": "string"
          }
        }
      },
      "AlertPatchStateRequest": {
        "type": "object",
        "description": "Request payload for updating an alert's lifecycle state",
        "properties": {
          "comment": {
            "$ref": "#/components/schemas/AlertPatchCommentRequest"
          },
          "state": {
            "type": "string",
            "enum": [
              "NEW",
              "OPEN",
              "IN_PROGRESS",
              "CLOSED"
            ]
          }
        }
      },
      "AlertResponse": {
        "type": "object",
        "description": "Alert emitted by an observer for an evaluated metric value",
        "properties": {
          "alert": {
            "$ref": "#/components/schemas/AlertDetail"
          },
          "assetId": {
            "type": "string"
          },
          "createdBy": {
            "type": "string"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "evaluationType": {
            "type": "string",
            "enum": [
              "NUMERIC",
              "TEMPORAL",
              "STRUCTURAL"
            ]
          },
          "history": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AlertHistoryView"
            }
          },
          "id": {
            "type": "string"
          },
          "lastModifiedBy": {
            "type": "string"
          },
          "lastModifiedDate": {
            "type": "string",
            "format": "date-time"
          },
          "metricTypeId": {
            "type": "string"
          },
          "metricValueId": {
            "type": "string"
          },
          "observationKind": {
            "type": "string"
          },
          "observerId": {
            "type": "string"
          },
          "severity": {
            "type": "string",
            "enum": [
              "WARN",
              "CRITICAL",
              "ALERT"
            ]
          },
          "state": {
            "type": "string",
            "enum": [
              "NEW",
              "OPEN",
              "IN_PROGRESS",
              "CLOSED"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "AnalyzeSampleResponse": {
        "type": "object",
        "description": "Profiling metrics and data quality assessment for an analyzed sample",
        "properties": {
          "profile": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "score": {
            "$ref": "#/components/schemas/AnalyzeScore"
          }
        }
      },
      "AnalyzeScore": {
        "type": "object",
        "description": "Data quality assessment for an analyzed sample",
        "properties": {
          "components": {
            "type": "array",
            "description": "The individual scores the overall score is composed of",
            "items": {
              "$ref": "#/components/schemas/Component"
            }
          },
          "issues": {
            "type": "array",
            "description": "Quality shortfalls, ordered by impact descending",
            "items": {
              "$ref": "#/components/schemas/Issue"
            }
          },
          "overall": {
            "type": "number",
            "format": "double",
            "description": "Overall data quality score, 0-100, or null when it could not be determined",
            "example": 62.4
          },
          "remediations": {
            "type": "array",
            "description": "Deterministic, already-computed fixes -- distinct from issues, which only describe a shortfall",
            "items": {
              "$ref": "#/components/schemas/Remediation"
            }
          },
          "scoreVersion": {
            "type": "integer",
            "format": "int32",
            "description": "Increments whenever the scoring arithmetic or response shape changes",
            "example": 1
          },
          "summary": {
            "$ref": "#/components/schemas/Summary"
          },
          "totalWeight": {
            "type": "number",
            "format": "double",
            "description": "The denominator of the overall score: the sum of all component weights. Null when no positive-weight component exists -- null exactly when overall is null, since one computation produces both.",
            "example": 7.5
          }
        }
      },
      "AssetGroupConfig": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TargetingConfig"
          },
          {
            "type": "object",
            "properties": {
              "assetGroupId": {
                "type": "string"
              }
            }
          }
        ],
        "description": "Observer targeting configuration for an asset group"
      },
      "AssetIdConfig": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TargetingConfig"
          },
          {
            "type": "object",
            "properties": {
              "assetId": {
                "type": "string"
              }
            }
          }
        ],
        "description": "Observer targeting configuration for a single asset"
      },
      "AssetQualityScoreView": {
        "type": "object",
        "description": "Represents the asset quality score view, including asset details and dimension scores.",
        "properties": {
          "assetView": {
            "$ref": "#/components/schemas/CatalogAssetView"
          },
          "dimensionScores": {
            "$ref": "#/components/schemas/QualityScoreDimensions"
          }
        }
      },
      "AssetView": {
        "type": "object",
        "description": "Represents a data asset with type and name path information used in data quality pipelines.",
        "properties": {
          "assetNamePath": {
            "type": "string"
          },
          "assetTypePath": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        }
      },
      "AssignedDetailView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AlertHistoryDetailView"
          },
          {
            "type": "object",
            "properties": {
              "assignedTo": {
                "type": "string"
              },
              "previousAssignee": {
                "type": "string"
              }
            }
          }
        ],
        "description": "Details for the ASSIGNED event"
      },
      "BandInfo": {
        "type": "object",
        "description": "Represents a scoring band with label, color, and minimum value for rule evaluation.",
        "properties": {
          "color": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "minimumValue": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "BandSnapshot": {
        "type": "object",
        "description": "Snapshot of the expected observer band bounds at alert evaluation time",
        "properties": {
          "expectedValue": {
            "type": "number",
            "format": "double"
          },
          "lowerBound": {
            "type": "number",
            "format": "double"
          },
          "upperBound": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "BlockingKey": {
        "type": "object",
        "description": "The blocking key duplicate detection generated",
        "properties": {
          "algorithm": {
            "type": "string"
          },
          "sourceField": {
            "type": "string"
          }
        }
      },
      "CancelJobStatus": {
        "type": "object",
        "description": "Represents information of a cancellation job.",
        "properties": {
          "comments": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          }
        }
      },
      "CatalogAssetView": {
        "type": "object",
        "description": "Represents the details of an asset.",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "assetName": {
            "type": "string"
          },
          "assetPath": {
            "type": "string"
          },
          "assetType": {
            "type": "string"
          },
          "assetTypeId": {
            "type": "string"
          },
          "catalogType": {
            "type": "string"
          },
          "leaf": {
            "type": "boolean"
          },
          "parentId": {
            "type": "string"
          },
          "parentName": {
            "type": "string"
          }
        }
      },
      "CatalogDataProfileConfidenceAnalysisDetails": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string"
          },
          "invalidCount": {
            "type": "integer",
            "format": "int64"
          },
          "semanticType": {
            "type": "string"
          },
          "validCount": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "CatalogDataProfileSampleDetail": {
        "type": "object",
        "properties": {
          "count": {
            "type": "number",
            "format": "double"
          },
          "key": {
            "type": "string"
          }
        }
      },
      "CommentAddedDetailView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AlertHistoryDetailView"
          },
          {
            "type": "object",
            "properties": {
              "reason": {
                "type": "string"
              },
              "comment": {
                "type": "string"
              }
            }
          }
        ],
        "description": "Details for the COMMENT_ADDED event — a comment added without an accompanying state transition"
      },
      "Component": {
        "type": "object",
        "description": "One scored column or address group",
        "properties": {
          "attainable": {
            "type": "number",
            "format": "double"
          },
          "detail": {
            "type": "object",
            "additionalProperties": {}
          },
          "dimensionBreakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Dimension"
            }
          },
          "dimensions": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            },
            "description": "Superseded by dimensionBreakdown, which is the corrected view. Retained for compatibility; may contain a value for a dimension that does not apply to this column's semantic type and therefore did not contribute to the score."
          },
          "examples": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Example"
            }
          },
          "expectationType": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "notApplicableDimensions": {
            "type": "array",
            "description": "Superseded by dimensionBreakdown's applicable=false entries. Retained for compatibility.",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          },
          "score": {
            "type": "number",
            "format": "double"
          },
          "weight": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "ConditionView": {
        "type": "object",
        "description": "Represents conditon view to create or update a rule.",
        "properties": {
          "config": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "Detail": {
        "type": "object",
        "properties": {
          "implied_operators": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "intent": {
            "type": "string"
          },
          "parameters": {
            "type": "object",
            "additionalProperties": {}
          }
        }
      },
      "Dimension": {
        "type": "object",
        "description": "One data-quality dimension's contribution to a component's score",
        "properties": {
          "applicable": {
            "type": "boolean"
          },
          "evidence": {
            "$ref": "#/components/schemas/Evidence"
          },
          "name": {
            "type": "string"
          },
          "score": {
            "type": "number",
            "format": "double"
          },
          "weight": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "DuplicateDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Detail"
          },
          {
            "type": "object",
            "properties": {
              "rules": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Rule"
                }
              },
              "algorithmPerField": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "blockingKey": {
                "$ref": "#/components/schemas/BlockingKey"
              },
              "threshold": {
                "type": "integer",
                "format": "int32"
              },
              "missingDataMethod": {
                "type": "string"
              },
              "normalizedFields": {
                "$ref": "#/components/schemas/NormalizedFields"
              },
              "duplicateGroups": {
                "type": "integer",
                "format": "int32"
              },
              "affectedRows": {
                "type": "integer",
                "format": "int32"
              },
              "surplusRows": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "description": "What duplicate detection did, and what it found"
      },
      "Error": {
        "type": "object",
        "properties": {
          "details": {
            "type": "string"
          },
          "errorCode": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          }
        }
      },
      "ErrorDetail": {
        "description": "Base class for detailed error information."
      },
      "ErrorResponse": {
        "type": "object",
        "description": "Standard error payload returned when an operation fails.",
        "properties": {
          "errorCode": {
            "type": "integer",
            "format": "int32"
          },
          "errorGroup": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorDetail"
            }
          },
          "httpStatus": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          },
          "stackTrace": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          },
          "traceId": {
            "type": "string"
          }
        }
      },
      "Evidence": {
        "type": "object",
        "description": "The measured counts behind a dimension's score",
        "properties": {
          "blankCount": {
            "type": "integer",
            "format": "int64"
          },
          "blankCredit": {
            "type": "number",
            "format": "double"
          },
          "distinctCount": {
            "type": "integer",
            "format": "int64"
          },
          "dominantCount": {
            "type": "integer",
            "format": "int64"
          },
          "dominantSignature": {
            "type": "string"
          },
          "excluded": {
            "type": "integer",
            "format": "int64"
          },
          "formatBucketCount": {
            "type": "integer",
            "format": "int32"
          },
          "nullCount": {
            "type": "integer",
            "format": "int64"
          },
          "scored": {
            "type": "integer",
            "format": "int64"
          },
          "total": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "Example": {
        "type": "object",
        "description": "An example of a value that scored badly",
        "properties": {
          "reason": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "ExcludeColumn": {
        "type": "object",
        "description": "Column excluded from observer evaluation",
        "properties": {
          "name": {
            "type": "string"
          }
        }
      },
      "FailedRecordStorageConfigurationRequest": {
        "type": "object",
        "description": "Request to create or update a failed record storage configuration",
        "properties": {
          "sourceConnectionId": {
            "type": "string",
            "description": "Source connection catalog asset ID. Used as lookup key for create-vs-update detection and to detect duplicate source usage.",
            "example": "6a0c302df75b947d1b53c621"
          },
          "targetAssetNamePath": {
            "type": "string",
            "description": "Fully-qualified target asset name path.",
            "example": "[databricks_dnd].[hive_metastore].[automation_schemadrift].[FAILED_RECORDS_OUTPUT]"
          },
          "targetAssetTypePath": {
            "type": "string",
            "description": "Target asset type hierarchy path.",
            "example": "[Host].[Database].[Schema].[Table]"
          },
          "targetConnectionId": {
            "type": "string",
            "description": "Target connection catalog asset ID.",
            "example": "6a16ae776fc4de102f21131a"
          }
        }
      },
      "FailedRecordStorageConfigurationResponse": {
        "type": "object",
        "description": "Response for a failed record storage configuration",
        "properties": {
          "assetTypeId": {
            "type": "string",
            "description": "The asset type ID used in the catalog. Returned only for failure payloads from the catalog adapter."
          },
          "description": {
            "type": "string",
            "description": "Description of the configuration. Returned only for failure payloads from the catalog adapter."
          },
          "id": {
            "type": "string",
            "description": "Unique ID of the configuration (catalog asset UID). Returned only for failure payloads from the catalog adapter."
          },
          "name": {
            "type": "string",
            "description": "Name of the configuration. Returned only for failure payloads from the catalog adapter."
          },
          "relations": {
            "type": "array",
            "description": "Catalog relations as returned by the catalog adapter. Returned only for failure payloads from the catalog adapter.",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "sourceConnectionId": {
            "type": "string",
            "description": "Source connection ID. Returned only for failure payloads from the catalog adapter."
          },
          "status": {
            "type": "string",
            "description": "Status of the operation. On success, this is returned as SUCCESS."
          },
          "successful": {
            "type": "boolean",
            "description": "Whether the downstream catalog operation succeeded. Returned only for failure payloads from the catalog adapter."
          },
          "targetAssetNamePath": {
            "type": "string",
            "description": "Target asset name path. Returned only for failure payloads from the catalog adapter."
          },
          "targetAssetTypePath": {
            "type": "string",
            "description": "Target asset type path. Returned only for failure payloads from the catalog adapter."
          },
          "targetConnectionId": {
            "type": "string",
            "description": "Target connection ID. Returned only for failure payloads from the catalog adapter."
          }
        }
      },
      "FieldGroupDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Detail"
          },
          {
            "type": "object",
            "properties": {
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "description": "The columns a field-group issue covers"
      },
      "HygieneDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Detail"
          },
          {
            "type": "object",
            "properties": {
              "dimension": {
                "type": "string"
              },
              "expectation": {
                "type": "string"
              },
              "dominantSignature": {
                "type": "string"
              },
              "dominantCount": {
                "type": "integer",
                "format": "int32"
              },
              "formatBucketCount": {
                "type": "integer",
                "format": "int32"
              },
              "nullCount": {
                "type": "integer",
                "format": "int32"
              },
              "blankCount": {
                "type": "integer",
                "format": "int32"
              },
              "total": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ],
        "description": "The measured facts behind a hygiene issue"
      },
      "Issue": {
        "type": "object",
        "description": "A quality shortfall found in the data",
        "properties": {
          "component": {
            "type": "string"
          },
          "detail": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/DuplicateDetail"
              },
              {
                "$ref": "#/components/schemas/FieldGroupDetail"
              },
              {
                "$ref": "#/components/schemas/HygieneDetail"
              }
            ]
          },
          "impact": {
            "type": "number",
            "format": "double",
            "example": 8.3
          },
          "kind": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "remediable": {
            "type": "boolean"
          },
          "severity": {
            "type": "string"
          }
        }
      },
      "JobRequest": {
        "type": "object",
        "description": "Request payload for submitting a job, containing the asset ID",
        "properties": {
          "assetId": {
            "type": "string",
            "description": "Asset ID for the job request",
            "example": "68a5bc3058b1f80cc0b1cdbd"
          },
          "name": {
            "type": "string",
            "description": "Name for the job request. Should be a human-readable identifier for the job, such as 'Customer Data Quality Job' or 'Sales Metrics Analysis'",
            "example": "Customer Data Quality Job"
          }
        }
      },
      "JobResponse": {
        "type": "object",
        "description": "Response containing the job ID for a submitted job request",
        "properties": {
          "jobId": {
            "type": "string",
            "description": "Unique identifier for the job",
            "example": "1234567890abcdef"
          }
        }
      },
      "MetricGroupScore": {
        "type": "object",
        "description": "Represents a group of metrics with associated scores and band information.",
        "properties": {
          "childQualityScores": {
            "$ref": "#/components/schemas/QualityScoreDetail"
          },
          "id": {
            "type": "string"
          },
          "lastRunAt": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string"
          },
          "score": {
            "type": "number",
            "format": "double"
          },
          "scoreBands": {
            "$ref": "#/components/schemas/BandInfo"
          },
          "targets": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "NormalizedFields": {
        "type": "object",
        "description": "Raw column to normalized column, keyed by semantic category",
        "properties": {
          "address": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "email": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "phone": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "ObservationConfig": {
        "type": "object",
        "description": "Configuration for one observation evaluated by an observer",
        "properties": {
          "alertingConfig": {
            "$ref": "#/components/schemas/AlertConfig"
          },
          "evaluationType": {
            "type": "string",
            "enum": [
              "NUMERIC",
              "TEMPORAL",
              "STRUCTURAL"
            ]
          },
          "excludedColumns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExcludeColumn"
            }
          },
          "metricTypeId": {
            "type": "string"
          },
          "observationKind": {
            "type": "string"
          },
          "significanceFilterValue": {
            "type": "number",
            "format": "double"
          },
          "significanceMode": {
            "type": "string",
            "enum": [
              "PERCENTAGE_OF_VALUE",
              "ABSOLUTE_POINT"
            ]
          },
          "sourcingMode": {
            "type": "string",
            "enum": [
              "SCHEDULE",
              "NONE"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "timeUnit": {
            "type": "string",
            "enum": [
              "HOURS",
              "DAYS",
              "WEEKS"
            ]
          },
          "triggers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SchemaConfig"
            }
          }
        }
      },
      "ObservationTypePageView": {
        "type": "object",
        "description": "Paginated response containing supported observation types",
        "properties": {
          "currentPage": {
            "type": "integer",
            "format": "int32",
            "description": "Current page number",
            "example": 1,
            "minimum": 1
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ObservationTypeView",
              "description": "Observation type returned for the current page"
            }
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "description": "Number of items per page",
            "example": 20,
            "minimum": 1
          },
          "totalItems": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of items across all pages",
            "example": 1,
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of pages available based on page size and total items",
            "example": 1,
            "minimum": 0
          }
        }
      },
      "ObservationTypeView": {
        "type": "object",
        "description": "Supported observation type and its available alerting modes",
        "properties": {
          "allowedAlertingModes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": "string"
          },
          "observationType": {
            "type": "string"
          }
        }
      },
      "ObserverPageView": {
        "type": "object",
        "description": "Paginated response containing observer definitions",
        "properties": {
          "currentPage": {
            "type": "integer",
            "format": "int32",
            "description": "Current page number",
            "example": 1,
            "minimum": 1
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ObserverResponse",
              "description": "Observer returned for the current page"
            }
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "description": "Number of items per page",
            "example": 20,
            "minimum": 1
          },
          "totalItems": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of items across all pages",
            "example": 1,
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of pages available based on page size and total items",
            "example": 1,
            "minimum": 0
          }
        }
      },
      "ObserverPatchStatusRequest": {
        "type": "object",
        "description": "Request payload for changing an observer lifecycle status",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE",
              "PAUSED"
            ]
          }
        }
      },
      "ObserverRequest": {
        "type": "object",
        "description": "Request payload for creating an observer definition",
        "properties": {
          "description": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "observations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ObservationConfig"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE",
              "PAUSED"
            ]
          },
          "targeting": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssetGroupConfig"
              },
              {
                "$ref": "#/components/schemas/AssetIdConfig"
              }
            ]
          }
        }
      },
      "ObserverResponse": {
        "type": "object",
        "description": "Observer definition returned by the portal API",
        "properties": {
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "description": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "lastModifiedDate": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string"
          },
          "observations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ObservationConfig"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE",
              "PAUSED"
            ]
          },
          "targetAssetGroupId": {
            "type": "string"
          },
          "targeting": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssetGroupConfig"
              },
              {
                "$ref": "#/components/schemas/AssetIdConfig"
              }
            ]
          }
        }
      },
      "ObserverUpdateRequest": {
        "type": "object",
        "description": "Request payload for updating an observer definition",
        "properties": {
          "description": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "observations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ObservationConfig"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE",
              "PAUSED"
            ]
          },
          "targeting": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssetGroupConfig"
              },
              {
                "$ref": "#/components/schemas/AssetIdConfig"
              }
            ]
          }
        }
      },
      "OperatorRecordCountView": {
        "type": "object",
        "description": "Represents the record count associated with a specific operator in the pipeline.",
        "properties": {
          "count": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "PageView": {
        "type": "object",
        "description": "Pagination wrapper for paginated API responses containing a list of items and pagination metadata",
        "properties": {
          "currentPage": {
            "type": "integer",
            "format": "int32",
            "description": "Current page number",
            "example": 1,
            "minimum": 1
          },
          "items": {
            "type": "array",
            "items": {
              "description": "List of items for the current page",
              "oneOf": [
                {
                  "$ref": "#/components/schemas/PipelineListItemView"
                },
                {
                  "$ref": "#/components/schemas/PipelineJobItemView"
                },
                {
                  "$ref": "#/components/schemas/PipelineRunConfigListItemView"
                },
                {
                  "$ref": "#/components/schemas/AssetQualityScoreView"
                },
                {
                  "$ref": "#/components/schemas/ProfileFieldView"
                },
                {
                  "$ref": "#/components/schemas/RuleAssetView"
                },
                {
                  "$ref": "#/components/schemas/RuleViewSummary"
                },
                {
                  "$ref": "#/components/schemas/ObserverResponse"
                },
                {
                  "$ref": "#/components/schemas/ObservationTypeView"
                },
                {
                  "$ref": "#/components/schemas/AlertResponse"
                }
              ]
            }
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "description": "Number of items per page",
            "example": 10,
            "minimum": 1
          },
          "totalItems": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of items across all pages",
            "example": 100,
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of pages available based on page size and total items",
            "example": 10,
            "minimum": 0
          }
        }
      },
      "PageViewProfileFieldView": {
        "type": "object",
        "description": "Pagination wrapper for paginated API responses containing a list of items and pagination metadata",
        "properties": {
          "currentPage": {
            "type": "integer",
            "format": "int32",
            "description": "Current page number",
            "example": 1,
            "minimum": 1
          },
          "items": {
            "type": "array",
            "items": {
              "description": "List of items for the current page",
              "oneOf": [
                {
                  "$ref": "#/components/schemas/PipelineListItemView"
                },
                {
                  "$ref": "#/components/schemas/PipelineJobItemView"
                },
                {
                  "$ref": "#/components/schemas/PipelineRunConfigListItemView"
                },
                {
                  "$ref": "#/components/schemas/AssetQualityScoreView"
                },
                {
                  "$ref": "#/components/schemas/ProfileFieldView"
                },
                {
                  "$ref": "#/components/schemas/RuleAssetView"
                },
                {
                  "$ref": "#/components/schemas/RuleViewSummary"
                },
                {
                  "$ref": "#/components/schemas/ObserverResponse"
                },
                {
                  "$ref": "#/components/schemas/ObservationTypeView"
                },
                {
                  "$ref": "#/components/schemas/AlertResponse"
                }
              ]
            }
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "description": "Number of items per page",
            "example": 10,
            "minimum": 1
          },
          "totalItems": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of items across all pages",
            "example": 100,
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of pages available based on page size and total items",
            "example": 10,
            "minimum": 0
          }
        }
      },
      "PageViewRuleAssetView": {
        "type": "object",
        "description": "Pagination wrapper for paginated API responses containing a list of items and pagination metadata",
        "properties": {
          "currentPage": {
            "type": "integer",
            "format": "int32",
            "description": "Current page number",
            "example": 1,
            "minimum": 1
          },
          "items": {
            "type": "array",
            "items": {
              "description": "List of items for the current page",
              "oneOf": [
                {
                  "$ref": "#/components/schemas/PipelineListItemView"
                },
                {
                  "$ref": "#/components/schemas/PipelineJobItemView"
                },
                {
                  "$ref": "#/components/schemas/PipelineRunConfigListItemView"
                },
                {
                  "$ref": "#/components/schemas/AssetQualityScoreView"
                },
                {
                  "$ref": "#/components/schemas/ProfileFieldView"
                },
                {
                  "$ref": "#/components/schemas/RuleAssetView"
                },
                {
                  "$ref": "#/components/schemas/RuleViewSummary"
                },
                {
                  "$ref": "#/components/schemas/ObserverResponse"
                },
                {
                  "$ref": "#/components/schemas/ObservationTypeView"
                },
                {
                  "$ref": "#/components/schemas/AlertResponse"
                }
              ]
            }
          },
          "pageSize": {
            "type": "integer",
            "format": "int64",
            "description": "Number of items per page",
            "example": 10,
            "minimum": 1
          },
          "totalItems": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of items across all pages",
            "example": 100,
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of pages available based on page size and total items",
            "example": 10,
            "minimum": 0
          }
        }
      },
      "PipelineJobCancelRequest": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Status of the job cancellation request",
            "enum": [
              "CANCELLED"
            ]
          }
        },
        "required": [
          "status"
        ]
      },
      "PipelineJobCancelResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        }
      },
      "PipelineJobCreateRequest": {
        "type": "object",
        "description": "Request object for creating a new pipeline job",
        "properties": {
          "runConfigId": {
            "type": "string",
            "description": "Unique identifier of the run configuration to use for the pipeline job",
            "example": "689db618617b4bd63438e56d"
          }
        }
      },
      "PipelineJobCreateResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          }
        }
      },
      "PipelineJobItemView": {
        "type": "object",
        "description": "Represents a single item in the pipeline job list.",
        "properties": {
          "comment": {
            "type": "string"
          },
          "counts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OperatorRecordCountView"
            }
          },
          "duration": {
            "type": "integer",
            "format": "int64"
          },
          "endTime": {
            "type": "integer",
            "format": "int64"
          },
          "externalId": {
            "type": "string"
          },
          "externalUrl": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "isScheduled": {
            "type": "boolean"
          },
          "pipeline": {
            "type": "string"
          },
          "pipelineId": {
            "type": "string"
          },
          "recordsProcessed": {
            "type": "integer",
            "format": "int64"
          },
          "runConfigId": {
            "type": "string"
          },
          "runConfigName": {
            "type": "string"
          },
          "sourceAssetNamePath": {
            "type": "string"
          },
          "sourceAssetTypePath": {
            "type": "string"
          },
          "sourceAssets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetView"
            }
          },
          "startTime": {
            "type": "integer",
            "format": "int64"
          },
          "status": {
            "type": "string"
          },
          "targetAssetNamePath": {
            "type": "string"
          },
          "targetAssetTypePath": {
            "type": "string"
          },
          "targetAssets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetView"
            }
          },
          "user": {
            "type": "string"
          }
        }
      },
      "PipelineListItemView": {
        "type": "object",
        "description": "Represents a summary view of a pipeline including basic metadata and validation status.",
        "properties": {
          "createdBy": {
            "type": "string"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "error": {
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "inputStepCount": {
            "type": "integer",
            "format": "int64"
          },
          "lastModifiedBy": {
            "type": "string"
          },
          "lastModifiedDate": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string"
          },
          "sourceAssetNamePath": {
            "type": "string"
          },
          "sourceAssetTypePath": {
            "type": "string"
          },
          "validationStatus": {
            "type": "boolean"
          }
        }
      },
      "PipelineRunConfigListItemView": {
        "type": "object",
        "description": "Represents a summary view of a pipeline run configuration.",
        "properties": {
          "compatibilityStatus": {
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "lastModifiedBy": {
            "type": "string"
          },
          "lastModifiedDate": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string"
          },
          "published": {
            "type": "boolean"
          },
          "scheduled": {
            "type": "boolean"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "ProblemDetail": {
        "type": "object",
        "properties": {
          "detail": {
            "type": "string"
          },
          "instance": {
            "type": "string",
            "format": "uri"
          },
          "properties": {
            "type": "object",
            "additionalProperties": {}
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "title": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "ProfileAssetView": {
        "type": "object",
        "description": "Represents profile information of an asset with field information in pagination.",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "blankCount": {
            "type": "integer",
            "format": "int64"
          },
          "bottomK": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "cardinality": {
            "type": "integer",
            "format": "int32"
          },
          "cardinalityDetail": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CatalogDataProfileSampleDetail"
            }
          },
          "confidence": {
            "type": "number",
            "format": "double"
          },
          "confidenceAnalysisDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CatalogDataProfileConfidenceAnalysisDetails"
            }
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "fieldView": {
            "$ref": "#/components/schemas/PageViewProfileFieldView"
          },
          "freshness": {
            "type": "integer",
            "format": "int32"
          },
          "isAuthorizedForPopularity": {
            "type": "boolean"
          },
          "keyConfidence": {
            "type": "number",
            "format": "double"
          },
          "leadingWhiteSpace": {
            "type": "boolean"
          },
          "leadingZeroCount": {
            "type": "integer",
            "format": "int32"
          },
          "matchCount": {
            "type": "integer",
            "format": "int64"
          },
          "max": {
            "type": "string"
          },
          "maxLength": {
            "type": "integer",
            "format": "int32"
          },
          "mean": {
            "type": "number",
            "format": "double"
          },
          "min": {
            "type": "string"
          },
          "minLength": {
            "type": "integer",
            "format": "int32"
          },
          "multiline": {
            "type": "boolean"
          },
          "nullCount": {
            "type": "integer",
            "format": "int64"
          },
          "outlierCardinality": {
            "type": "integer",
            "format": "int32"
          },
          "outlierCount": {
            "type": "integer",
            "format": "int64"
          },
          "outlierDetail": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CatalogDataProfileSampleDetail"
            }
          },
          "percentileStatistics": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CatalogDataProfileSampleDetail"
            }
          },
          "popularityCount": {
            "type": "integer",
            "format": "int64"
          },
          "possibleKey": {
            "type": "boolean"
          },
          "profileIdentifier": {
            "type": "string"
          },
          "profileType": {
            "type": "string",
            "enum": [
              "Full",
              "Sample",
              "Filtered"
            ]
          },
          "regExp": {
            "type": "string"
          },
          "sampleCount": {
            "type": "integer",
            "format": "int64"
          },
          "shapesCardinality": {
            "type": "integer",
            "format": "int32"
          },
          "shapesDetail": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CatalogDataProfileSampleDetail"
            }
          },
          "standardDeviation": {
            "type": "number",
            "format": "double"
          },
          "topK": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "totalCount": {
            "type": "integer",
            "format": "int64"
          },
          "trailingWhiteSpace": {
            "type": "boolean"
          },
          "type": {
            "type": "string"
          },
          "typeQualifier": {
            "type": "string"
          },
          "uniqueCount": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "ProfileFieldView": {
        "type": "object",
        "description": "Represents information of a field inside a dataset profile.",
        "properties": {
          "blankCount": {
            "type": "integer",
            "format": "int64"
          },
          "dataType": {
            "type": "string"
          },
          "distinctValues": {
            "type": "integer",
            "format": "int32"
          },
          "fieldName": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "invalidCount": {
            "type": "integer",
            "format": "int64"
          },
          "maxLength": {
            "type": "string"
          },
          "maximumValue": {
            "type": "string"
          },
          "minLength": {
            "type": "string"
          },
          "minimumValue": {
            "type": "string"
          },
          "nullCount": {
            "type": "integer",
            "format": "int64"
          },
          "outlierCount": {
            "type": "integer",
            "format": "int64"
          },
          "popularity": {
            "type": "integer",
            "format": "int64"
          },
          "sampleCount": {
            "type": "integer",
            "format": "int64"
          },
          "semanticType": {
            "type": "string"
          },
          "validCount": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "ProfileJobV2Request": {
        "type": "object",
        "description": "Request payload for V2 profile job submission",
        "properties": {
          "assetGroupId": {
            "type": "string",
            "description": "Asset group ID for semantic assessment",
            "example": "68a5bc3058b1f80cc0b1cdbd"
          },
          "assetIds": {
            "type": "array",
            "description": "List of asset IDs for semantic assessment",
            "example": [
              "68a5bc3058b1f80cc0b1cdbd",
              "68c289f1c78ac464af9a3fd0"
            ],
            "items": {
              "type": "string"
            }
          },
          "name": {
            "type": "string",
            "description": "Optional semantic job name",
            "example": "Customer_Semantic_Assessment"
          },
          "profileType": {
            "type": "string",
            "description": "Profile type: BASIC or ADVANCED",
            "enum": [
              "Basic",
              "Advanced"
            ],
            "example": "Basic"
          }
        },
        "required": [
          "profileType"
        ]
      },
      "ProfileRunInfo": {
        "type": "object",
        "description": "Represents profile run information of a job.",
        "properties": {
          "childTaskIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          },
          "comments": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "parentTaskIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string"
          },
          "taskId": {
            "type": "string"
          },
          "taskType": {
            "type": "string"
          }
        }
      },
      "ProfileRunStatus": {
        "type": "object",
        "description": "Represents profile run information of a job.",
        "properties": {
          "childTaskInfo": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfileRunInfo"
            }
          },
          "runInfo": {
            "$ref": "#/components/schemas/ProfileRunInfo"
          }
        }
      },
      "QualityScoreDetail": {
        "type": "object",
        "description": "Represents detailed quality scores including asset and rule scores.",
        "properties": {
          "assetScores": {
            "$ref": "#/components/schemas/TargetFieldsPage"
          },
          "ruleScores": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetField"
            }
          },
          "totalRuleScores": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "QualityScoreDimensions": {
        "type": "object",
        "description": "Represents aggregated quality scores, band information, and metric group dimensions for an asset.",
        "properties": {
          "aggregatedScore": {
            "type": "number",
            "format": "double"
          },
          "dimensions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MetricGroupScore"
            }
          },
          "scoreBands": {
            "$ref": "#/components/schemas/BandInfo"
          }
        }
      },
      "Remediation": {
        "type": "object",
        "description": "A deterministic, portal-computed data quality fix",
        "properties": {
          "id": {
            "type": "string"
          },
          "remediation": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Detail"
              },
              {
                "$ref": "#/components/schemas/DuplicateDetail"
              },
              {
                "$ref": "#/components/schemas/FieldGroupDetail"
              },
              {
                "$ref": "#/components/schemas/HygieneDetail"
              }
            ]
          }
        }
      },
      "Rule": {
        "type": "object",
        "description": "One duplicate-detection rule",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "name": {
            "type": "string"
          }
        }
      },
      "RuleAssetView": {
        "type": "object",
        "description": "Represents asset information and its score band information.",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "assetName": {
            "type": "string"
          },
          "assetPath": {
            "type": "string"
          },
          "capturedFailedRecords": {
            "type": "boolean"
          },
          "catalogType": {
            "type": "string"
          },
          "evaluateCount": {
            "type": "number",
            "format": "double"
          },
          "failCount": {
            "type": "number",
            "format": "double"
          },
          "isSampleAvailable": {
            "type": "boolean"
          },
          "lastRunAt": {
            "type": "string",
            "format": "date-time"
          },
          "parentAssetId": {
            "type": "string"
          },
          "passCount": {
            "type": "number",
            "format": "double"
          },
          "score": {
            "type": "number",
            "format": "double"
          },
          "scoreBands": {
            "$ref": "#/components/schemas/BandInfo"
          },
          "totalCount": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "RuleCustomProperty": {
        "type": "object",
        "description": "A custom metadata property attached to a rule.",
        "properties": {
          "name": {
            "type": "string",
            "description": "The property name."
          },
          "value": {
            "description": "The property value."
          }
        }
      },
      "RuleErrorDetails": {
        "type": "object",
        "description": "Represents rule error details with asset information.",
        "properties": {
          "assetDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CatalogAssetView"
            }
          },
          "assetPath": {
            "type": "string"
          },
          "assetTypePath": {
            "type": "string"
          },
          "connectionName": {
            "type": "string"
          },
          "datasetId": {
            "type": "string"
          },
          "datasetName": {
            "type": "string"
          },
          "displayPath": {
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/Error"
          },
          "targetAssetCount": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "RuleExecutionStatus": {
        "type": "object",
        "description": "Represents a rule information and its execution status, asset information and score band information in pagination.",
        "properties": {
          "errorDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RuleErrorDetails"
            }
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "primaryMetricTypeId": {
            "type": "string"
          },
          "ruleAssetView": {
            "$ref": "#/components/schemas/PageViewRuleAssetView"
          },
          "runStatus": {
            "$ref": "#/components/schemas/RunStatus"
          }
        }
      },
      "RuleRequestCreateView": {
        "type": "object",
        "description": "Represents the request view for a rule.",
        "properties": {
          "captureFailedRecords": {
            "type": "boolean"
          },
          "customProperties": {
            "type": "array",
            "description": "Custom metadata properties to attach to this rule.",
            "items": {
              "$ref": "#/components/schemas/RuleCustomProperty"
            }
          },
          "description": {
            "type": "string"
          },
          "dimensionName": {
            "type": "string"
          },
          "enableAutoRun": {
            "type": "boolean"
          },
          "failedCondition": {
            "$ref": "#/components/schemas/ConditionView"
          },
          "filterCondition": {
            "$ref": "#/components/schemas/ConditionView"
          },
          "mappings": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "name": {
            "type": "string"
          },
          "passCondition": {
            "$ref": "#/components/schemas/ConditionView"
          },
          "reconciliationStrategy": {
            "type": "string",
            "description": "Reconciliation execution strategy for reconciliation rules (e.g. RUN_WITH_EXECUTION, COMPARE_RUN)."
          },
          "ruleType": {
            "type": "string"
          },
          "scoreBands": {
            "type": "array",
            "description": "Score bands configured for the rule.",
            "items": {
              "$ref": "#/components/schemas/BandInfo"
            }
          },
          "scoreClass": {
            "type": "string",
            "description": "Score class the rule belongs to. Defaults to Quality when omitted.",
            "enum": [
              "Quality",
              "Governance"
            ],
            "example": "Quality"
          },
          "scoreTarget": {
            "type": "string",
            "description": "Identifier of the asset the rule is scored against."
          },
          "targetAssetsFilter": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "targetingType": {
            "type": "string"
          }
        }
      },
      "RuleRequestUpdateView": {
        "type": "object",
        "description": "Represents the update view for a rule.",
        "properties": {
          "captureFailedRecords": {
            "type": "boolean"
          },
          "customProperties": {
            "type": "array",
            "description": "Custom metadata properties to attach to this rule.",
            "items": {
              "$ref": "#/components/schemas/RuleCustomProperty"
            }
          },
          "description": {
            "type": "string"
          },
          "dimensionName": {
            "type": "string"
          },
          "enableAutoRun": {
            "type": "boolean"
          },
          "failedCondition": {
            "$ref": "#/components/schemas/ConditionView"
          },
          "filterCondition": {
            "$ref": "#/components/schemas/ConditionView"
          },
          "id": {
            "type": "string"
          },
          "mappings": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "name": {
            "type": "string"
          },
          "passCondition": {
            "$ref": "#/components/schemas/ConditionView"
          },
          "reconciliationStrategy": {
            "type": "string",
            "description": "Reconciliation execution strategy for reconciliation rules (e.g. RUN_WITH_EXECUTION, COMPARE_RUN)."
          },
          "ruleType": {
            "type": "string"
          },
          "scoreBands": {
            "type": "array",
            "description": "Score bands configured for the rule.",
            "items": {
              "$ref": "#/components/schemas/BandInfo"
            }
          },
          "scoreClass": {
            "type": "string",
            "description": "Score class the rule belongs to. Defaults to Quality when omitted.",
            "enum": [
              "Quality",
              "Governance"
            ],
            "example": "Quality"
          },
          "scoreTarget": {
            "type": "string",
            "description": "Identifier of the asset the rule is scored against."
          },
          "targetAssetsFilter": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "targetingType": {
            "type": "string"
          }
        }
      },
      "RuleResultItem": {
        "type": "object",
        "description": "A single rule execution result for an asset, including score, pass/fail counts, total evaluations, and score band.",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "effectiveDate": {
            "type": "string"
          },
          "evaluateCount": {
            "type": "integer",
            "format": "int64"
          },
          "failCount": {
            "type": "integer",
            "format": "int64"
          },
          "passCount": {
            "type": "integer",
            "format": "int64"
          },
          "ruleId": {
            "type": "string"
          },
          "score": {
            "type": "number",
            "format": "double"
          },
          "scoreBand": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BandInfo"
            }
          },
          "totalCount": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "RuleResultsQueryResponseView": {
        "type": "object",
        "description": "Paginated response containing rule execution result items and pagination metadata for v2 rule result queries.",
        "properties": {
          "currentPage": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RuleResultItem"
            }
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalItems": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "RuleView": {
        "type": "object",
        "description": "Represents a rule configuration and its execution status, including scoring bands and target asset information.",
        "properties": {
          "captureFailedRecords": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "customProperties": {
            "type": "array",
            "description": "Custom metadata properties attached to this rule.",
            "items": {
              "$ref": "#/components/schemas/RuleCustomProperty"
            }
          },
          "description": {
            "type": "string"
          },
          "dimensionId": {
            "type": "string"
          },
          "dimensionName": {
            "type": "string"
          },
          "enableAutoRun": {
            "type": "boolean"
          },
          "failedCondition": {
            "type": "string"
          },
          "filterCondition": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "isFailedCondition": {
            "type": "boolean"
          },
          "lastModifiedBy": {
            "type": "string"
          },
          "lastModifiedDate": {
            "type": "string",
            "format": "date-time"
          },
          "mappings": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "name": {
            "type": "string"
          },
          "passCondition": {
            "type": "string"
          },
          "primaryMetricTypeId": {
            "type": "string"
          },
          "reconciliationStrategy": {
            "type": "string",
            "description": "Reconciliation execution strategy (e.g. RUN_WITH_EXECUTION, COMPARE_RUN)."
          },
          "ruleType": {
            "type": "string"
          },
          "runStatus": {
            "$ref": "#/components/schemas/RunStatus"
          },
          "scoreBands": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BandInfo"
            }
          },
          "scoreClass": {
            "type": "string",
            "description": "Score class the rule belongs to.",
            "example": "Quality"
          },
          "scoreTarget": {
            "type": "string",
            "description": "Identifier of the asset the rule is scored against."
          },
          "script": {
            "type": "boolean"
          },
          "supportingMetricTypeIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "targetAssetCount": {
            "type": "integer",
            "format": "int32"
          },
          "targetAssetGroups": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "xref": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "RuleViewSummary": {
        "type": "object",
        "description": "Summary view of a rule, including key configuration and execution status.",
        "properties": {
          "description": {
            "type": "string"
          },
          "dimensionId": {
            "type": "string"
          },
          "dimensionName": {
            "type": "string"
          },
          "enableAutoRun": {
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "primaryMetricTypeId": {
            "type": "string"
          },
          "ruleType": {
            "type": "string"
          },
          "runStatus": {
            "$ref": "#/components/schemas/RunStatus"
          },
          "scoreClass": {
            "type": "string",
            "description": "Score class the rule belongs to.",
            "example": "Quality"
          },
          "scoreTarget": {
            "type": "string",
            "description": "Identifier of the asset the rule is scored against."
          },
          "targetAssetCount": {
            "type": "integer",
            "format": "int32"
          },
          "targetAssetGroups": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "RunStatus": {
        "type": "object",
        "description": "Represents the execution status of a rule, including correlation ID, state, and last run timestamp.",
        "properties": {
          "correlationId": {
            "type": "string"
          },
          "lastRunAt": {
            "type": "string",
            "format": "date-time"
          },
          "state": {
            "type": "string"
          }
        }
      },
      "SampleFileConfigView": {
        "type": "object",
        "properties": {
          "delimiter": {
            "type": "string"
          },
          "encoding": {
            "type": "string"
          },
          "lineSeparator": {
            "type": "string"
          },
          "textQualifier": {
            "type": "string"
          }
        }
      },
      "SampleFileFieldView": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "semanticType": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "SampleFileView": {
        "type": "object",
        "properties": {
          "assetNamePath": {
            "type": "string"
          },
          "assetTypePath": {
            "type": "string"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "daysLeftToPurge": {
            "type": "integer",
            "format": "int64"
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SampleFileFieldView"
            }
          },
          "fileConfigurationModel": {
            "$ref": "#/components/schemas/SampleFileConfigView"
          },
          "lastModifiedDate": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string"
          },
          "numberOfRows": {
            "type": "integer",
            "format": "int32"
          },
          "sampleStorageProvider": {
            "type": "string"
          },
          "sampleType": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          }
        }
      },
      "SampleSummary": {
        "type": "object",
        "properties": {
          "assetNamePath": {
            "type": "string"
          },
          "assetTypePath": {
            "type": "string"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "daysLeftToPurge": {
            "type": "integer",
            "format": "int64"
          },
          "lastModifiedDate": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string"
          },
          "numberOfRows": {
            "type": "integer",
            "format": "int32"
          },
          "sampleStorageProvider": {
            "type": "string"
          },
          "sampleType": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          }
        }
      },
      "SchemaConfig": {
        "type": "object",
        "description": "Schema-change trigger configuration for an observer",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "severity": {
            "type": "string",
            "enum": [
              "WARN",
              "ALERT"
            ]
          },
          "triggerType": {
            "type": "string",
            "enum": [
              "TABLE_DELETED",
              "COLUMN_DELETED",
              "COLUMN_ADDED",
              "TYPE_CHANGED",
              "COLUMN_RENAMED",
              "COLUMN_ORDER",
              "NULLABLE_CHANGED"
            ]
          }
        }
      },
      "ScoreItem": {
        "type": "object",
        "description": "A single quality score record for an asset and optional dimension, including score band and effective date.",
        "properties": {
          "assetId": {
            "type": "string"
          },
          "dimensionId": {
            "type": "string"
          },
          "effectiveDate": {
            "type": "string"
          },
          "score": {
            "type": "number",
            "format": "double"
          },
          "scoreBand": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BandInfo"
            }
          }
        }
      },
      "ScoresQueryResponseView": {
        "type": "object",
        "description": "Paginated response containing quality score items and pagination metadata for v2 quality score queries.",
        "properties": {
          "currentPage": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScoreItem"
            }
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalItems": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "SemanticJobRequest": {
        "type": "object",
        "description": "Request payload for semantic job submission",
        "properties": {
          "assetGroupId": {
            "type": "string",
            "description": "Asset group ID for semantic assessment",
            "example": "68a5bc3058b1f80cc0b1cdbd"
          },
          "assetIds": {
            "type": "array",
            "description": "List of asset IDs for semantic assessment",
            "example": [
              "68a5bc3058b1f80cc0b1cdbd",
              "68c289f1c78ac464af9a3fd0"
            ],
            "items": {
              "type": "string"
            }
          },
          "name": {
            "type": "string",
            "description": "Optional semantic job name",
            "example": "Customer_Semantic_Assessment"
          }
        }
      },
      "StateChangedDetailView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AlertHistoryDetailView"
          },
          {
            "type": "object",
            "properties": {
              "oldState": {
                "type": "string"
              },
              "newState": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              },
              "comment": {
                "type": "string"
              }
            }
          }
        ],
        "description": "Details for the STATE_CHANGED event, optionally with a dismiss reason and/or comment"
      },
      "Summary": {
        "type": "object",
        "description": "Counts describing what was assessed",
        "properties": {
          "columnCount": {
            "type": "integer",
            "format": "int32"
          },
          "componentCount": {
            "type": "integer",
            "format": "int32"
          },
          "issueCount": {
            "type": "integer",
            "format": "int32"
          },
          "rowCount": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "TargetField": {
        "type": "object",
        "description": "Represents a target field in the asset quality score model.",
        "properties": {
          "description": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "lastRunAt": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string"
          },
          "score": {
            "type": "number",
            "format": "double"
          },
          "scoreBands": {
            "$ref": "#/components/schemas/BandInfo"
          }
        }
      },
      "TargetFieldsPage": {
        "type": "object",
        "description": "Represents a paginated list of target fields for asset quality scoring.",
        "properties": {
          "currentPage": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TargetField"
            }
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalItems": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "TargetingConfig": {
        "type": "object",
        "description": "Base observer targeting configuration",
        "discriminator": {
          "propertyName": "type"
        },
        "properties": {
          "type": {
            "type": "string"
          }
        }
      },
      "TrainingWindow": {
        "type": "object",
        "description": "Training window used to establish observer alert baselines",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "DAYS",
              "METRIC_POINTS"
            ]
          },
          "value": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ValidateConditionRequest": {
        "type": "object",
        "description": "Request payload for condition validation and conversion to expression.",
        "properties": {
          "condition": {
            "type": "string",
            "description": "Plain-English condition text to validate and convert.",
            "example": "Value IS NOT NULL"
          }
        }
      },
      "ValidateConditionResponse": {
        "type": "object",
        "description": "Response payload for condition validation and conversion to expression.",
        "properties": {
          "condition": {
            "type": "string",
            "description": "Echo of the input condition.",
            "example": "Value IS NOT NULL"
          },
          "errors": {
            "type": "array",
            "description": "List of descriptive error messages. Present only when validExpression is false.",
            "items": {
              "type": "string"
            }
          },
          "expression": {
            "type": "string",
            "description": "The converted expression JSON. Present only when validExpression is true.",
            "example": {
              "type": "basic",
              "config": {
                "SimpleExpression": {
                  "operator": "IS NOT NULL",
                  "left": {
                    "Column": {
                      "columnName": "Value"
                    }
                  }
                }
              }
            }
          },
          "validExpression": {
            "type": "boolean",
            "description": "Indicates whether the condition was successfully converted to an expression."
          }
        }
      },
      "ValueExcludedDetailView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AlertHistoryDetailView"
          },
          {
            "type": "object",
            "properties": {
              "metricValueId": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              }
            }
          }
        ],
        "description": "Details for the VALUE_EXCLUDED event"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}
