> For the complete documentation index, see [llms.txt](https://developer.collibra.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.collibra.com/api/references/data-quality/job-runs.md).

# Job Runs

## Trigger a job run

> Starts a run of the specified job. Supports an optional\
> \`backrun\` to backfill prior periods. Returns a receipt with the generated run ID.\
> \
> \*\*Permissions\*\*\
> \- \*\*Required:\*\* \`DATA\_QUALITY\` and \`DATA\_QUALITY\_JOB\_RUN\`\
> \- \*\*Global bypass:\*\*\
> &#x20; \- \`DATA\_QUALITY\` and \`RESOURCE\_MANAGE\_ALL\`

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"tags":[{"name":"Job Runs"}],"servers":[{"description":"Data Quality API","url":"/rest/dq/1.0"}],"security":[{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"description":"Collibra REST API authentication using Basic Authentication.","type":"http","scheme":"basic"},"jwtAuth":{"description":"Collibra REST API authentication using JSON Web Token.","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"JobNamePath":{"name":"jobName","in":"path","required":true,"description":"Job name","schema":{"$ref":"#/components/schemas/JobName"}}},"schemas":{"JobName":{"type":"string","description":"Job name. Allowed characters by default: letters, digits, `_`, `.`, `-`. **Configurable** via the server env variable `VALIDATION_PATTERN_JOB_NAME`. Default pattern: `^[a-zA-Z0-9_.-]+$`.\n","minLength":1,"maxLength":255,"pattern":"^[a-zA-Z0-9_.-]+$"},"JobRunRequest":{"type":"object","description":"Parameters for a single job run. If omitted, defaults apply (now as a runDate, no backrun).\n","properties":{"runDate":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/RunDateValue"},{"description":"Start of the time slice used only when the `sourceQuery` contains the `${rd}` placeholder.\nThe engine substitutes `${rd}` using `jobSettings.dateFormat`:\n  - DATE → `yyyy-MM-dd`\n  - TIMESTAMP → RFC 3339 `yyyy-MM-dd'T'HH:mm:ss'Z'`\n\nIf `sourceQuery` omits `${rd}`, this value does **not** restrict the data scan and\nonly affects the **run’s date** (e.g., run metadata/labeling, scheduling context).\n\n**Optional**. If omitted, the service uses the current date/time"}]},"runDateEnd":{"$ref":"#/components/schemas/RunDateEndValue"},"backrun":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/Backrun"},{"description":"Optional historical backfill: trigger additional runs for prior periods based on `timeBin` and `binValue`.\n"}]}},"additionalProperties":false},"RunDateValue":{"description":"Start of the time slice used only when the `sourceQuery` contains the `${rd}` placeholder.\nThe engine substitutes `${rd}` using `jobSettings.dateFormat`:\n  - DATE → `yyyy-MM-dd`\n  - TIMESTAMP → RFC 3339 `yyyy-MM-dd'T'HH:mm:ss'Z'` \n\nIf `sourceQuery` omits `${rd}`, this value does **not** restrict the data scan and\nonly affects the **run’s date** (e.g., run metadata/labeling, scheduling context).","oneOf":[{"$ref":"#/components/schemas/DateOnly"},{"$ref":"#/components/schemas/Rfc3339DateTime"}],"discriminator":{"propertyName":"kind","mapping":{"DATE":"#/components/schemas/DateOnly","TIMESTAMP":"#/components/schemas/Rfc3339DateTime"}}},"DateOnly":{"type":"object","required":["kind","value"],"description":"Calendar date, format yyyy-MM-dd.","properties":{"kind":{"type":"string","pattern":"^DATE$"},"value":{"type":"string","format":"date"}}},"Rfc3339DateTime":{"type":"object","required":["kind","value"],"format":"date-time","description":"RFC 3339 timestamp with timezone offset. The server normalizes all inputs to UTC and responses are returned in UTC (trailing 'Z'), seconds precision.","properties":{"kind":{"type":"string","pattern":"^TIMESTAMP$"},"value":{"type":"string","format":"date-time"}}},"RunDateEndValue":{"nullable":true,"oneOf":[{"$ref":"#/components/schemas/DateOnly"},{"$ref":"#/components/schemas/Rfc3339DateTime"}],"discriminator":{"propertyName":"kind","mapping":{"DATE":"#/components/schemas/DateOnly","TIMESTAMP":"#/components/schemas/Rfc3339DateTime"}},"description":"**Exclusive end** of the time slice, used only when the `sourceQuery` contains the `${rdEnd}` placeholder.\nMust be **greater than** `runDate` when both are provided. Formatted per `jobSettings.dateFormat`:\n  - DATE → `yyyy-MM-dd`\n  - TIMESTAMP → RFC 3339 `yyyy-MM-dd'T'HH:mm:ss'Z'`\n\nIf `sourceQuery` omits `${rdEnd}`, this value does **not** restrict the data scan and is ignored for run timing."},"Backrun":{"type":"object","nullable":true,"description":"Enables historical backfill runs relative to the scheduled runDate. If included, additional runs will be triggered for the previous `binValue` time bins using the selected `timeBin`. Example: DAY + 10 -> run the previous 10 days.\n","properties":{"timeBin":{"$ref":"#/components/schemas/BackrunTimeBin"},"binValue":{"type":"integer","minimum":1,"description":"Number of past bins to backfill"}},"required":["timeBin","binValue"]},"BackrunTimeBin":{"type":"string","description":"Time bin used when defining backruns.\n\nCurrent possible values include:\n  * `DAY`   – backrun by day.\n  * `MONTH` – backrun by month.\n  * `YEAR`  – backrun by year.\n\nAdditional values may be introduced in the future"},"JobSubmission":{"type":"object","properties":{"jobRunId":{"type":"string","format":"uuid"}}},"StandardErrorResponse":{"type":"object","description":"Error response returned by the Data Quality API.","required":["statusCode","errorCode","titleMessage","userMessage"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code corresponding to the error."},"errorCode":{"type":"string","description":"Internal error code representing the specific error type."},"titleMessage":{"type":"string","description":"A brief title summarizing the error."},"userMessage":{"type":"string","description":"Detailed, user-friendly message explaining the error and possible remediation steps."}}}},"responses":{"BadRequest":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"NotFound":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/jobs/{jobName}/run":{"post":{"tags":["Job Runs"],"summary":"Trigger a job run","description":"Starts a run of the specified job. Supports an optional\n`backrun` to backfill prior periods. Returns a receipt with the generated run ID.\n\n**Permissions**\n- **Required:** `DATA_QUALITY` and `DATA_QUALITY_JOB_RUN`\n- **Global bypass:**\n  - `DATA_QUALITY` and `RESOURCE_MANAGE_ALL`","operationId":"runJob","parameters":[{"$ref":"#/components/parameters/JobNamePath"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRunRequest"}}}},"responses":{"202":{"description":"Accepted. Run created and queued.","headers":{"Location":{"description":"URL of the run resource","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSubmission"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Search job runs

> Returns job runs that user has permission to view with pagination and filters. Results are sorted by the last updated timestamp in descending order.\
> \
> \*\*Permissions\*\*\
> \- \*\*Required:\*\* \`DATA\_QUALITY\` and \`DATA\_QUALITY\_JOB\_VIEW\`\
> \- \*\*Global bypass:\*\*\
> &#x20; \- \`DATA\_QUALITY\` and \`VIEW\_PERMISSIONS\_VIEW\_ALL\`\
> &#x20; \- \`DATA\_QUALITY\` and \`RESOURCE\_MANAGE\_ALL\`

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"tags":[{"name":"Job Runs"}],"servers":[{"description":"Data Quality API","url":"/rest/dq/1.0"}],"security":[{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"description":"Collibra REST API authentication using Basic Authentication.","type":"http","scheme":"basic"},"jwtAuth":{"description":"Collibra REST API authentication using JSON Web Token.","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"JobType":{"type":"string","description":"Execution mode for Data Quality job. Pullup jobs are available only when the Pullup preview feature is enabled. Allowed values: \"PUSHDOWN\", \"PULLUP\".\n"},"JobRunStatus":{"type":"string","maxLength":255,"description":"Status of an individual job run.\n\nCurrent possible values include:\n  * `WAITING`\n  * `DISPATCHED`\n  * `SETUP`\n  * `RUNNING`\n  * `SENDING`\n  * `FINISHED`\n  * `CANCELLED`\n  * `FAILED`\n  * `UNKNOWN`\n\nAdditional statuses may be introduced in the future."},"JobRunPaginated":{"type":"object","description":"Paged list of job runs","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/JobRun"}},"total":{"type":"integer","format":"int64","minimum":0,"description":"Total number of matching items"},"offset":{"type":"integer","format":"int64","minimum":0,"description":"Current offset"},"limit":{"type":"integer","format":"int64","minimum":0,"description":"Page size"}},"required":["results","total","offset","limit"]},"JobRun":{"type":"object","description":"Individual job run.\n\nFields fall into three populated-when buckets:\n  - **Always populated** (run lifecycle): `jobRunId`, `jobName`,\n    `status`, `runDate`, `activity`, `startedBy`, `startTime`,\n    `updatedAt`.\n  - **Populated for terminal states** (`FINISHED`, `CANCELLED`,\n    `FAILED`) where data is available, otherwise `null`: `endTime`,\n    `executionTimeSeconds`, `score`, `activeMonitors`,\n    `breakingMonitors`, `rowCount`, `executedQuery`.\n  - **Populated when configured / on failure**: `sourceQuery`\n    (only if the job defines one), `exception` (only on `FAILED`).","properties":{"jobRunId":{"type":"string","format":"uuid","description":"Id of the individual job run"},"jobName":{"$ref":"#/components/schemas/JobName"},"runDate":{"$ref":"#/components/schemas/RunDateValue"},"status":{"$ref":"#/components/schemas/JobRunStatus"},"activity":{"$ref":"#/components/schemas/JobActivity"},"exception":{"type":"string","nullable":true,"description":"Job exception message if the run failed"},"startedBy":{"type":"string","format":"uuid","description":"User id who run the job"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated timestamp (UTC)"},"startTime":{"type":"string","format":"date-time","description":"Job start timestamp (UTC)"},"endTime":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp (UTC, ISO 8601) when the run reached a terminal state. Null while in progress."},"executionTimeSeconds":{"type":"integer","format":"int64","minimum":0,"nullable":true,"description":"Wall-clock duration in seconds (`endTime - startTime`). Null while in progress."},"score":{"type":"number","format":"double","minimum":0,"maximum":100,"nullable":true,"description":"Overall data quality score for the run, as a percentage in `[0, 100]`. Null if scoring did not complete."},"activeMonitors":{"type":"integer","format":"int32","minimum":0,"nullable":true,"description":"Count of monitors evaluated during the run. Null if evaluation did not complete."},"breakingMonitors":{"type":"integer","format":"int32","minimum":0,"nullable":true,"description":"Count of monitors that reported a breaking status. Null if evaluation did not complete."},"rowCount":{"type":"integer","format":"int64","minimum":0,"nullable":true,"description":"Number of rows scanned or processed by the run. Null if the data scan did not complete."},"sourceQuery":{"$ref":"#/components/schemas/SourceQuery"},"executedQuery":{"type":"string","nullable":true,"description":"The query actually executed for this run, with `${rd}` /\n`${rdEnd}` substituted using the job's configured `dateFormat`.\nThis is the post-substitution form of `sourceQuery` — the\nschema/table names, predicates, and any literal values it\ncontains are the same surface already exposed via\n`sourceQuery` on `JobDefinition`.\n\nNull if the run failed before substitution."}}},"JobName":{"type":"string","description":"Job name. Allowed characters by default: letters, digits, `_`, `.`, `-`. **Configurable** via the server env variable `VALIDATION_PATTERN_JOB_NAME`. Default pattern: `^[a-zA-Z0-9_.-]+$`.\n","minLength":1,"maxLength":255,"pattern":"^[a-zA-Z0-9_.-]+$"},"RunDateValue":{"description":"Start of the time slice used only when the `sourceQuery` contains the `${rd}` placeholder.\nThe engine substitutes `${rd}` using `jobSettings.dateFormat`:\n  - DATE → `yyyy-MM-dd`\n  - TIMESTAMP → RFC 3339 `yyyy-MM-dd'T'HH:mm:ss'Z'` \n\nIf `sourceQuery` omits `${rd}`, this value does **not** restrict the data scan and\nonly affects the **run’s date** (e.g., run metadata/labeling, scheduling context).","oneOf":[{"$ref":"#/components/schemas/DateOnly"},{"$ref":"#/components/schemas/Rfc3339DateTime"}],"discriminator":{"propertyName":"kind","mapping":{"DATE":"#/components/schemas/DateOnly","TIMESTAMP":"#/components/schemas/Rfc3339DateTime"}}},"DateOnly":{"type":"object","required":["kind","value"],"description":"Calendar date, format yyyy-MM-dd.","properties":{"kind":{"type":"string","pattern":"^DATE$"},"value":{"type":"string","format":"date"}}},"Rfc3339DateTime":{"type":"object","required":["kind","value"],"format":"date-time","description":"RFC 3339 timestamp with timezone offset. The server normalizes all inputs to UTC and responses are returned in UTC (trailing 'Z'), seconds precision.","properties":{"kind":{"type":"string","pattern":"^TIMESTAMP$"},"value":{"type":"string","format":"date-time"}}},"JobActivity":{"type":"string","description":"Current activity within the job run.\n\nCurrent possible values include:\n  * `INIT`\n  * `SCHEMA`\n  * `LOAD`\n  * `DISCOVERY`\n  * `PROFILE`\n  * `RULES`\n  * `HISTOGRAMS`\n  * `CORRELATION`\n  * `LAYERS`\n  * `RESULTS`\n  * `ALERTS`\n  * `\"\"` – no activity / idle (legacy representation).\n\nAdditional activities may be introduced in the future. Clients SHOULD treat\nunknown values as “implementation detail” and not fail on them."},"SourceQuery":{"nullable":true,"type":"string","description":"Source SQL for the job. \n\n- If you want to limit the data slice by date/time, **do not hard-code literal\n  dates** in the SQL. Always use the placeholders `${rd}` (start) and `${rdEnd}`\n  (exclusive end), and pass the actual values via the `runDate` / `runDateEnd`\n  fields of the request.  \n  Example pattern: `WHERE \"trade_date\" >= '${rd}' AND \"trade_date\" < '${rdEnd}'` \n- The engine will substitute `${rd}` / `${rdEnd}` based on your chosen\n  `dateFormat` (DATE or TIMESTAMP). \n- Keep the placeholders inside single quotes in SQL (e.g. `'${rd}'`). \n- If you do not include a date predicate, the job will scan the full table (or\n  whatever the query returns). \n- If omitted, the platform will generate a default(vendor compatible) `SELECT * FROM \"<schema>\".\"<table>\"`"},"StandardErrorResponse":{"type":"object","description":"Error response returned by the Data Quality API.","required":["statusCode","errorCode","titleMessage","userMessage"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code corresponding to the error."},"errorCode":{"type":"string","description":"Internal error code representing the specific error type."},"titleMessage":{"type":"string","description":"A brief title summarizing the error."},"userMessage":{"type":"string","description":"Detailed, user-friendly message explaining the error and possible remediation steps."}}}},"responses":{"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/jobRuns":{"get":{"tags":["Job Runs"],"summary":"Search job runs","description":"Returns job runs that user has permission to view with pagination and filters. Results are sorted by the last updated timestamp in descending order.\n\n**Permissions**\n- **Required:** `DATA_QUALITY` and `DATA_QUALITY_JOB_VIEW`\n- **Global bypass:**\n  - `DATA_QUALITY` and `VIEW_PERMISSIONS_VIEW_ALL`\n  - `DATA_QUALITY` and `RESOURCE_MANAGE_ALL`","operationId":"searchJobRuns","parameters":[{"in":"query","name":"jobName","required":false,"description":"Name filter. Behavior depends on `nameMatchMode`.\nBlank or omitted returns all runs.","schema":{"type":"string","maxLength":255,"default":""}},{"in":"query","name":"nameMatchMode","required":false,"description":"How to compare `jobName`:\n  - EXACT - case-sensitive exact match  \n  - CONTAINS - case-insensitive substring match (default)","schema":{"type":"string","enum":["EXACT","CONTAINS"],"default":"CONTAINS"}},{"in":"query","name":"jobType","required":false,"description":"Filter by a job type. If omitted, all types are returned.\n","schema":{"$ref":"#/components/schemas/JobType"}},{"in":"query","name":"status","required":false,"description":"Filter by job run status. Pass multiple values using repeated params. If omitted, all statuses are returned.\n","schema":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/JobRunStatus"}},"style":"form","explode":true},{"in":"query","name":"limit","required":false,"description":"Number of results per page.","schema":{"type":"integer","minimum":0,"maximum":1000,"default":100}},{"in":"query","name":"offset","required":false,"description":"Result offset.","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Successfully retrieved job runs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRunPaginated"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Get job run

> Returns the job run identified by the given run id.\
> \
> \*\*Permissions\*\*\
> \- \*\*Required:\*\* \`DATA\_QUALITY\` and \`DATA\_QUALITY\_JOB\_VIEW\`\
> \- \*\*Global bypass:\*\*\
> &#x20; \- \`DATA\_QUALITY\` and \`VIEW\_PERMISSIONS\_VIEW\_ALL\`\
> &#x20; \- \`DATA\_QUALITY\` and \`RESOURCE\_MANAGE\_ALL\`

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"tags":[{"name":"Job Runs"}],"servers":[{"description":"Data Quality API","url":"/rest/dq/1.0"}],"security":[{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"description":"Collibra REST API authentication using Basic Authentication.","type":"http","scheme":"basic"},"jwtAuth":{"description":"Collibra REST API authentication using JSON Web Token.","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"JobRun":{"type":"object","description":"Individual job run.\n\nFields fall into three populated-when buckets:\n  - **Always populated** (run lifecycle): `jobRunId`, `jobName`,\n    `status`, `runDate`, `activity`, `startedBy`, `startTime`,\n    `updatedAt`.\n  - **Populated for terminal states** (`FINISHED`, `CANCELLED`,\n    `FAILED`) where data is available, otherwise `null`: `endTime`,\n    `executionTimeSeconds`, `score`, `activeMonitors`,\n    `breakingMonitors`, `rowCount`, `executedQuery`.\n  - **Populated when configured / on failure**: `sourceQuery`\n    (only if the job defines one), `exception` (only on `FAILED`).","properties":{"jobRunId":{"type":"string","format":"uuid","description":"Id of the individual job run"},"jobName":{"$ref":"#/components/schemas/JobName"},"runDate":{"$ref":"#/components/schemas/RunDateValue"},"status":{"$ref":"#/components/schemas/JobRunStatus"},"activity":{"$ref":"#/components/schemas/JobActivity"},"exception":{"type":"string","nullable":true,"description":"Job exception message if the run failed"},"startedBy":{"type":"string","format":"uuid","description":"User id who run the job"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated timestamp (UTC)"},"startTime":{"type":"string","format":"date-time","description":"Job start timestamp (UTC)"},"endTime":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp (UTC, ISO 8601) when the run reached a terminal state. Null while in progress."},"executionTimeSeconds":{"type":"integer","format":"int64","minimum":0,"nullable":true,"description":"Wall-clock duration in seconds (`endTime - startTime`). Null while in progress."},"score":{"type":"number","format":"double","minimum":0,"maximum":100,"nullable":true,"description":"Overall data quality score for the run, as a percentage in `[0, 100]`. Null if scoring did not complete."},"activeMonitors":{"type":"integer","format":"int32","minimum":0,"nullable":true,"description":"Count of monitors evaluated during the run. Null if evaluation did not complete."},"breakingMonitors":{"type":"integer","format":"int32","minimum":0,"nullable":true,"description":"Count of monitors that reported a breaking status. Null if evaluation did not complete."},"rowCount":{"type":"integer","format":"int64","minimum":0,"nullable":true,"description":"Number of rows scanned or processed by the run. Null if the data scan did not complete."},"sourceQuery":{"$ref":"#/components/schemas/SourceQuery"},"executedQuery":{"type":"string","nullable":true,"description":"The query actually executed for this run, with `${rd}` /\n`${rdEnd}` substituted using the job's configured `dateFormat`.\nThis is the post-substitution form of `sourceQuery` — the\nschema/table names, predicates, and any literal values it\ncontains are the same surface already exposed via\n`sourceQuery` on `JobDefinition`.\n\nNull if the run failed before substitution."}}},"JobName":{"type":"string","description":"Job name. Allowed characters by default: letters, digits, `_`, `.`, `-`. **Configurable** via the server env variable `VALIDATION_PATTERN_JOB_NAME`. Default pattern: `^[a-zA-Z0-9_.-]+$`.\n","minLength":1,"maxLength":255,"pattern":"^[a-zA-Z0-9_.-]+$"},"RunDateValue":{"description":"Start of the time slice used only when the `sourceQuery` contains the `${rd}` placeholder.\nThe engine substitutes `${rd}` using `jobSettings.dateFormat`:\n  - DATE → `yyyy-MM-dd`\n  - TIMESTAMP → RFC 3339 `yyyy-MM-dd'T'HH:mm:ss'Z'` \n\nIf `sourceQuery` omits `${rd}`, this value does **not** restrict the data scan and\nonly affects the **run’s date** (e.g., run metadata/labeling, scheduling context).","oneOf":[{"$ref":"#/components/schemas/DateOnly"},{"$ref":"#/components/schemas/Rfc3339DateTime"}],"discriminator":{"propertyName":"kind","mapping":{"DATE":"#/components/schemas/DateOnly","TIMESTAMP":"#/components/schemas/Rfc3339DateTime"}}},"DateOnly":{"type":"object","required":["kind","value"],"description":"Calendar date, format yyyy-MM-dd.","properties":{"kind":{"type":"string","pattern":"^DATE$"},"value":{"type":"string","format":"date"}}},"Rfc3339DateTime":{"type":"object","required":["kind","value"],"format":"date-time","description":"RFC 3339 timestamp with timezone offset. The server normalizes all inputs to UTC and responses are returned in UTC (trailing 'Z'), seconds precision.","properties":{"kind":{"type":"string","pattern":"^TIMESTAMP$"},"value":{"type":"string","format":"date-time"}}},"JobRunStatus":{"type":"string","maxLength":255,"description":"Status of an individual job run.\n\nCurrent possible values include:\n  * `WAITING`\n  * `DISPATCHED`\n  * `SETUP`\n  * `RUNNING`\n  * `SENDING`\n  * `FINISHED`\n  * `CANCELLED`\n  * `FAILED`\n  * `UNKNOWN`\n\nAdditional statuses may be introduced in the future."},"JobActivity":{"type":"string","description":"Current activity within the job run.\n\nCurrent possible values include:\n  * `INIT`\n  * `SCHEMA`\n  * `LOAD`\n  * `DISCOVERY`\n  * `PROFILE`\n  * `RULES`\n  * `HISTOGRAMS`\n  * `CORRELATION`\n  * `LAYERS`\n  * `RESULTS`\n  * `ALERTS`\n  * `\"\"` – no activity / idle (legacy representation).\n\nAdditional activities may be introduced in the future. Clients SHOULD treat\nunknown values as “implementation detail” and not fail on them."},"SourceQuery":{"nullable":true,"type":"string","description":"Source SQL for the job. \n\n- If you want to limit the data slice by date/time, **do not hard-code literal\n  dates** in the SQL. Always use the placeholders `${rd}` (start) and `${rdEnd}`\n  (exclusive end), and pass the actual values via the `runDate` / `runDateEnd`\n  fields of the request.  \n  Example pattern: `WHERE \"trade_date\" >= '${rd}' AND \"trade_date\" < '${rdEnd}'` \n- The engine will substitute `${rd}` / `${rdEnd}` based on your chosen\n  `dateFormat` (DATE or TIMESTAMP). \n- Keep the placeholders inside single quotes in SQL (e.g. `'${rd}'`). \n- If you do not include a date predicate, the job will scan the full table (or\n  whatever the query returns). \n- If omitted, the platform will generate a default(vendor compatible) `SELECT * FROM \"<schema>\".\"<table>\"`"},"StandardErrorResponse":{"type":"object","description":"Error response returned by the Data Quality API.","required":["statusCode","errorCode","titleMessage","userMessage"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code corresponding to the error."},"errorCode":{"type":"string","description":"Internal error code representing the specific error type."},"titleMessage":{"type":"string","description":"A brief title summarizing the error."},"userMessage":{"type":"string","description":"Detailed, user-friendly message explaining the error and possible remediation steps."}}}},"responses":{"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"NotFound":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/jobRuns/{jobRunId}":{"get":{"tags":["Job Runs"],"summary":"Get job run","description":"Returns the job run identified by the given run id.\n\n**Permissions**\n- **Required:** `DATA_QUALITY` and `DATA_QUALITY_JOB_VIEW`\n- **Global bypass:**\n  - `DATA_QUALITY` and `VIEW_PERMISSIONS_VIEW_ALL`\n  - `DATA_QUALITY` and `RESOURCE_MANAGE_ALL`","operationId":"getJobRunByRunId","parameters":[{"name":"jobRunId","in":"path","required":true,"description":"Job run id","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRun"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Delete job run

> Deletes the job run identified by the given run id along with all\
> of its per-run results (profile, scan, monitor, rule, and alert\
> outputs). Idempotent — returns 204 when the run does not exist.\
> Refuses with 409 when the run is in progress; cancel it first.\
> \
> \*\*Permissions\*\*\
> \- \*\*Required:\*\* \`DATA\_QUALITY\` and \`DATA\_QUALITY\_JOB\_DELETE\`\
> \- \*\*Global bypass:\*\*\
> &#x20; \- \`DATA\_QUALITY\` and \`RESOURCE\_MANAGE\_ALL\`

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"tags":[{"name":"Job Runs"}],"servers":[{"description":"Data Quality API","url":"/rest/dq/1.0"}],"security":[{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"description":"Collibra REST API authentication using Basic Authentication.","type":"http","scheme":"basic"},"jwtAuth":{"description":"Collibra REST API authentication using JSON Web Token.","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"BadRequest":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Conflict":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}},"schemas":{"StandardErrorResponse":{"type":"object","description":"Error response returned by the Data Quality API.","required":["statusCode","errorCode","titleMessage","userMessage"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code corresponding to the error."},"errorCode":{"type":"string","description":"Internal error code representing the specific error type."},"titleMessage":{"type":"string","description":"A brief title summarizing the error."},"userMessage":{"type":"string","description":"Detailed, user-friendly message explaining the error and possible remediation steps."}}}}},"paths":{"/jobRuns/{jobRunId}":{"delete":{"tags":["Job Runs"],"summary":"Delete job run","description":"Deletes the job run identified by the given run id along with all\nof its per-run results (profile, scan, monitor, rule, and alert\noutputs). Idempotent — returns 204 when the run does not exist.\nRefuses with 409 when the run is in progress; cancel it first.\n\n**Permissions**\n- **Required:** `DATA_QUALITY` and `DATA_QUALITY_JOB_DELETE`\n- **Global bypass:**\n  - `DATA_QUALITY` and `RESOURCE_MANAGE_ALL`","operationId":"deleteJobRun","parameters":[{"name":"jobRunId","in":"path","required":true,"description":"Job run id","schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Run deleted (or already absent)"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Cancel job run

> Cancels the job identified by job run id.\
> \
> \*\*Permissions\*\*\
> \- \*\*Required:\*\* \`DATA\_QUALITY\` and \`DATA\_QUALITY\_JOB\_RUN\`\
> \- \*\*Global bypass:\*\*\
> &#x20; \- \`DATA\_QUALITY\` and \`RESOURCE\_MANAGE\_ALL\`

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"tags":[{"name":"Job Runs"}],"servers":[{"description":"Data Quality API","url":"/rest/dq/1.0"}],"security":[{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"description":"Collibra REST API authentication using Basic Authentication.","type":"http","scheme":"basic"},"jwtAuth":{"description":"Collibra REST API authentication using JSON Web Token.","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"responses":{"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"NotFound":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}},"schemas":{"StandardErrorResponse":{"type":"object","description":"Error response returned by the Data Quality API.","required":["statusCode","errorCode","titleMessage","userMessage"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code corresponding to the error."},"errorCode":{"type":"string","description":"Internal error code representing the specific error type."},"titleMessage":{"type":"string","description":"A brief title summarizing the error."},"userMessage":{"type":"string","description":"Detailed, user-friendly message explaining the error and possible remediation steps."}}}}},"paths":{"/jobRuns/{jobRunId}/cancel":{"post":{"tags":["Job Runs"],"summary":"Cancel job run","description":"Cancels the job identified by job run id.\n\n**Permissions**\n- **Required:** `DATA_QUALITY` and `DATA_QUALITY_JOB_RUN`\n- **Global bypass:**\n  - `DATA_QUALITY` and `RESOURCE_MANAGE_ALL`","operationId":"cancelJob","parameters":[{"name":"jobRunId","in":"path","required":true,"description":"Job run identifier","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Job cancelled successfully. No response body."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Get job-run profile results

> Returns detailed column-level profiling statistics produced by a\
> single job run. Use this to understand the data distribution, type\
> inconsistencies, and format anomalies observed during the run.\
> \
> \*\*Permissions\*\*\
> \- \*\*Required:\*\*\
> &#x20; \- \`DATA\_QUALITY\` (global)\
> &#x20; \- \`DATA\_QUALITY\_JOB\_VIEW\` (resource on the job)\
> \- \*\*Global bypass (either of the following):\*\*\
> &#x20; \- \`DATA\_QUALITY\` and \`VIEW\_PERMISSIONS\_VIEW\_ALL\`\
> &#x20; \- \`DATA\_QUALITY\` and \`RESOURCE\_MANAGE\_ALL\`

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"tags":[{"name":"Job Runs"}],"servers":[{"description":"Data Quality API","url":"/rest/dq/1.0"}],"security":[{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"description":"Collibra REST API authentication using Basic Authentication.","type":"http","scheme":"basic"},"jwtAuth":{"description":"Collibra REST API authentication using JSON Web Token.","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"JobRunProfileResults":{"type":"object","description":"Paginated per-column profiling results captured during a single job\nrun. The header fields (`jobRunId`, `jobName`, `runDate`) identify the\nrun; `results` carries one entry per profiled column for the requested\npage. Results are returned in deterministic order, ascending by column\nname.","required":["results"],"properties":{"jobRunId":{"type":"string","format":"uuid","description":"Unique identifier of the job run that produced these results."},"jobName":{"$ref":"#/components/schemas/JobName"},"runDate":{"allOf":[{"$ref":"#/components/schemas/RunDateValue"},{"description":"The run window of the run that produced these results. Shape\nfollows the job's configured `dateFormat`:\n  * `DATE`      – `{ \"kind\": \"DATE\", \"value\": \"yyyy-MM-dd\" }`\n  * `TIMESTAMP` – `{ \"kind\": \"TIMESTAMP\", \"value\": \"<RFC 3339 in UTC>\" }`"}]},"offset":{"type":"integer","format":"int64","minimum":0,"description":"Index of the first column profile in this page."},"limit":{"type":"integer","format":"int64","minimum":0,"description":"Maximum number of column profiles in this page."},"total":{"type":"integer","format":"int64","minimum":0,"description":"Total number of column profiles available for this run, across all\npages. Only present when the request included `includeTotal=true`."},"results":{"type":"array","description":"One entry per profiled column for the requested page.","items":{"$ref":"#/components/schemas/ColumnProfile"}}}},"JobName":{"type":"string","description":"Job name. Allowed characters by default: letters, digits, `_`, `.`, `-`. **Configurable** via the server env variable `VALIDATION_PATTERN_JOB_NAME`. Default pattern: `^[a-zA-Z0-9_.-]+$`.\n","minLength":1,"maxLength":255,"pattern":"^[a-zA-Z0-9_.-]+$"},"RunDateValue":{"description":"Start of the time slice used only when the `sourceQuery` contains the `${rd}` placeholder.\nThe engine substitutes `${rd}` using `jobSettings.dateFormat`:\n  - DATE → `yyyy-MM-dd`\n  - TIMESTAMP → RFC 3339 `yyyy-MM-dd'T'HH:mm:ss'Z'` \n\nIf `sourceQuery` omits `${rd}`, this value does **not** restrict the data scan and\nonly affects the **run’s date** (e.g., run metadata/labeling, scheduling context).","oneOf":[{"$ref":"#/components/schemas/DateOnly"},{"$ref":"#/components/schemas/Rfc3339DateTime"}],"discriminator":{"propertyName":"kind","mapping":{"DATE":"#/components/schemas/DateOnly","TIMESTAMP":"#/components/schemas/Rfc3339DateTime"}}},"DateOnly":{"type":"object","required":["kind","value"],"description":"Calendar date, format yyyy-MM-dd.","properties":{"kind":{"type":"string","pattern":"^DATE$"},"value":{"type":"string","format":"date"}}},"Rfc3339DateTime":{"type":"object","required":["kind","value"],"format":"date-time","description":"RFC 3339 timestamp with timezone offset. The server normalizes all inputs to UTC and responses are returned in UTC (trailing 'Z'), seconds precision.","properties":{"kind":{"type":"string","pattern":"^TIMESTAMP$"},"value":{"type":"string","format":"date-time"}}},"ColumnProfile":{"type":"object","description":"Profiling statistics for a single column from one job run.","required":["columnName","valueCount","nullCount","emptyCount","uniqueCount"],"properties":{"columnName":{"type":"string","maxLength":255,"description":"Source column name."},"definedType":{"type":"string","nullable":true,"description":"Type declared by the source schema (e.g. `BIGINT`, `VARCHAR(255)`, `DECIMAL`)."},"inferredType":{"type":"string","nullable":true,"description":"Type inferred from the observed values during profiling (e.g. `Int`,\n`String`, `Decimal`, `Long`, `Double`, `Timestamp`). When a column\nholds a mix of types, the value is a comma-separated list ordered\nby detection (e.g. `String, Int`). May differ from `definedType`\nwhen the source schema is wider than the actual data."},"valueCount":{"type":"integer","format":"int64","minimum":0,"description":"Number of non-null, non-empty values observed."},"nullCount":{"type":"integer","format":"int64","minimum":0,"description":"Number of `NULL` values observed."},"emptyCount":{"type":"integer","format":"int64","minimum":0,"description":"Number of empty values (e.g. empty strings) observed."},"uniqueCount":{"type":"integer","format":"int64","minimum":0,"description":"Number of distinct values observed (exact or approximate depending on engine)."},"min":{"type":"string","nullable":true,"description":"Minimum value observed, serialized as a string. Null if no values were observed."},"max":{"type":"string","nullable":true,"description":"Maximum value observed, serialized as a string. Null if no values were observed."},"mean":{"type":"string","nullable":true,"description":"Arithmetic mean (average), serialized as a string. Populated only for numeric columns."},"median":{"type":"string","nullable":true,"description":"Median (50th percentile), serialized as a string. Populated only for numeric columns."},"q1":{"type":"string","nullable":true,"description":"First quartile (25th percentile), serialized as a string. Populated only for numeric columns."},"q3":{"type":"string","nullable":true,"description":"Third quartile (75th percentile), serialized as a string. Populated only for numeric columns."},"topShapes":{"type":"array","nullable":true,"description":"Top observed shape patterns ordered by descending frequency.\nNull if shape analysis did not run.\n\nShapes use a character-class encoding (`#` for digits, `A` for\nletters, etc.).","items":{"$ref":"#/components/schemas/ColumnShape"}}}},"ColumnShape":{"type":"object","description":"A single observed value shape for a column.","required":["pattern","count","percentage"],"properties":{"pattern":{"type":"string","maxLength":255,"description":"The shape pattern (e.g. `######` for six digits)."},"count":{"type":"integer","format":"int64","minimum":0,"description":"Number of values matching this shape."},"percentage":{"type":"number","format":"double","minimum":0,"maximum":100,"description":"Percentage of non-null values matching this shape."}}},"StandardErrorResponse":{"type":"object","description":"Error response returned by the Data Quality API.","required":["statusCode","errorCode","titleMessage","userMessage"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code corresponding to the error."},"errorCode":{"type":"string","description":"Internal error code representing the specific error type."},"titleMessage":{"type":"string","description":"A brief title summarizing the error."},"userMessage":{"type":"string","description":"Detailed, user-friendly message explaining the error and possible remediation steps."}}}},"responses":{"BadRequest":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"NotFound":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/jobRuns/{jobRunId}/profile":{"get":{"tags":["Job Runs"],"operationId":"getJobRunProfile","summary":"Get job-run profile results","description":"Returns detailed column-level profiling statistics produced by a\nsingle job run. Use this to understand the data distribution, type\ninconsistencies, and format anomalies observed during the run.\n\n**Permissions**\n- **Required:**\n  - `DATA_QUALITY` (global)\n  - `DATA_QUALITY_JOB_VIEW` (resource on the job)\n- **Global bypass (either of the following):**\n  - `DATA_QUALITY` and `VIEW_PERMISSIONS_VIEW_ALL`\n  - `DATA_QUALITY` and `RESOURCE_MANAGE_ALL`","parameters":[{"name":"jobRunId","in":"path","required":true,"description":"Job run identifier","schema":{"type":"string","format":"uuid"}},{"in":"query","name":"limit","required":false,"description":"Maximum number of column profiles per page.","schema":{"type":"integer","minimum":0,"maximum":500,"default":100}},{"in":"query","name":"offset","required":false,"description":"Index of the first column profile to return.","schema":{"type":"integer","minimum":0,"default":0}},{"in":"query","name":"includeTotal","required":false,"description":"When `true`, the response includes `total` (the count of columns\navailable across all pages). Omitted by default to avoid the\nadditional count query.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRunProfileResults"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Get job-run monitor results

> Returns the results of the monitors for a job run.\
> \
> \*\*Permissions\*\*\
> \- \*\*Required:\*\* \`DATA\_QUALITY\` and \`DATA\_QUALITY\_JOB\_VIEW\`\
> \- \*\*Global bypass:\*\*\
> &#x20; \- \`DATA\_QUALITY\` and \`VIEW\_PERMISSIONS\_VIEW\_ALL\`\
> &#x20; \- \`DATA\_QUALITY\` and \`RESOURCE\_MANAGE\_ALL\`

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"tags":[{"name":"Job Runs"},{"name":"Monitor Results"}],"servers":[{"description":"Data Quality API","url":"/rest/dq/1.0"}],"security":[{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"description":"Collibra REST API authentication using Basic Authentication.","type":"http","scheme":"basic"},"jwtAuth":{"description":"Collibra REST API authentication using JSON Web Token.","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"JobRunId":{"name":"jobRunId","in":"path","required":true,"description":"Job run identifier (UUID)","schema":{"type":"string","format":"uuid"}}},"schemas":{"JobRunMonitorsResult":{"type":"object","description":"Combined list of all monitor results for a job run.","required":["adaptiveMonitors","customMonitors"],"properties":{"adaptiveMonitors":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/AdaptiveMonitorResult"}},"customMonitors":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/CustomMonitorResult"}}}},"AdaptiveMonitorResult":{"type":"object","description":"The outcome of an adaptive monitor for a specific job run.","required":["monitorName","monitorType","state"],"properties":{"monitorName":{"type":"string","description":"Name of the monitor."},"monitorType":{"$ref":"#/components/schemas/AdaptiveMonitorType"},"primaryColumn":{"type":"string","description":"Column the monitor applies to. \"ALL\" for dataset-level monitors."},"state":{"$ref":"#/components/schemas/MonitorState"},"observedValue":{"type":"string","description":"The measured metric value for this run."},"expectedMin":{"type":"string","description":"Lower bound of the adaptive expected range."},"expectedMax":{"type":"string","description":"Upper bound of the adaptive expected range."},"tolerance":{"$ref":"#/components/schemas/AdaptiveMonitorTolerance"},"isSuppressed":{"type":"boolean","description":"Whether findings for this result are suppressed."},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions associated with this monitor type.","items":{"type":"string"}}}},"AdaptiveMonitorType":{"type":"string","description":"Identifies the adaptive monitor type. Dataset-level monitors apply to the whole dataset; column-level monitors apply per column.\n* 'ROW_COUNT'       - Dataset level count of rows * 'NULL_VALUES'     - Row level count of null values * 'EMPTY_FIELDS'    - Row level count of string empty values * 'UNIQUENESS'      - Row level count of unique values * 'MIN'             - Row level minimum value * 'MAX'             - Row level maximum value * 'MEAN'            - Row level mean value (numerics only) * 'EXECUTION_TIME'  - Dataset level execution time of job * 'SHIFT'           - Column level type ratio * 'SCHEMA_CHANGE'   - Dataset level change in the source schema\n"},"MonitorState":{"type":"string","description":"The current state of a monitor for a given job run.\nThe current available values: * 'PASSING'    — observed value is within expected bounds * 'BREAKING'   — observed value is outside expected bounds * 'SUPPRESSED' — findings are suppressed and excluded from scoring * 'SKIPPED'    — execution of monitor skipped * 'EXCEPTION'  — an exception was encountered executing the monitor\n"},"AdaptiveMonitorTolerance":{"type":"string","description":"Controls how aggressively the adaptive boundary model updates its expected range.\nThe current available values: * 'NARROW' - most strict (slowest to update) * 'NEUTRAL' - default tolerance * 'WIDE' - most lenient (fastest to update).\n","default":"NEUTRAL"},"CustomMonitorResult":{"type":"object","description":"The outcome of a custom monitor for a specific job run.","required":["monitorName","state","score"],"properties":{"monitorName":{"type":"string","description":"Monitor name."},"state":{"$ref":"#/components/schemas/MonitorState"},"score":{"type":"number","format":"double","minimum":0,"maximum":100,"description":"Score based on sum of points per breaking row (0 - 100)."},"breakingPercentage":{"type":"number","format":"double","minimum":0,"maximum":100,"description":"Percentage of records breaking."},"rowsPassing":{"type":"integer","description":"Number of rows that passed."},"rowsBreaking":{"type":"integer","description":"Number of rows that failed."},"rowsTotal":{"type":"integer","description":"Number of total rows."},"exception":{"type":"string","description":"Error message captured when the monitor query failed to execute. Empty when the monitor ran successfully."},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions associated with this monitor.","items":{"type":"string"}},"tolerance":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of tolerated failures before this monitor is flagged as BREAKING (mirrors the value supplied at monitor configuration time)."}}},"StandardErrorResponse":{"type":"object","description":"Error response returned by the Data Quality API.","required":["statusCode","errorCode","titleMessage","userMessage"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code corresponding to the error."},"errorCode":{"type":"string","description":"Internal error code representing the specific error type."},"titleMessage":{"type":"string","description":"A brief title summarizing the error."},"userMessage":{"type":"string","description":"Detailed, user-friendly message explaining the error and possible remediation steps."}}}},"responses":{"BadRequest":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"NotFound":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/jobRuns/{jobRunId}/monitors":{"get":{"tags":["Job Runs","Monitor Results"],"operationId":"getJobRunMonitors","summary":"Get job-run monitor results","description":"Returns the results of the monitors for a job run.\n\n**Permissions**\n- **Required:** `DATA_QUALITY` and `DATA_QUALITY_JOB_VIEW`\n- **Global bypass:**\n  - `DATA_QUALITY` and `VIEW_PERMISSIONS_VIEW_ALL`\n  - `DATA_QUALITY` and `RESOURCE_MANAGE_ALL`","parameters":[{"$ref":"#/components/parameters/JobRunId"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRunMonitorsResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```

## Bulk update job-run monitor states

> Applies \`pass\` or \`suppress\` operations to multiple monitor results in a single job run.\
> \`PASS\` is valid only for adaptive monitors and retrains them.\
> \`SUPPRESS\` is valid for adaptive and custom monitors, and retrains adaptive monitors.\
> \
> \*\*Permissions\*\*\
> \- \*\*Required:\*\* \`DATA\_QUALITY\` and \`DATA\_QUALITY\_JOB\_EDIT\`\
> \- \*\*Global bypass:\*\*\
> &#x20; \- \`DATA\_QUALITY\` and \`RESOURCE\_MANAGE\_ALL\`

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"tags":[{"name":"Job Runs"},{"name":"Monitor Results"}],"servers":[{"description":"Data Quality API","url":"/rest/dq/1.0"}],"security":[{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"basicAuth":{"description":"Collibra REST API authentication using Basic Authentication.","type":"http","scheme":"basic"},"jwtAuth":{"description":"Collibra REST API authentication using JSON Web Token.","type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"JobRunId":{"name":"jobRunId","in":"path","required":true,"description":"Job run identifier (UUID)","schema":{"type":"string","format":"uuid"}}},"schemas":{"JobRunMonitorOperationsRequest":{"type":"object","description":"Bulk request to apply pass/suppress operations to monitor results of a job run.","required":["operations"],"properties":{"operations":{"type":"array","minItems":1,"maxItems":500,"description":"List of monitor operations to apply.","items":{"$ref":"#/components/schemas/JobRunMonitorOperation"}}}},"JobRunMonitorOperation":{"type":"object","description":"A single operation to apply to a monitor result for a job run.","required":["monitorName","operation"],"properties":{"monitorName":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[a-zA-Z0-9_-]+$","description":"Unique monitor name."},"operation":{"type":"string","enum":["PASS","SUPPRESS"],"description":"Operation to apply to the monitor result:\n* `PASS`     — Set state to passing and retrain (adaptive monitors only).\n* `SUPPRESS` — Set state to suppressed and retrain adaptive monitors."}}},"StandardErrorResponse":{"type":"object","description":"Error response returned by the Data Quality API.","required":["statusCode","errorCode","titleMessage","userMessage"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code corresponding to the error."},"errorCode":{"type":"string","description":"Internal error code representing the specific error type."},"titleMessage":{"type":"string","description":"A brief title summarizing the error."},"userMessage":{"type":"string","description":"Detailed, user-friendly message explaining the error and possible remediation steps."}}}},"responses":{"BadRequest":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"NotFound":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/jobRuns/{jobRunId}/monitors":{"put":{"tags":["Job Runs","Monitor Results"],"operationId":"updateJobRunMonitors","summary":"Bulk update job-run monitor states","description":"Applies `pass` or `suppress` operations to multiple monitor results in a single job run.\n`PASS` is valid only for adaptive monitors and retrains them.\n`SUPPRESS` is valid for adaptive and custom monitors, and retrains adaptive monitors.\n\n**Permissions**\n- **Required:** `DATA_QUALITY` and `DATA_QUALITY_JOB_EDIT`\n- **Global bypass:**\n  - `DATA_QUALITY` and `RESOURCE_MANAGE_ALL`","parameters":[{"$ref":"#/components/parameters/JobRunId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRunMonitorOperationsRequest"}}}},"responses":{"204":{"description":"No Content"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```
