> 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/models.md).

# Models

## The Settings object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"Settings":{"type":"object","additionalProperties":false,"description":"Current values of all global DQ settings exposed on the public API.","required":["passingThreshold","failingThreshold","lookbackLimit","observationLimit","previewLimit","breakRecordsLimit","ruleRunTimeLimit","jobLogRetentionHours","platformLogRetentionHours","mapToPrimaryColumn","mandatoryPrimaryRuleColumn","mandatoryRuleDimension","showDetailedException"],"properties":{"passingThreshold":{"type":"integer","minimum":1,"maximum":100,"description":"Global passing score threshold. Scores at or above this value are considered passing (green). Must be greater than failingThreshold.\n"},"failingThreshold":{"type":"integer","minimum":1,"maximum":100,"description":"Global failing score threshold. Scores below this value are considered failing (red). Must be less than passingThreshold.\n"},"lookbackLimit":{"type":"integer","minimum":1,"maximum":30,"description":"Maximum number of historical rule runs used when computing DQ scores.\n"},"observationLimit":{"type":"integer","minimum":1,"maximum":500,"description":"Maximum number of rows processed per rule execution."},"previewLimit":{"type":"integer","minimum":1,"maximum":500,"description":"Maximum number of results shown in the dataset overview and rule workbench. UI-only — does not affect what is stored. Recommended values are 25, 50, 100, 250, or 500. If a different value is provided, it is rounded to the closest recommended value.\n"},"breakRecordsLimit":{"type":"integer","minimum":1,"maximum":500,"description":"Maximum number of records returned when fetching break records for a rule. UI-only — does not affect what is stored. Recommended values are 25, 50, 100, 250, or 500. If a different value is provided, it is rounded to the closest recommended value.\n"},"ruleRunTimeLimit":{"type":"integer","minimum":1,"maximum":90,"description":"Maximum time in minutes a rule is allowed to run before it is automatically timed out.\n"},"jobLogRetentionHours":{"type":"integer","minimum":24,"maximum":720,"multipleOf":24,"description":"Job log retention period in hours. Must be a multiple of 24 (minimum 1 day, maximum 30 days).\n"},"platformLogRetentionHours":{"type":"integer","minimum":24,"maximum":720,"multipleOf":24,"description":"Platform log retention period in hours. Must be a multiple of 24 (minimum 1 day, maximum 30 days).\n"},"mapToPrimaryColumn":{"type":"boolean","description":"When enabled, rules are automatically mapped to the primary column of the dataset.\n"},"mandatoryPrimaryRuleColumn":{"type":"boolean","description":"When enabled, a primary column must be set on every rule before it can be saved.\n"},"mandatoryRuleDimension":{"type":"boolean","description":"When enabled, a dimension must be assigned to every rule before it can be saved.\n"},"showDetailedException":{"type":"boolean","description":"When enabled, detailed exception stack traces are included in error responses. Recommended for non-production environments only.\n"}}}}}}
```

## The SettingsPatch object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"SettingsPatch":{"type":"object","additionalProperties":false,"description":"Partial update for global DQ settings. Only fields present in the request\nbody are updated; absent fields are left unchanged.\n","properties":{"passingThreshold":{"type":"integer","minimum":1,"maximum":100,"description":"New value for the passingThreshold setting. Must be greater than failingThreshold."},"failingThreshold":{"type":"integer","minimum":1,"maximum":100,"description":"New value for the failingThreshold setting. Must be less than passingThreshold."},"lookbackLimit":{"type":"integer","minimum":1,"maximum":30,"description":"New value for the lookbackLimit setting."},"observationLimit":{"type":"integer","minimum":1,"maximum":500,"description":"New value for the observationLimit setting."},"previewLimit":{"type":"integer","minimum":1,"maximum":500,"description":"New value for the previewLimit setting. Recommended values are 25, 50, 100, 250, or 500. Other values are rounded to the closest recommended value.\n"},"breakRecordsLimit":{"type":"integer","minimum":1,"maximum":500,"description":"New value for the breakRecordsLimit setting. Recommended values are 25, 50, 100, 250, or 500. Other values are rounded to the closest recommended value.\n"},"ruleRunTimeLimit":{"type":"integer","minimum":1,"maximum":90,"description":"New value for the ruleRunTimeLimit setting."},"jobLogRetentionHours":{"type":"integer","minimum":24,"maximum":720,"multipleOf":24,"description":"New value for the jobLogRetentionHours setting."},"platformLogRetentionHours":{"type":"integer","minimum":24,"maximum":720,"multipleOf":24,"description":"New value for the platformLogRetentionHours setting."},"mapToPrimaryColumn":{"type":"boolean","description":"New value for the mapToPrimaryColumn setting."},"mandatoryPrimaryRuleColumn":{"type":"boolean","description":"New value for the mandatoryPrimaryRuleColumn setting."},"mandatoryRuleDimension":{"type":"boolean","description":"New value for the mandatoryRuleDimension setting."},"showDetailedException":{"type":"boolean","description":"New value for the showDetailedException setting."}}}}}}
```

## The StandardErrorResponse object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"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."}}}}}}
```

## The JobDefinition object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"JobDefinition":{"type":"object","properties":{"jobName":{"$ref":"#/components/schemas/JobName"},"jobType":{"$ref":"#/components/schemas/JobType"},"sourceQuery":{"$ref":"#/components/schemas/SourceQuery"},"runDate":{"$ref":"#/components/schemas/RunDateValue"},"runDateEnd":{"$ref":"#/components/schemas/RunDateEndValue"},"dataLocation":{"$ref":"#/components/schemas/DataLocation"},"jobSettings":{"$ref":"#/components/schemas/JobSettings"},"monitoringSettings":{"$ref":"#/components/schemas/JobMonitoringSettings"},"notifications":{"$ref":"#/components/schemas/JobNotifications"},"schedulingSettings":{"$ref":"#/components/schemas/SchedulingSettings"}}},"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_.-]+$"},"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"},"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>\"`"},"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."},"DataLocation":{"description":"Identifies where the job reads data from. Combines the platform connection and the specific catalog/schema/table location inside that connection.\n","required":["edgeSiteName","edgeConnectionName","dataSourceName","schemaName","tableName"],"type":"object","properties":{"edgeSiteName":{"description":"Edge site name","type":"string"},"edgeConnectionName":{"type":"string","description":"Edge connection name"},"dataSourceName":{"type":"string","description":"Data source (database/catalog) name"},"databaseProductName":{"$ref":"#/components/schemas/DatabaseProduct"},"schemaName":{"description":"Schema name","type":"string"},"tableName":{"description":"Table name","type":"string"}}},"DatabaseProduct":{"type":"string","readOnly":true,"description":"The database vendor associated with the connection.\n\nCurrent possible values include:\n    * `ATHENA`\n    * `BIGQUERY`\n    * `DATABRICKS`\n    * `DB2`\n    * `MYSQL`\n    * `POSTGRES`\n    * `REDSHIFT`\n    * `SAP`\n    * `SNOWFLAKE`\n    * `SQLSERVER`\n    * `TRINO`\n\n  Additional values will be introduced in the future."},"JobSettings":{"type":"object","description":"Job-level execution settings, including date format and pushdown/pullup tuning. Pullup jobs are available only when the Pullup preview feature is enabled.\n","properties":{"dateFormat":{"$ref":"#/components/schemas/DateFormat"},"pushdownSettings":{"$ref":"#/components/schemas/PushdownSettings"},"pullupSettings":{"$ref":"#/components/schemas/PullupSettings"}}},"DateFormat":{"type":"string","default":"DATE","description":"Date format used for `runDate` / `runDateEnd`.\nSupported values:\n  - DATE -> yyyy-MM-dd \n  - TIMESTAMP -> RFC 3339 timestamp, example - 2025-10-23T13:50:02Z","enum":["DATE","TIMESTAMP"]},"PushdownSettings":{"type":"object","nullable":true,"description":"Settings for pushdown execution. Controls concurrency used by the source system connection.\nProvide this object only when the job's jobType is PUSHDOWN. Omit or set to null for non-pushdown jobs.","properties":{"connections":{"type":"integer","minimum":1,"default":10,"description":"Number of concurrent source connections\n"},"threads":{"type":"integer","minimum":1,"default":5,"description":"Worker threads per connection for pushdown queries\n"}}},"PullupSettings":{"type":"object","nullable":true,"description":"Settings for pullup execution. Controls partitioning and Spark sizing.\nProvide this object only when the job's jobType is PULLUP. Omit or set to null for non-pullup jobs.\n\nPullup functionality is available only when the Pullup preview feature is enabled.","properties":{"loadOptions":{"$ref":"#/components/schemas/LoadOptions"},"sparkJobSizing":{"$ref":"#/components/schemas/SparkJobSizing"},"sparkSqlProperties":{"type":"object","nullable":true,"description":"Arbitrary Spark SQL session properties as key/value pairs\n","additionalProperties":{"type":"string"}}}},"LoadOptions":{"type":"object","nullable":true,"description":"Data loading options applied when reading from the source\n","properties":{"numPartitions":{"type":"integer","minimum":0,"default":0,"description":"Number of Spark input partitions\n"},"parallelJdbcOptions":{"$ref":"#/components/schemas/ParallelJdbcOptions"}}},"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false},"SparkJobSizing":{"type":"object","nullable":true,"description":"Optional manual sizing for Spark resources.\n\nIf this object is **omitted or null**, the platform automatically selects\nSpark resources based on the source query.","properties":{"numExecutors":{"type":"integer","minimum":1,"description":"Number of executors to use (upper bound).","default":1},"driverCores":{"type":"integer","minimum":1,"description":"Number of driver CPU cores.","default":1},"numExecutorCores":{"type":"integer","minimum":1,"description":"Number of CPU cores per executor.","default":1},"executorMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Maximum memory per executor in GB.","default":1}]},"driverMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Driver memory in GB.","default":1}]},"memoryOverheadGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Additional off-heap memory per executor in GB.","nullable":true,"default":null}]}},"additionalProperties":false},"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"},"JobMonitoringSettings":{"type":"object","description":"Monitoring configuration for the job.  This structure is designed for future extensibility to include additional monitor types.","properties":{"adaptiveMonitors":{"$ref":"#/components/schemas/AdaptiveMonitors"},"customMonitors":{"type":"array","maxItems":65535,"items":{"$ref":"#/components/schemas/CustomMonitors"}}}},"AdaptiveMonitors":{"type":"object","description":"Feature toggles for adaptive monitors computed during profiling. All data quality jobs always run profiling with data type detection and schema-change checks enabled.\n","properties":{"descriptiveStatistics":{"type":"boolean","default":false,"description":"Show descriptive statistics in profiling results (e.g., count, min, mean, max). Note: may expose sensitive values such as minimum/maximum. If disabled, all column values are masked in the profiling results.\n"},"emptyFields":{"type":"boolean","default":true,"description":"Detect changes in the number of empty values in numeric columns.\n"},"executionTime":{"type":"boolean","default":false,"description":"Track changes in total execution time of the data job.\n"},"max":{"type":"boolean","default":false,"description":"Detect changes in the highest value across numeric columns.\n"},"mean":{"type":"boolean","default":false,"description":"Detect changes in the average (mean) value across numeric columns.\n"},"min":{"type":"boolean","default":false,"description":"Detect changes in the lowest value across numeric columns.\n"},"nullValues":{"type":"boolean","default":true,"description":"Detect changes in the number of NULL values across all columns.\n"},"rowCount":{"type":"boolean","default":true,"description":"Track changes in the total number of rows.\n"},"uniqueness":{"type":"boolean","default":true,"description":"Track changes in the number of distinct values across all columns.\n"},"settings":{"$ref":"#/components/schemas/AdaptiveMonitorSettings"}}},"AdaptiveMonitorSettings":{"type":"object","description":"Optional learning/tuning parameters applied to the above monitors.\n","properties":{"dataLookBack":{"type":"integer","minimum":0,"default":10,"description":"Number of historical runs to consider when detecting changes (0 = no look back).\n"},"learningPhase":{"type":"integer","minimum":0,"default":4,"description":"Number of initial runs used to learn a baseline before signaling changes (0 = no learning phase).    \n"}}},"CustomMonitors":{"type":"object","description":"A user-defined custom data quality monitor.","required":["monitorName","customQuery"],"properties":{"monitorName":{"type":"string","description":"Unique monitor name.","pattern":"^[a-zA-Z0-9_-]+$","minLength":1,"maxLength":255},"customQuery":{"type":"string","description":"The SQL query."},"filterQuery":{"type":"string","description":"Optional SQL filter clause applied to the monitor."},"primaryColumn":{"type":"string","description":"Column the monitor is scoped to."},"description":{"type":"string","description":"Human-readable description of the monitor.","maxLength":256},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions this monitor measures.","items":{"type":"string"}},"notifications":{"type":"array","maxItems":500,"description":"Alert notification configurations.","items":{"$ref":"#/components/schemas/CustomMonitorNotification"}},"tolerance":{"type":"integer","description":"Number as a percentage of tolerated failures before flagging the monitor as breaking.","minimum":0,"maximum":100},"isActive":{"type":"boolean","description":"Whether the monitor is active."},"isSuppressed":{"type":"boolean","description":"Whether the monitor is suppressed."}}},"CustomMonitorNotification":{"type":"object","description":"Alert notification configuration attached to a custom monitor.","required":["notificationType","enabled","message","name"],"properties":{"notificationType":{"$ref":"#/components/schemas/CustomMonitorNotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom notification message.","maxLength":256},"channels":{"type":"array","maxItems":500,"description":"Channels to send out notifications.","items":{"$ref":"#/components/schemas/NotificationChannel"}},"name":{"type":"string","description":"Unique identifier for this notification entry."}}},"CustomMonitorNotificationType":{"type":"string","description":"Determines when a notification is triggered.\nThe current available values: * 'PASSING'   — monitor transitions to a passing state * 'BREAKING'  — monitor fails * 'EXCEPTION' — monitor encounters an execution error\n"},"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true},"JobNotifications":{"type":"object","description":"Controls which events trigger a notification, which channels deliver them, and what message is sent. This schema is **channel-extensible**: it starts with EMAIL and will be updated in future versions to support additional channels (e.g., Slack) without breaking existing clients.\n","properties":{"notificationOptions":{"type":"array","description":"Per-event settings. Add one item per event to monitor.","items":{"$ref":"#/components/schemas/NotificationOption"}},"globalMessage":{"type":"string","description":"Default message template when `useIndividualMessages` is false."},"useIndividualMessages":{"type":"boolean","description":"If true, use each option's `message`; otherwise use `globalMessage`."},"channels":{"type":"array","minItems":1,"description":"Delivery channels and their destinations","items":{"$ref":"#/components/schemas/NotificationChannel"}}},"required":["notificationOptions","channels"]},"NotificationOption":{"type":"object","description":"Configuration for a single notification event.\n","required":["notificationType","enabled"],"properties":{"notificationType":{"$ref":"#/components/schemas/NotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom message for this notification. Used when `useIndividualMessages` is `true`. If omitted or blank, the service falls back to `globalMessage`, if that is also blank, a system default template is used.\n"},"quantity":{"type":"integer","minimum":0,"nullable":true,"description":"Threshold used **only** for specific types:  \n  - `ROWS_LESS_THAN_LIMIT` – minimum expected row count.  \n  - `RUNS_WITHOUT_DATA` – number of consecutive empty runs (N).  \n  - `DAYS_WITHOUT_DATA` – number of days with no data (N).  \n  - `SCORE_LESS_THAN_LIMIT` – minimum acceptable score.  \n  - `RUN_TIME_MORE_THEN_LIMIT` – maximum allowed runtime in minutes.  \nIgnored for other types."}}},"NotificationType":{"type":"string","description":"The event that triggers this notification.\n\nCurrent possible values include:\n  * `JOB_FAILED`            – sent when a job run fails.\n  * `JOB_COMPLETED`         – sent when a job run finishes successfully.\n  * `ROWS_LESS_THAN_LIMIT`  – sent when produced row count is below a limit.\n  * `RUNS_WITHOUT_DATA`     – sent after N consecutive runs produced no data.\n  * `DAYS_WITHOUT_DATA`     – sent when no data was produced for N days.\n  * `SCORE_LESS_THAN_LIMIT` – sent when quality score is below a limit.\n  * `RUN_TIME_MORE_THEN_LIMIT` – sent when runtime exceeds a limit (in minutes).\n\nAdditional notification types may be introduced in the future."},"SchedulingSettings":{"nullable":true,"description":"Controls when a scheduled job runs and how `runDate` is adjusted. Exactly **one** schedule mode is allowed. **Optional** If omitted or null, the job will not be scheduled.\n","oneOf":[{"$ref":"#/components/schemas/SchedulingHourly"},{"$ref":"#/components/schemas/SchedulingDaily"},{"$ref":"#/components/schemas/SchedulingMonthly"}],"discriminator":{"propertyName":"schedulerMode","mapping":{"HOURLY":"#/components/schemas/SchedulingHourly","DAILY":"#/components/schemas/SchedulingDaily","MONTHLY":"#/components/schemas/SchedulingMonthly"}}},"SchedulingHourly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["hourly","schedulerMode"],"description":"Hourly schedule configuration. If scheduleRunTime is set \"14:30:00\", the job runs at 14:30, 15:30, 16:30, etc.","properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `HOURLY`."},"hourly":{"type":"object","description":"Hourly schedule rules.","required":["hourlyOffset"],"properties":{"hourlyOffset":{"type":"string","description":"Run-date offset in hours relative to the scheduled time.\n\nCurrent possible values include:\n  * `SCHEDULED` – use the scheduled date/time.\n  * `ONE_HOUR` – run date is 1 hour before the scheduled time.\n  * `TWO_HOURS` – run date is 2 hours before the scheduled time.\n\nAdditional values MAY be added in future versions."}}}}}]},"SchedulingBase":{"type":"object","required":["isActive","scheduledRunTime","schedulerMode"],"properties":{"isActive":{"type":"boolean","description":"Enable/disable the schedule (disabled schedules do not trigger runs)."},"scheduledRunTime":{"type":"string","description":"Time of day in **UTC**, format `HH:mm:ss`.  (24 hours) Example: `14:10:00` means the job starts at 14:10:00 UTC.\n"},"schedulerMode":{"type":"string","description":"Schedule type.\n\nCurrent possible values:\n  * `HOURLY`\n  * `DAILY`\n  * `MONTHLY`\n\nAdditional modes MAY be added in future versions."}}},"SchedulingDaily":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["daily","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `DAILY`."},"daily":{"type":"object","description":"Daily schedule rules.","required":["dailyOffset","daysOfWeek"],"properties":{"dailyOffset":{"type":"string","description":"Run-date offset in days relative to the scheduled day.\n\nCurrent possible values include:\n  * `SCHEDULED`\n  * `ONE_DAY`\n  * `TWO_DAYS`\n  * `THREE_DAYS`\n  * `FOUR_DAYS`\n  * `FIVE_DAYS`\n  * `SIX_DAYS`\n  * `SEVEN_DAYS`\n\nAdditional values MAY be added in future versions."},"daysOfWeek":{"type":"array","minItems":1,"items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]},"description":"Days of week to run."}}}}}]},"SchedulingMonthly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["monthly","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `MONTHLY`."},"monthly":{"type":"object","description":"Monthly schedule rules.","required":["monthlyRepeat","monthlyOffset"],"properties":{"monthlyRepeat":{"type":"string","description":"Which day of the month to run the job on.\n\nCurrent possible values:\n  * `FIRST` – first day of the month\n  * `LAST`  – last day of the month\n  * `DAY`   – specific calendar day (requires `dayNumber` in 1–31 range)\n\nAdditional values MAY be added in future versions."},"monthlyOffset":{"type":"string","description":"Run-date offset applied to the scheduled monthly day.\n\nCurrent possible values include:\n  * `SCHEDULED`              - use the scheduled date\n  * `FIRST_OF_CURRENT_MONTH` - first day of the current month\n  * `LAST_OF_CURRENT_MONTH`  - last day of the current month\n  * `FIRST_OF_PRIOR_MONTH`   - first day of the prior month\n  * `LAST_OF_PRIOR_MONTH`    - last day of the prior month\n\nAdditional values may be added in future versions."},"dayNumber":{"type":"integer","minimum":1,"maximum":31,"nullable":true,"description":"Required when `monthlyRepeat = DAY`."}}}}}]}}}}
```

## The JobDefinitionUpdateRequest object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"JobDefinitionUpdateRequest":{"type":"object","properties":{"jobName":{"type":"string","description":"The name of an existing job definition to update.\nMust be identical to the `{jobName}` path parameter."},"sourceQuery":{"$ref":"#/components/schemas/SourceQuery"},"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**. May be omitted or set to null.\nIf not provided, no updates will be made to existing run date."}]},"runDateEnd":{"$ref":"#/components/schemas/RunDateEndValue"},"dataLocation":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/DataLocation"},{"description":"Data location details for the job, including edge site, connection, data source, schema, and table.\nIf table was moved/renamed, provide the new details here.\n\n**Optional**. May be omitted or set to null.\nIf not provided, no updates will be made to existing data location."}]},"jobSettings":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/JobSettingsPatch"},{"description":"Job-level execution settings. \n\n**Optional**. May be omitted or set to null.\nIf not provided, no updates will be made to existing job settings."}]},"monitoringSettings":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/JobMonitoringSettingsPatch"},{"description":"Monitoring configuration for adaptive and custom monitors. \nThis structure is designed for future extensibility to include additional monitor types.  \n\n**Optional**. May be omitted or set to null.\nIf not provided, no updates will be made to existing monitoring settings."}]},"notifications":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/JobNotifications"},{"description":"Notification configuration for a job. Controls which events trigger a notification, who receives it, \nand which message is sent.\n\n**Optional**. May be omitted or set to null.\nIf not provided, no updates will be made to existing notifications."}]},"schedulingSettings":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/SchedulingSettings"},{"description":"Controls when a scheduled job runs and how the runDate is adjusted by schedule-specific offsets. \nThe scheduler runs at the given UTC time and applies the selected mode (HOURLY/DAILY/MONTHLY).\n\n**Optional**. May be omitted or set to null.\nIf not provided, no updates will be made to existing scheduling settings."}]}}},"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>\"`"},"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."},"DataLocation":{"description":"Identifies where the job reads data from. Combines the platform connection and the specific catalog/schema/table location inside that connection.\n","required":["edgeSiteName","edgeConnectionName","dataSourceName","schemaName","tableName"],"type":"object","properties":{"edgeSiteName":{"description":"Edge site name","type":"string"},"edgeConnectionName":{"type":"string","description":"Edge connection name"},"dataSourceName":{"type":"string","description":"Data source (database/catalog) name"},"databaseProductName":{"$ref":"#/components/schemas/DatabaseProduct"},"schemaName":{"description":"Schema name","type":"string"},"tableName":{"description":"Table name","type":"string"}}},"DatabaseProduct":{"type":"string","readOnly":true,"description":"The database vendor associated with the connection.\n\nCurrent possible values include:\n    * `ATHENA`\n    * `BIGQUERY`\n    * `DATABRICKS`\n    * `DB2`\n    * `MYSQL`\n    * `POSTGRES`\n    * `REDSHIFT`\n    * `SAP`\n    * `SNOWFLAKE`\n    * `SQLSERVER`\n    * `TRINO`\n\n  Additional values will be introduced in the future."},"JobSettingsPatch":{"type":"object","nullable":true,"properties":{"dateFormat":{"$ref":"#/components/schemas/DateFormatPatch"},"pushdownSettings":{"$ref":"#/components/schemas/PushdownSettingsPatch"},"pullupSettings":{"$ref":"#/components/schemas/PullupSettingsPatch"}}},"DateFormatPatch":{"type":"string","nullable":true,"description":"Date format used for `runDate` / `runDateEnd`.\nSupported values:\n  - DATE -> yyyy-MM-dd \n  - TIMESTAMP -> RFC 3339 timestamp, example - 2025-10-23T13:50:02Z","enum":["DATE","TIMESTAMP"]},"PushdownSettingsPatch":{"type":"object","nullable":true,"description":"Settings for pushdown execution. Controls concurrency used by the source system connection.\nProvide this object only when the job's jobType is PUSHDOWN. Omit or set to null for non-pushdown jobs.","properties":{"connections":{"type":"integer","description":"Number of concurrent source connections\n","minimum":1,"nullable":true},"threads":{"type":"integer","description":"Worker threads per connection for pushdown queries\n","minimum":1,"nullable":true}}},"PullupSettingsPatch":{"type":"object","nullable":true,"description":"Settings for pullup execution. Controls partitioning and Spark sizing.\nProvide this object only when the job's jobType is PULLUP. Omit or set to null for non-pullup jobs.\n\nPullup functionality is available only when the Pullup preview feature is enabled.","properties":{"loadOptions":{"$ref":"#/components/schemas/LoadOptionsPatch"},"sparkJobSizing":{"$ref":"#/components/schemas/SparkJobSizingPatch"},"sparkSqlProperties":{"type":"object","nullable":true,"description":"Arbitrary Spark SQL session properties as key/value pairs\n","additionalProperties":{"type":"string"}}}},"LoadOptionsPatch":{"type":"object","nullable":true,"description":"Data loading options applied when reading from the source\n","properties":{"numPartitions":{"type":"integer","nullable":true,"minimum":0,"description":"Number of Spark input partitions\n"},"parallelJdbcOptions":{"$ref":"#/components/schemas/ParallelJdbcOptions"}}},"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false},"SparkJobSizingPatch":{"type":"object","nullable":true,"description":"Optional manual sizing for Spark resources.\n\nIf this object is **omitted or null**, the platform automatically selects\nSpark resources based on the source query.","properties":{"numExecutors":{"type":"integer","minimum":1,"description":"Number of executors to use (upper bound)."},"driverCores":{"type":"integer","minimum":1,"description":"Number of driver CPU cores."},"numExecutorCores":{"type":"integer","minimum":1,"description":"Number of CPU cores per executor."},"executorMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Maximum memory per executor in GB."}]},"driverMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Driver memory in GB."}]},"memoryOverheadGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Additional off-heap memory per executor in GB.","nullable":true}]}},"additionalProperties":false},"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"},"JobMonitoringSettingsPatch":{"type":"object","description":"Monitoring configuration for the job.  This structure is designed for future extensibility to include additional monitor types.","properties":{"adaptiveMonitors":{"$ref":"#/components/schemas/AdaptiveMonitorsPatch"},"customMonitors":{"type":"array","maxItems":65535,"items":{"$ref":"#/components/schemas/CustomMonitorsPatch"}}}},"AdaptiveMonitorsPatch":{"type":"object","description":"Feature toggles for adaptive monitors computed during profiling. All data quality jobs always run profiling with data type detection and schema-change checks enabled.\n","properties":{"descriptiveStatistics":{"type":"boolean","nullable":true,"description":"Show descriptive statistics in profiling results (e.g., count, min, mean, max). Note: may expose sensitive values such as minimum/maximum. If disabled, all column values are masked in the profiling results.\n"},"emptyFields":{"type":"boolean","nullable":true,"description":"Detect changes in the number of empty values in numeric columns.\n"},"executionTime":{"type":"boolean","nullable":true,"description":"Track changes in total execution time of the data job.\n"},"max":{"type":"boolean","nullable":true,"description":"Detect changes in the highest value across numeric columns.\n"},"mean":{"type":"boolean","nullable":true,"description":"Detect changes in the average (mean) value across numeric columns.\n"},"min":{"type":"boolean","nullable":true,"description":"Detect changes in the lowest value across numeric columns.\n"},"nullValues":{"type":"boolean","nullable":true,"description":"Detect changes in the number of NULL values across all columns.\n"},"rowCount":{"type":"boolean","nullable":true,"description":"Track changes in the total number of rows.\n"},"uniqueness":{"type":"boolean","nullable":true,"description":"Track changes in the number of distinct values across all columns.\n"},"settings":{"$ref":"#/components/schemas/AdaptiveMonitorSettingsPatch"}}},"AdaptiveMonitorSettingsPatch":{"type":"object","description":"Optional learning/tuning parameters applied to the above monitors.\n","properties":{"dataLookBack":{"type":"integer","nullable":true,"minimum":0,"description":"Number of historical runs to consider when detecting changes (0 = no look back).\n"},"learningPhase":{"type":"integer","minimum":0,"nullable":true,"description":"Number of initial runs used to learn a baseline before signaling changes (0 = no learning phase).\n"}}},"CustomMonitorsPatch":{"type":"object","description":"An update to a user-defined custom data quality monitor.","properties":{"monitorName":{"type":"string","description":"Unique monitor name.","pattern":"^[a-zA-Z0-9_-]+$","minLength":1,"maxLength":255},"customQuery":{"type":"string","description":"The SQL query."},"filterQuery":{"type":"string","description":"Optional SQL filter clause applied to the monitor."},"primaryColumn":{"type":"string","description":"Column the monitor is scoped to."},"description":{"type":"string","description":"Description of the monitor.","maxLength":256},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions this monitor measures.","items":{"type":"string"}},"notifications":{"type":"array","maxItems":500,"description":"Alert notification configurations.","items":{"$ref":"#/components/schemas/CustomMonitorNotification"}},"tolerance":{"type":"integer","description":"Number as a percentage of tolerated failures before flagging the monitor as breaking.","minimum":0,"maximum":100},"isActive":{"type":"boolean","description":"Whether the monitor is active."},"isSuppressed":{"type":"boolean","description":"Whether the monitor is suppressed."},"opIndicator":{"type":"string","enum":["CREATE","UPDATE","DELETE","NOOP"],"description":"Operation to be performed for this monitor"}}},"CustomMonitorNotification":{"type":"object","description":"Alert notification configuration attached to a custom monitor.","required":["notificationType","enabled","message","name"],"properties":{"notificationType":{"$ref":"#/components/schemas/CustomMonitorNotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom notification message.","maxLength":256},"channels":{"type":"array","maxItems":500,"description":"Channels to send out notifications.","items":{"$ref":"#/components/schemas/NotificationChannel"}},"name":{"type":"string","description":"Unique identifier for this notification entry."}}},"CustomMonitorNotificationType":{"type":"string","description":"Determines when a notification is triggered.\nThe current available values: * 'PASSING'   — monitor transitions to a passing state * 'BREAKING'  — monitor fails * 'EXCEPTION' — monitor encounters an execution error\n"},"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true},"JobNotifications":{"type":"object","description":"Controls which events trigger a notification, which channels deliver them, and what message is sent. This schema is **channel-extensible**: it starts with EMAIL and will be updated in future versions to support additional channels (e.g., Slack) without breaking existing clients.\n","properties":{"notificationOptions":{"type":"array","description":"Per-event settings. Add one item per event to monitor.","items":{"$ref":"#/components/schemas/NotificationOption"}},"globalMessage":{"type":"string","description":"Default message template when `useIndividualMessages` is false."},"useIndividualMessages":{"type":"boolean","description":"If true, use each option's `message`; otherwise use `globalMessage`."},"channels":{"type":"array","minItems":1,"description":"Delivery channels and their destinations","items":{"$ref":"#/components/schemas/NotificationChannel"}}},"required":["notificationOptions","channels"]},"NotificationOption":{"type":"object","description":"Configuration for a single notification event.\n","required":["notificationType","enabled"],"properties":{"notificationType":{"$ref":"#/components/schemas/NotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom message for this notification. Used when `useIndividualMessages` is `true`. If omitted or blank, the service falls back to `globalMessage`, if that is also blank, a system default template is used.\n"},"quantity":{"type":"integer","minimum":0,"nullable":true,"description":"Threshold used **only** for specific types:  \n  - `ROWS_LESS_THAN_LIMIT` – minimum expected row count.  \n  - `RUNS_WITHOUT_DATA` – number of consecutive empty runs (N).  \n  - `DAYS_WITHOUT_DATA` – number of days with no data (N).  \n  - `SCORE_LESS_THAN_LIMIT` – minimum acceptable score.  \n  - `RUN_TIME_MORE_THEN_LIMIT` – maximum allowed runtime in minutes.  \nIgnored for other types."}}},"NotificationType":{"type":"string","description":"The event that triggers this notification.\n\nCurrent possible values include:\n  * `JOB_FAILED`            – sent when a job run fails.\n  * `JOB_COMPLETED`         – sent when a job run finishes successfully.\n  * `ROWS_LESS_THAN_LIMIT`  – sent when produced row count is below a limit.\n  * `RUNS_WITHOUT_DATA`     – sent after N consecutive runs produced no data.\n  * `DAYS_WITHOUT_DATA`     – sent when no data was produced for N days.\n  * `SCORE_LESS_THAN_LIMIT` – sent when quality score is below a limit.\n  * `RUN_TIME_MORE_THEN_LIMIT` – sent when runtime exceeds a limit (in minutes).\n\nAdditional notification types may be introduced in the future."},"SchedulingSettings":{"nullable":true,"description":"Controls when a scheduled job runs and how `runDate` is adjusted. Exactly **one** schedule mode is allowed. **Optional** If omitted or null, the job will not be scheduled.\n","oneOf":[{"$ref":"#/components/schemas/SchedulingHourly"},{"$ref":"#/components/schemas/SchedulingDaily"},{"$ref":"#/components/schemas/SchedulingMonthly"}],"discriminator":{"propertyName":"schedulerMode","mapping":{"HOURLY":"#/components/schemas/SchedulingHourly","DAILY":"#/components/schemas/SchedulingDaily","MONTHLY":"#/components/schemas/SchedulingMonthly"}}},"SchedulingHourly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["hourly","schedulerMode"],"description":"Hourly schedule configuration. If scheduleRunTime is set \"14:30:00\", the job runs at 14:30, 15:30, 16:30, etc.","properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `HOURLY`."},"hourly":{"type":"object","description":"Hourly schedule rules.","required":["hourlyOffset"],"properties":{"hourlyOffset":{"type":"string","description":"Run-date offset in hours relative to the scheduled time.\n\nCurrent possible values include:\n  * `SCHEDULED` – use the scheduled date/time.\n  * `ONE_HOUR` – run date is 1 hour before the scheduled time.\n  * `TWO_HOURS` – run date is 2 hours before the scheduled time.\n\nAdditional values MAY be added in future versions."}}}}}]},"SchedulingBase":{"type":"object","required":["isActive","scheduledRunTime","schedulerMode"],"properties":{"isActive":{"type":"boolean","description":"Enable/disable the schedule (disabled schedules do not trigger runs)."},"scheduledRunTime":{"type":"string","description":"Time of day in **UTC**, format `HH:mm:ss`.  (24 hours) Example: `14:10:00` means the job starts at 14:10:00 UTC.\n"},"schedulerMode":{"type":"string","description":"Schedule type.\n\nCurrent possible values:\n  * `HOURLY`\n  * `DAILY`\n  * `MONTHLY`\n\nAdditional modes MAY be added in future versions."}}},"SchedulingDaily":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["daily","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `DAILY`."},"daily":{"type":"object","description":"Daily schedule rules.","required":["dailyOffset","daysOfWeek"],"properties":{"dailyOffset":{"type":"string","description":"Run-date offset in days relative to the scheduled day.\n\nCurrent possible values include:\n  * `SCHEDULED`\n  * `ONE_DAY`\n  * `TWO_DAYS`\n  * `THREE_DAYS`\n  * `FOUR_DAYS`\n  * `FIVE_DAYS`\n  * `SIX_DAYS`\n  * `SEVEN_DAYS`\n\nAdditional values MAY be added in future versions."},"daysOfWeek":{"type":"array","minItems":1,"items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]},"description":"Days of week to run."}}}}}]},"SchedulingMonthly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["monthly","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `MONTHLY`."},"monthly":{"type":"object","description":"Monthly schedule rules.","required":["monthlyRepeat","monthlyOffset"],"properties":{"monthlyRepeat":{"type":"string","description":"Which day of the month to run the job on.\n\nCurrent possible values:\n  * `FIRST` – first day of the month\n  * `LAST`  – last day of the month\n  * `DAY`   – specific calendar day (requires `dayNumber` in 1–31 range)\n\nAdditional values MAY be added in future versions."},"monthlyOffset":{"type":"string","description":"Run-date offset applied to the scheduled monthly day.\n\nCurrent possible values include:\n  * `SCHEDULED`              - use the scheduled date\n  * `FIRST_OF_CURRENT_MONTH` - first day of the current month\n  * `LAST_OF_CURRENT_MONTH`  - last day of the current month\n  * `FIRST_OF_PRIOR_MONTH`   - first day of the prior month\n  * `LAST_OF_PRIOR_MONTH`    - last day of the prior month\n\nAdditional values may be added in future versions."},"dayNumber":{"type":"integer","minimum":1,"maximum":31,"nullable":true,"description":"Required when `monthlyRepeat = DAY`."}}}}}]}}}}
```

## The JobDefinitionCreateRequest object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"JobDefinitionCreateRequest":{"type":"object","required":["jobType","dataLocation"],"properties":{"queueRun":{"type":"boolean","default":true,"description":"Indicates whether the created job should be queued to run immediately after creation.\n\nWhen `true` (the default when omitted), the job is created and a run is queued immediately,\nand the response includes the `jobRunId` of the queued run.\nWhen `false`, the job is created without queuing a run, and the response `jobRunId` is `null`."},"jobName":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/JobName"}],"description":"Unique name of the job to create/run.\n\n**Optional**. If omitted or null, the system generates a default unique name\nusing the pattern `<schema>.<table>`. If that name already exists, an\nunderscore plus a counter is appended, e.g. `<schema>.<table>_1`, `<schema>.<table>_2`, etc."},"jobType":{"$ref":"#/components/schemas/JobType"},"sourceQuery":{"$ref":"#/components/schemas/SourceQuery"},"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**. May be omitted or set to null.\nIf not provided, the system will use the current date/time as the run date."}]},"runDateEnd":{"$ref":"#/components/schemas/RunDateEndValue"},"dataLocation":{"$ref":"#/components/schemas/DataLocation"},"backrun":{"$ref":"#/components/schemas/Backrun"},"jobSettings":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/JobSettings"},{"description":"Job-level execution settings.\n\n**Optional**. May be omitted or set to null.\nIf not provided, default settings will be applied based on `jobType`.\nProvide only the fields you want to override, any unspecified fields fall back to defaults."}]},"monitoringSettings":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/JobMonitoringSettings"},{"description":"Monitoring configuration for adaptive and custom monitors. \nThis structure is designed for future extensibility to include additional monitor types.  \n\n**Optional**. May be omitted or set to null.\nIf not provided, default monitoring settings will be applied. Provide only the fields\nyou want to override, any unspecified fields fall back to defaults."}]},"notifications":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/JobNotifications"},{"description":"Notification configuration for a job. Controls which events trigger a notification, who receives it, \nand which message is sent.\n\n**Optional**. May be omitted or set to null.\nIf not provided, no notifications will be configured."}]},"schedulingSettings":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/SchedulingSettings"},{"description":"Controls when a scheduled job runs and how the runDate is adjusted by schedule-specific offsets. \nThe scheduler runs at the given UTC time and applies the selected mode (HOURLY/DAILY/MONTHLY).\n\n**Optional**. May be omitted or set to null.\nIf not provided, no scheduling settings will be applied."}]}}},"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_.-]+$"},"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"},"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>\"`"},"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."},"DataLocation":{"description":"Identifies where the job reads data from. Combines the platform connection and the specific catalog/schema/table location inside that connection.\n","required":["edgeSiteName","edgeConnectionName","dataSourceName","schemaName","tableName"],"type":"object","properties":{"edgeSiteName":{"description":"Edge site name","type":"string"},"edgeConnectionName":{"type":"string","description":"Edge connection name"},"dataSourceName":{"type":"string","description":"Data source (database/catalog) name"},"databaseProductName":{"$ref":"#/components/schemas/DatabaseProduct"},"schemaName":{"description":"Schema name","type":"string"},"tableName":{"description":"Table name","type":"string"}}},"DatabaseProduct":{"type":"string","readOnly":true,"description":"The database vendor associated with the connection.\n\nCurrent possible values include:\n    * `ATHENA`\n    * `BIGQUERY`\n    * `DATABRICKS`\n    * `DB2`\n    * `MYSQL`\n    * `POSTGRES`\n    * `REDSHIFT`\n    * `SAP`\n    * `SNOWFLAKE`\n    * `SQLSERVER`\n    * `TRINO`\n\n  Additional values will be introduced in the future."},"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"},"JobSettings":{"type":"object","description":"Job-level execution settings, including date format and pushdown/pullup tuning. Pullup jobs are available only when the Pullup preview feature is enabled.\n","properties":{"dateFormat":{"$ref":"#/components/schemas/DateFormat"},"pushdownSettings":{"$ref":"#/components/schemas/PushdownSettings"},"pullupSettings":{"$ref":"#/components/schemas/PullupSettings"}}},"DateFormat":{"type":"string","default":"DATE","description":"Date format used for `runDate` / `runDateEnd`.\nSupported values:\n  - DATE -> yyyy-MM-dd \n  - TIMESTAMP -> RFC 3339 timestamp, example - 2025-10-23T13:50:02Z","enum":["DATE","TIMESTAMP"]},"PushdownSettings":{"type":"object","nullable":true,"description":"Settings for pushdown execution. Controls concurrency used by the source system connection.\nProvide this object only when the job's jobType is PUSHDOWN. Omit or set to null for non-pushdown jobs.","properties":{"connections":{"type":"integer","minimum":1,"default":10,"description":"Number of concurrent source connections\n"},"threads":{"type":"integer","minimum":1,"default":5,"description":"Worker threads per connection for pushdown queries\n"}}},"PullupSettings":{"type":"object","nullable":true,"description":"Settings for pullup execution. Controls partitioning and Spark sizing.\nProvide this object only when the job's jobType is PULLUP. Omit or set to null for non-pullup jobs.\n\nPullup functionality is available only when the Pullup preview feature is enabled.","properties":{"loadOptions":{"$ref":"#/components/schemas/LoadOptions"},"sparkJobSizing":{"$ref":"#/components/schemas/SparkJobSizing"},"sparkSqlProperties":{"type":"object","nullable":true,"description":"Arbitrary Spark SQL session properties as key/value pairs\n","additionalProperties":{"type":"string"}}}},"LoadOptions":{"type":"object","nullable":true,"description":"Data loading options applied when reading from the source\n","properties":{"numPartitions":{"type":"integer","minimum":0,"default":0,"description":"Number of Spark input partitions\n"},"parallelJdbcOptions":{"$ref":"#/components/schemas/ParallelJdbcOptions"}}},"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false},"SparkJobSizing":{"type":"object","nullable":true,"description":"Optional manual sizing for Spark resources.\n\nIf this object is **omitted or null**, the platform automatically selects\nSpark resources based on the source query.","properties":{"numExecutors":{"type":"integer","minimum":1,"description":"Number of executors to use (upper bound).","default":1},"driverCores":{"type":"integer","minimum":1,"description":"Number of driver CPU cores.","default":1},"numExecutorCores":{"type":"integer","minimum":1,"description":"Number of CPU cores per executor.","default":1},"executorMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Maximum memory per executor in GB.","default":1}]},"driverMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Driver memory in GB.","default":1}]},"memoryOverheadGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Additional off-heap memory per executor in GB.","nullable":true,"default":null}]}},"additionalProperties":false},"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"},"JobMonitoringSettings":{"type":"object","description":"Monitoring configuration for the job.  This structure is designed for future extensibility to include additional monitor types.","properties":{"adaptiveMonitors":{"$ref":"#/components/schemas/AdaptiveMonitors"},"customMonitors":{"type":"array","maxItems":65535,"items":{"$ref":"#/components/schemas/CustomMonitors"}}}},"AdaptiveMonitors":{"type":"object","description":"Feature toggles for adaptive monitors computed during profiling. All data quality jobs always run profiling with data type detection and schema-change checks enabled.\n","properties":{"descriptiveStatistics":{"type":"boolean","default":false,"description":"Show descriptive statistics in profiling results (e.g., count, min, mean, max). Note: may expose sensitive values such as minimum/maximum. If disabled, all column values are masked in the profiling results.\n"},"emptyFields":{"type":"boolean","default":true,"description":"Detect changes in the number of empty values in numeric columns.\n"},"executionTime":{"type":"boolean","default":false,"description":"Track changes in total execution time of the data job.\n"},"max":{"type":"boolean","default":false,"description":"Detect changes in the highest value across numeric columns.\n"},"mean":{"type":"boolean","default":false,"description":"Detect changes in the average (mean) value across numeric columns.\n"},"min":{"type":"boolean","default":false,"description":"Detect changes in the lowest value across numeric columns.\n"},"nullValues":{"type":"boolean","default":true,"description":"Detect changes in the number of NULL values across all columns.\n"},"rowCount":{"type":"boolean","default":true,"description":"Track changes in the total number of rows.\n"},"uniqueness":{"type":"boolean","default":true,"description":"Track changes in the number of distinct values across all columns.\n"},"settings":{"$ref":"#/components/schemas/AdaptiveMonitorSettings"}}},"AdaptiveMonitorSettings":{"type":"object","description":"Optional learning/tuning parameters applied to the above monitors.\n","properties":{"dataLookBack":{"type":"integer","minimum":0,"default":10,"description":"Number of historical runs to consider when detecting changes (0 = no look back).\n"},"learningPhase":{"type":"integer","minimum":0,"default":4,"description":"Number of initial runs used to learn a baseline before signaling changes (0 = no learning phase).    \n"}}},"CustomMonitors":{"type":"object","description":"A user-defined custom data quality monitor.","required":["monitorName","customQuery"],"properties":{"monitorName":{"type":"string","description":"Unique monitor name.","pattern":"^[a-zA-Z0-9_-]+$","minLength":1,"maxLength":255},"customQuery":{"type":"string","description":"The SQL query."},"filterQuery":{"type":"string","description":"Optional SQL filter clause applied to the monitor."},"primaryColumn":{"type":"string","description":"Column the monitor is scoped to."},"description":{"type":"string","description":"Human-readable description of the monitor.","maxLength":256},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions this monitor measures.","items":{"type":"string"}},"notifications":{"type":"array","maxItems":500,"description":"Alert notification configurations.","items":{"$ref":"#/components/schemas/CustomMonitorNotification"}},"tolerance":{"type":"integer","description":"Number as a percentage of tolerated failures before flagging the monitor as breaking.","minimum":0,"maximum":100},"isActive":{"type":"boolean","description":"Whether the monitor is active."},"isSuppressed":{"type":"boolean","description":"Whether the monitor is suppressed."}}},"CustomMonitorNotification":{"type":"object","description":"Alert notification configuration attached to a custom monitor.","required":["notificationType","enabled","message","name"],"properties":{"notificationType":{"$ref":"#/components/schemas/CustomMonitorNotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom notification message.","maxLength":256},"channels":{"type":"array","maxItems":500,"description":"Channels to send out notifications.","items":{"$ref":"#/components/schemas/NotificationChannel"}},"name":{"type":"string","description":"Unique identifier for this notification entry."}}},"CustomMonitorNotificationType":{"type":"string","description":"Determines when a notification is triggered.\nThe current available values: * 'PASSING'   — monitor transitions to a passing state * 'BREAKING'  — monitor fails * 'EXCEPTION' — monitor encounters an execution error\n"},"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true},"JobNotifications":{"type":"object","description":"Controls which events trigger a notification, which channels deliver them, and what message is sent. This schema is **channel-extensible**: it starts with EMAIL and will be updated in future versions to support additional channels (e.g., Slack) without breaking existing clients.\n","properties":{"notificationOptions":{"type":"array","description":"Per-event settings. Add one item per event to monitor.","items":{"$ref":"#/components/schemas/NotificationOption"}},"globalMessage":{"type":"string","description":"Default message template when `useIndividualMessages` is false."},"useIndividualMessages":{"type":"boolean","description":"If true, use each option's `message`; otherwise use `globalMessage`."},"channels":{"type":"array","minItems":1,"description":"Delivery channels and their destinations","items":{"$ref":"#/components/schemas/NotificationChannel"}}},"required":["notificationOptions","channels"]},"NotificationOption":{"type":"object","description":"Configuration for a single notification event.\n","required":["notificationType","enabled"],"properties":{"notificationType":{"$ref":"#/components/schemas/NotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom message for this notification. Used when `useIndividualMessages` is `true`. If omitted or blank, the service falls back to `globalMessage`, if that is also blank, a system default template is used.\n"},"quantity":{"type":"integer","minimum":0,"nullable":true,"description":"Threshold used **only** for specific types:  \n  - `ROWS_LESS_THAN_LIMIT` – minimum expected row count.  \n  - `RUNS_WITHOUT_DATA` – number of consecutive empty runs (N).  \n  - `DAYS_WITHOUT_DATA` – number of days with no data (N).  \n  - `SCORE_LESS_THAN_LIMIT` – minimum acceptable score.  \n  - `RUN_TIME_MORE_THEN_LIMIT` – maximum allowed runtime in minutes.  \nIgnored for other types."}}},"NotificationType":{"type":"string","description":"The event that triggers this notification.\n\nCurrent possible values include:\n  * `JOB_FAILED`            – sent when a job run fails.\n  * `JOB_COMPLETED`         – sent when a job run finishes successfully.\n  * `ROWS_LESS_THAN_LIMIT`  – sent when produced row count is below a limit.\n  * `RUNS_WITHOUT_DATA`     – sent after N consecutive runs produced no data.\n  * `DAYS_WITHOUT_DATA`     – sent when no data was produced for N days.\n  * `SCORE_LESS_THAN_LIMIT` – sent when quality score is below a limit.\n  * `RUN_TIME_MORE_THEN_LIMIT` – sent when runtime exceeds a limit (in minutes).\n\nAdditional notification types may be introduced in the future."},"SchedulingSettings":{"nullable":true,"description":"Controls when a scheduled job runs and how `runDate` is adjusted. Exactly **one** schedule mode is allowed. **Optional** If omitted or null, the job will not be scheduled.\n","oneOf":[{"$ref":"#/components/schemas/SchedulingHourly"},{"$ref":"#/components/schemas/SchedulingDaily"},{"$ref":"#/components/schemas/SchedulingMonthly"}],"discriminator":{"propertyName":"schedulerMode","mapping":{"HOURLY":"#/components/schemas/SchedulingHourly","DAILY":"#/components/schemas/SchedulingDaily","MONTHLY":"#/components/schemas/SchedulingMonthly"}}},"SchedulingHourly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["hourly","schedulerMode"],"description":"Hourly schedule configuration. If scheduleRunTime is set \"14:30:00\", the job runs at 14:30, 15:30, 16:30, etc.","properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `HOURLY`."},"hourly":{"type":"object","description":"Hourly schedule rules.","required":["hourlyOffset"],"properties":{"hourlyOffset":{"type":"string","description":"Run-date offset in hours relative to the scheduled time.\n\nCurrent possible values include:\n  * `SCHEDULED` – use the scheduled date/time.\n  * `ONE_HOUR` – run date is 1 hour before the scheduled time.\n  * `TWO_HOURS` – run date is 2 hours before the scheduled time.\n\nAdditional values MAY be added in future versions."}}}}}]},"SchedulingBase":{"type":"object","required":["isActive","scheduledRunTime","schedulerMode"],"properties":{"isActive":{"type":"boolean","description":"Enable/disable the schedule (disabled schedules do not trigger runs)."},"scheduledRunTime":{"type":"string","description":"Time of day in **UTC**, format `HH:mm:ss`.  (24 hours) Example: `14:10:00` means the job starts at 14:10:00 UTC.\n"},"schedulerMode":{"type":"string","description":"Schedule type.\n\nCurrent possible values:\n  * `HOURLY`\n  * `DAILY`\n  * `MONTHLY`\n\nAdditional modes MAY be added in future versions."}}},"SchedulingDaily":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["daily","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `DAILY`."},"daily":{"type":"object","description":"Daily schedule rules.","required":["dailyOffset","daysOfWeek"],"properties":{"dailyOffset":{"type":"string","description":"Run-date offset in days relative to the scheduled day.\n\nCurrent possible values include:\n  * `SCHEDULED`\n  * `ONE_DAY`\n  * `TWO_DAYS`\n  * `THREE_DAYS`\n  * `FOUR_DAYS`\n  * `FIVE_DAYS`\n  * `SIX_DAYS`\n  * `SEVEN_DAYS`\n\nAdditional values MAY be added in future versions."},"daysOfWeek":{"type":"array","minItems":1,"items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]},"description":"Days of week to run."}}}}}]},"SchedulingMonthly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["monthly","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `MONTHLY`."},"monthly":{"type":"object","description":"Monthly schedule rules.","required":["monthlyRepeat","monthlyOffset"],"properties":{"monthlyRepeat":{"type":"string","description":"Which day of the month to run the job on.\n\nCurrent possible values:\n  * `FIRST` – first day of the month\n  * `LAST`  – last day of the month\n  * `DAY`   – specific calendar day (requires `dayNumber` in 1–31 range)\n\nAdditional values MAY be added in future versions."},"monthlyOffset":{"type":"string","description":"Run-date offset applied to the scheduled monthly day.\n\nCurrent possible values include:\n  * `SCHEDULED`              - use the scheduled date\n  * `FIRST_OF_CURRENT_MONTH` - first day of the current month\n  * `LAST_OF_CURRENT_MONTH`  - last day of the current month\n  * `FIRST_OF_PRIOR_MONTH`   - first day of the prior month\n  * `LAST_OF_PRIOR_MONTH`    - last day of the prior month\n\nAdditional values may be added in future versions."},"dayNumber":{"type":"integer","minimum":1,"maximum":31,"nullable":true,"description":"Required when `monthlyRepeat = DAY`."}}}}}]}}}}
```

## The JobDefinitionCreateResponse object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"JobDefinitionCreateResponse":{"allOf":[{"$ref":"#/components/schemas/JobDefinition"},{"type":"object","description":"Response for job creation. Contains all fields of `JobDefinition`\nplus an optional identifier of the queued run when `queueRun = true`.","properties":{"jobRunId":{"type":"string","format":"uuid","nullable":true,"description":"Identifier of the queued job run, if the job was scheduled\nto run immediately after creation.\n\n- Present when `queueRun = true` and the run was successfully queued.\n- `null` when `queueRun = false` and the job was created without an immediate run."}}}]},"JobDefinition":{"type":"object","properties":{"jobName":{"$ref":"#/components/schemas/JobName"},"jobType":{"$ref":"#/components/schemas/JobType"},"sourceQuery":{"$ref":"#/components/schemas/SourceQuery"},"runDate":{"$ref":"#/components/schemas/RunDateValue"},"runDateEnd":{"$ref":"#/components/schemas/RunDateEndValue"},"dataLocation":{"$ref":"#/components/schemas/DataLocation"},"jobSettings":{"$ref":"#/components/schemas/JobSettings"},"monitoringSettings":{"$ref":"#/components/schemas/JobMonitoringSettings"},"notifications":{"$ref":"#/components/schemas/JobNotifications"},"schedulingSettings":{"$ref":"#/components/schemas/SchedulingSettings"}}},"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_.-]+$"},"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"},"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>\"`"},"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."},"DataLocation":{"description":"Identifies where the job reads data from. Combines the platform connection and the specific catalog/schema/table location inside that connection.\n","required":["edgeSiteName","edgeConnectionName","dataSourceName","schemaName","tableName"],"type":"object","properties":{"edgeSiteName":{"description":"Edge site name","type":"string"},"edgeConnectionName":{"type":"string","description":"Edge connection name"},"dataSourceName":{"type":"string","description":"Data source (database/catalog) name"},"databaseProductName":{"$ref":"#/components/schemas/DatabaseProduct"},"schemaName":{"description":"Schema name","type":"string"},"tableName":{"description":"Table name","type":"string"}}},"DatabaseProduct":{"type":"string","readOnly":true,"description":"The database vendor associated with the connection.\n\nCurrent possible values include:\n    * `ATHENA`\n    * `BIGQUERY`\n    * `DATABRICKS`\n    * `DB2`\n    * `MYSQL`\n    * `POSTGRES`\n    * `REDSHIFT`\n    * `SAP`\n    * `SNOWFLAKE`\n    * `SQLSERVER`\n    * `TRINO`\n\n  Additional values will be introduced in the future."},"JobSettings":{"type":"object","description":"Job-level execution settings, including date format and pushdown/pullup tuning. Pullup jobs are available only when the Pullup preview feature is enabled.\n","properties":{"dateFormat":{"$ref":"#/components/schemas/DateFormat"},"pushdownSettings":{"$ref":"#/components/schemas/PushdownSettings"},"pullupSettings":{"$ref":"#/components/schemas/PullupSettings"}}},"DateFormat":{"type":"string","default":"DATE","description":"Date format used for `runDate` / `runDateEnd`.\nSupported values:\n  - DATE -> yyyy-MM-dd \n  - TIMESTAMP -> RFC 3339 timestamp, example - 2025-10-23T13:50:02Z","enum":["DATE","TIMESTAMP"]},"PushdownSettings":{"type":"object","nullable":true,"description":"Settings for pushdown execution. Controls concurrency used by the source system connection.\nProvide this object only when the job's jobType is PUSHDOWN. Omit or set to null for non-pushdown jobs.","properties":{"connections":{"type":"integer","minimum":1,"default":10,"description":"Number of concurrent source connections\n"},"threads":{"type":"integer","minimum":1,"default":5,"description":"Worker threads per connection for pushdown queries\n"}}},"PullupSettings":{"type":"object","nullable":true,"description":"Settings for pullup execution. Controls partitioning and Spark sizing.\nProvide this object only when the job's jobType is PULLUP. Omit or set to null for non-pullup jobs.\n\nPullup functionality is available only when the Pullup preview feature is enabled.","properties":{"loadOptions":{"$ref":"#/components/schemas/LoadOptions"},"sparkJobSizing":{"$ref":"#/components/schemas/SparkJobSizing"},"sparkSqlProperties":{"type":"object","nullable":true,"description":"Arbitrary Spark SQL session properties as key/value pairs\n","additionalProperties":{"type":"string"}}}},"LoadOptions":{"type":"object","nullable":true,"description":"Data loading options applied when reading from the source\n","properties":{"numPartitions":{"type":"integer","minimum":0,"default":0,"description":"Number of Spark input partitions\n"},"parallelJdbcOptions":{"$ref":"#/components/schemas/ParallelJdbcOptions"}}},"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false},"SparkJobSizing":{"type":"object","nullable":true,"description":"Optional manual sizing for Spark resources.\n\nIf this object is **omitted or null**, the platform automatically selects\nSpark resources based on the source query.","properties":{"numExecutors":{"type":"integer","minimum":1,"description":"Number of executors to use (upper bound).","default":1},"driverCores":{"type":"integer","minimum":1,"description":"Number of driver CPU cores.","default":1},"numExecutorCores":{"type":"integer","minimum":1,"description":"Number of CPU cores per executor.","default":1},"executorMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Maximum memory per executor in GB.","default":1}]},"driverMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Driver memory in GB.","default":1}]},"memoryOverheadGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Additional off-heap memory per executor in GB.","nullable":true,"default":null}]}},"additionalProperties":false},"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"},"JobMonitoringSettings":{"type":"object","description":"Monitoring configuration for the job.  This structure is designed for future extensibility to include additional monitor types.","properties":{"adaptiveMonitors":{"$ref":"#/components/schemas/AdaptiveMonitors"},"customMonitors":{"type":"array","maxItems":65535,"items":{"$ref":"#/components/schemas/CustomMonitors"}}}},"AdaptiveMonitors":{"type":"object","description":"Feature toggles for adaptive monitors computed during profiling. All data quality jobs always run profiling with data type detection and schema-change checks enabled.\n","properties":{"descriptiveStatistics":{"type":"boolean","default":false,"description":"Show descriptive statistics in profiling results (e.g., count, min, mean, max). Note: may expose sensitive values such as minimum/maximum. If disabled, all column values are masked in the profiling results.\n"},"emptyFields":{"type":"boolean","default":true,"description":"Detect changes in the number of empty values in numeric columns.\n"},"executionTime":{"type":"boolean","default":false,"description":"Track changes in total execution time of the data job.\n"},"max":{"type":"boolean","default":false,"description":"Detect changes in the highest value across numeric columns.\n"},"mean":{"type":"boolean","default":false,"description":"Detect changes in the average (mean) value across numeric columns.\n"},"min":{"type":"boolean","default":false,"description":"Detect changes in the lowest value across numeric columns.\n"},"nullValues":{"type":"boolean","default":true,"description":"Detect changes in the number of NULL values across all columns.\n"},"rowCount":{"type":"boolean","default":true,"description":"Track changes in the total number of rows.\n"},"uniqueness":{"type":"boolean","default":true,"description":"Track changes in the number of distinct values across all columns.\n"},"settings":{"$ref":"#/components/schemas/AdaptiveMonitorSettings"}}},"AdaptiveMonitorSettings":{"type":"object","description":"Optional learning/tuning parameters applied to the above monitors.\n","properties":{"dataLookBack":{"type":"integer","minimum":0,"default":10,"description":"Number of historical runs to consider when detecting changes (0 = no look back).\n"},"learningPhase":{"type":"integer","minimum":0,"default":4,"description":"Number of initial runs used to learn a baseline before signaling changes (0 = no learning phase).    \n"}}},"CustomMonitors":{"type":"object","description":"A user-defined custom data quality monitor.","required":["monitorName","customQuery"],"properties":{"monitorName":{"type":"string","description":"Unique monitor name.","pattern":"^[a-zA-Z0-9_-]+$","minLength":1,"maxLength":255},"customQuery":{"type":"string","description":"The SQL query."},"filterQuery":{"type":"string","description":"Optional SQL filter clause applied to the monitor."},"primaryColumn":{"type":"string","description":"Column the monitor is scoped to."},"description":{"type":"string","description":"Human-readable description of the monitor.","maxLength":256},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions this monitor measures.","items":{"type":"string"}},"notifications":{"type":"array","maxItems":500,"description":"Alert notification configurations.","items":{"$ref":"#/components/schemas/CustomMonitorNotification"}},"tolerance":{"type":"integer","description":"Number as a percentage of tolerated failures before flagging the monitor as breaking.","minimum":0,"maximum":100},"isActive":{"type":"boolean","description":"Whether the monitor is active."},"isSuppressed":{"type":"boolean","description":"Whether the monitor is suppressed."}}},"CustomMonitorNotification":{"type":"object","description":"Alert notification configuration attached to a custom monitor.","required":["notificationType","enabled","message","name"],"properties":{"notificationType":{"$ref":"#/components/schemas/CustomMonitorNotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom notification message.","maxLength":256},"channels":{"type":"array","maxItems":500,"description":"Channels to send out notifications.","items":{"$ref":"#/components/schemas/NotificationChannel"}},"name":{"type":"string","description":"Unique identifier for this notification entry."}}},"CustomMonitorNotificationType":{"type":"string","description":"Determines when a notification is triggered.\nThe current available values: * 'PASSING'   — monitor transitions to a passing state * 'BREAKING'  — monitor fails * 'EXCEPTION' — monitor encounters an execution error\n"},"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true},"JobNotifications":{"type":"object","description":"Controls which events trigger a notification, which channels deliver them, and what message is sent. This schema is **channel-extensible**: it starts with EMAIL and will be updated in future versions to support additional channels (e.g., Slack) without breaking existing clients.\n","properties":{"notificationOptions":{"type":"array","description":"Per-event settings. Add one item per event to monitor.","items":{"$ref":"#/components/schemas/NotificationOption"}},"globalMessage":{"type":"string","description":"Default message template when `useIndividualMessages` is false."},"useIndividualMessages":{"type":"boolean","description":"If true, use each option's `message`; otherwise use `globalMessage`."},"channels":{"type":"array","minItems":1,"description":"Delivery channels and their destinations","items":{"$ref":"#/components/schemas/NotificationChannel"}}},"required":["notificationOptions","channels"]},"NotificationOption":{"type":"object","description":"Configuration for a single notification event.\n","required":["notificationType","enabled"],"properties":{"notificationType":{"$ref":"#/components/schemas/NotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom message for this notification. Used when `useIndividualMessages` is `true`. If omitted or blank, the service falls back to `globalMessage`, if that is also blank, a system default template is used.\n"},"quantity":{"type":"integer","minimum":0,"nullable":true,"description":"Threshold used **only** for specific types:  \n  - `ROWS_LESS_THAN_LIMIT` – minimum expected row count.  \n  - `RUNS_WITHOUT_DATA` – number of consecutive empty runs (N).  \n  - `DAYS_WITHOUT_DATA` – number of days with no data (N).  \n  - `SCORE_LESS_THAN_LIMIT` – minimum acceptable score.  \n  - `RUN_TIME_MORE_THEN_LIMIT` – maximum allowed runtime in minutes.  \nIgnored for other types."}}},"NotificationType":{"type":"string","description":"The event that triggers this notification.\n\nCurrent possible values include:\n  * `JOB_FAILED`            – sent when a job run fails.\n  * `JOB_COMPLETED`         – sent when a job run finishes successfully.\n  * `ROWS_LESS_THAN_LIMIT`  – sent when produced row count is below a limit.\n  * `RUNS_WITHOUT_DATA`     – sent after N consecutive runs produced no data.\n  * `DAYS_WITHOUT_DATA`     – sent when no data was produced for N days.\n  * `SCORE_LESS_THAN_LIMIT` – sent when quality score is below a limit.\n  * `RUN_TIME_MORE_THEN_LIMIT` – sent when runtime exceeds a limit (in minutes).\n\nAdditional notification types may be introduced in the future."},"SchedulingSettings":{"nullable":true,"description":"Controls when a scheduled job runs and how `runDate` is adjusted. Exactly **one** schedule mode is allowed. **Optional** If omitted or null, the job will not be scheduled.\n","oneOf":[{"$ref":"#/components/schemas/SchedulingHourly"},{"$ref":"#/components/schemas/SchedulingDaily"},{"$ref":"#/components/schemas/SchedulingMonthly"}],"discriminator":{"propertyName":"schedulerMode","mapping":{"HOURLY":"#/components/schemas/SchedulingHourly","DAILY":"#/components/schemas/SchedulingDaily","MONTHLY":"#/components/schemas/SchedulingMonthly"}}},"SchedulingHourly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["hourly","schedulerMode"],"description":"Hourly schedule configuration. If scheduleRunTime is set \"14:30:00\", the job runs at 14:30, 15:30, 16:30, etc.","properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `HOURLY`."},"hourly":{"type":"object","description":"Hourly schedule rules.","required":["hourlyOffset"],"properties":{"hourlyOffset":{"type":"string","description":"Run-date offset in hours relative to the scheduled time.\n\nCurrent possible values include:\n  * `SCHEDULED` – use the scheduled date/time.\n  * `ONE_HOUR` – run date is 1 hour before the scheduled time.\n  * `TWO_HOURS` – run date is 2 hours before the scheduled time.\n\nAdditional values MAY be added in future versions."}}}}}]},"SchedulingBase":{"type":"object","required":["isActive","scheduledRunTime","schedulerMode"],"properties":{"isActive":{"type":"boolean","description":"Enable/disable the schedule (disabled schedules do not trigger runs)."},"scheduledRunTime":{"type":"string","description":"Time of day in **UTC**, format `HH:mm:ss`.  (24 hours) Example: `14:10:00` means the job starts at 14:10:00 UTC.\n"},"schedulerMode":{"type":"string","description":"Schedule type.\n\nCurrent possible values:\n  * `HOURLY`\n  * `DAILY`\n  * `MONTHLY`\n\nAdditional modes MAY be added in future versions."}}},"SchedulingDaily":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["daily","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `DAILY`."},"daily":{"type":"object","description":"Daily schedule rules.","required":["dailyOffset","daysOfWeek"],"properties":{"dailyOffset":{"type":"string","description":"Run-date offset in days relative to the scheduled day.\n\nCurrent possible values include:\n  * `SCHEDULED`\n  * `ONE_DAY`\n  * `TWO_DAYS`\n  * `THREE_DAYS`\n  * `FOUR_DAYS`\n  * `FIVE_DAYS`\n  * `SIX_DAYS`\n  * `SEVEN_DAYS`\n\nAdditional values MAY be added in future versions."},"daysOfWeek":{"type":"array","minItems":1,"items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]},"description":"Days of week to run."}}}}}]},"SchedulingMonthly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["monthly","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `MONTHLY`."},"monthly":{"type":"object","description":"Monthly schedule rules.","required":["monthlyRepeat","monthlyOffset"],"properties":{"monthlyRepeat":{"type":"string","description":"Which day of the month to run the job on.\n\nCurrent possible values:\n  * `FIRST` – first day of the month\n  * `LAST`  – last day of the month\n  * `DAY`   – specific calendar day (requires `dayNumber` in 1–31 range)\n\nAdditional values MAY be added in future versions."},"monthlyOffset":{"type":"string","description":"Run-date offset applied to the scheduled monthly day.\n\nCurrent possible values include:\n  * `SCHEDULED`              - use the scheduled date\n  * `FIRST_OF_CURRENT_MONTH` - first day of the current month\n  * `LAST_OF_CURRENT_MONTH`  - last day of the current month\n  * `FIRST_OF_PRIOR_MONTH`   - first day of the prior month\n  * `LAST_OF_PRIOR_MONTH`    - last day of the prior month\n\nAdditional values may be added in future versions."},"dayNumber":{"type":"integer","minimum":1,"maximum":31,"nullable":true,"description":"Required when `monthlyRepeat = DAY`."}}}}}]}}}}
```

## The JobName object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"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_.-]+$"}}}}
```

## The JobRunStatus object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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."}}}}
```

## The JobActivity object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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."}}}}
```

## The JobRunRequest object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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"}]}}},"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"}}}}
```

## The JobRun object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"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>\"`"}}}}
```

## The JobRunPaginated object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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"}}},"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>\"`"}}}}
```

## The JobRunProfileResults object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"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."}}}}}}
```

## The ColumnProfile object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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."}}}}}}
```

## The ColumnShape object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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."}}}}}}
```

## The JobRunMonitorsResult object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"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: * 'LEARNING'    — monitor is in a learning phase and collecting baseline data * 'PASSING'     — observed value is within expected bounds * 'BREAKING'    — observed value is outside expected bounds * 'SUPPRESSED'  — findings are suppressed and excluded from scoring * 'USER_PASSED' — monitor is passed by a user * 'EXCEPTION'   — an exception was encountered executing the monitor * 'STALE'       — monitor was run while suppressed; cannot be set to PASSING, BREAKING, or (if applicable) another active state until the job is rerun * 'SKIPPED'     — execution of monitor skipped\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)."}}}}}}
```

## The JobRunMonitorOperationsRequest object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"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_-]+( [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 USER_PASSED and retrain (adaptive monitors only).\n* `SUPPRESS` — Set state to suppressed and retrain adaptive monitors."}}}}}}
```

## The JobRunMonitorOperation object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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_-]+( [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 USER_PASSED and retrain (adaptive monitors only).\n* `SUPPRESS` — Set state to suppressed and retrain adaptive monitors."}}}}}}
```

## The AdaptiveMonitorResult object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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: * 'LEARNING'    — monitor is in a learning phase and collecting baseline data * 'PASSING'     — observed value is within expected bounds * 'BREAKING'    — observed value is outside expected bounds * 'SUPPRESSED'  — findings are suppressed and excluded from scoring * 'USER_PASSED' — monitor is passed by a user * 'EXCEPTION'   — an exception was encountered executing the monitor * 'STALE'       — monitor was run while suppressed; cannot be set to PASSING, BREAKING, or (if applicable) another active state until the job is rerun * 'SKIPPED'     — execution of monitor skipped\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"}}}}
```

## The AdaptiveMonitorType object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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"}}}}
```

## The AdaptiveMonitorTolerance object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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"}}}}
```

## The CustomMonitorResult object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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)."}}},"MonitorState":{"type":"string","description":"The current state of a monitor for a given job run.\nThe current available values: * 'LEARNING'    — monitor is in a learning phase and collecting baseline data * 'PASSING'     — observed value is within expected bounds * 'BREAKING'    — observed value is outside expected bounds * 'SUPPRESSED'  — findings are suppressed and excluded from scoring * 'USER_PASSED' — monitor is passed by a user * 'EXCEPTION'   — an exception was encountered executing the monitor * 'STALE'       — monitor was run while suppressed; cannot be set to PASSING, BREAKING, or (if applicable) another active state until the job is rerun * 'SKIPPED'     — execution of monitor skipped\n"}}}}
```

## The MonitorState object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"MonitorState":{"type":"string","description":"The current state of a monitor for a given job run.\nThe current available values: * 'LEARNING'    — monitor is in a learning phase and collecting baseline data * 'PASSING'     — observed value is within expected bounds * 'BREAKING'    — observed value is outside expected bounds * 'SUPPRESSED'  — findings are suppressed and excluded from scoring * 'USER_PASSED' — monitor is passed by a user * 'EXCEPTION'   — an exception was encountered executing the monitor * 'STALE'       — monitor was run while suppressed; cannot be set to PASSING, BREAKING, or (if applicable) another active state until the job is rerun * 'SKIPPED'     — execution of monitor skipped\n"}}}}
```

## The SourceQuery object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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>\"`"}}}}
```

## The DatabaseProduct object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"DatabaseProduct":{"type":"string","readOnly":true,"description":"The database vendor associated with the connection.\n\nCurrent possible values include:\n    * `ATHENA`\n    * `BIGQUERY`\n    * `DATABRICKS`\n    * `DB2`\n    * `MYSQL`\n    * `POSTGRES`\n    * `REDSHIFT`\n    * `SAP`\n    * `SNOWFLAKE`\n    * `SQLSERVER`\n    * `TRINO`\n\n  Additional values will be introduced in the future."}}}}
```

## The JobType object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"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"}}}}
```

## The JobDefinitionPaginated object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"JobDefinitionPaginated":{"type":"object","description":"Paged list of jobs","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/JobDefinition"}},"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."}}},"JobDefinition":{"type":"object","properties":{"jobName":{"$ref":"#/components/schemas/JobName"},"jobType":{"$ref":"#/components/schemas/JobType"},"sourceQuery":{"$ref":"#/components/schemas/SourceQuery"},"runDate":{"$ref":"#/components/schemas/RunDateValue"},"runDateEnd":{"$ref":"#/components/schemas/RunDateEndValue"},"dataLocation":{"$ref":"#/components/schemas/DataLocation"},"jobSettings":{"$ref":"#/components/schemas/JobSettings"},"monitoringSettings":{"$ref":"#/components/schemas/JobMonitoringSettings"},"notifications":{"$ref":"#/components/schemas/JobNotifications"},"schedulingSettings":{"$ref":"#/components/schemas/SchedulingSettings"}}},"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_.-]+$"},"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"},"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>\"`"},"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."},"DataLocation":{"description":"Identifies where the job reads data from. Combines the platform connection and the specific catalog/schema/table location inside that connection.\n","required":["edgeSiteName","edgeConnectionName","dataSourceName","schemaName","tableName"],"type":"object","properties":{"edgeSiteName":{"description":"Edge site name","type":"string"},"edgeConnectionName":{"type":"string","description":"Edge connection name"},"dataSourceName":{"type":"string","description":"Data source (database/catalog) name"},"databaseProductName":{"$ref":"#/components/schemas/DatabaseProduct"},"schemaName":{"description":"Schema name","type":"string"},"tableName":{"description":"Table name","type":"string"}}},"DatabaseProduct":{"type":"string","readOnly":true,"description":"The database vendor associated with the connection.\n\nCurrent possible values include:\n    * `ATHENA`\n    * `BIGQUERY`\n    * `DATABRICKS`\n    * `DB2`\n    * `MYSQL`\n    * `POSTGRES`\n    * `REDSHIFT`\n    * `SAP`\n    * `SNOWFLAKE`\n    * `SQLSERVER`\n    * `TRINO`\n\n  Additional values will be introduced in the future."},"JobSettings":{"type":"object","description":"Job-level execution settings, including date format and pushdown/pullup tuning. Pullup jobs are available only when the Pullup preview feature is enabled.\n","properties":{"dateFormat":{"$ref":"#/components/schemas/DateFormat"},"pushdownSettings":{"$ref":"#/components/schemas/PushdownSettings"},"pullupSettings":{"$ref":"#/components/schemas/PullupSettings"}}},"DateFormat":{"type":"string","default":"DATE","description":"Date format used for `runDate` / `runDateEnd`.\nSupported values:\n  - DATE -> yyyy-MM-dd \n  - TIMESTAMP -> RFC 3339 timestamp, example - 2025-10-23T13:50:02Z","enum":["DATE","TIMESTAMP"]},"PushdownSettings":{"type":"object","nullable":true,"description":"Settings for pushdown execution. Controls concurrency used by the source system connection.\nProvide this object only when the job's jobType is PUSHDOWN. Omit or set to null for non-pushdown jobs.","properties":{"connections":{"type":"integer","minimum":1,"default":10,"description":"Number of concurrent source connections\n"},"threads":{"type":"integer","minimum":1,"default":5,"description":"Worker threads per connection for pushdown queries\n"}}},"PullupSettings":{"type":"object","nullable":true,"description":"Settings for pullup execution. Controls partitioning and Spark sizing.\nProvide this object only when the job's jobType is PULLUP. Omit or set to null for non-pullup jobs.\n\nPullup functionality is available only when the Pullup preview feature is enabled.","properties":{"loadOptions":{"$ref":"#/components/schemas/LoadOptions"},"sparkJobSizing":{"$ref":"#/components/schemas/SparkJobSizing"},"sparkSqlProperties":{"type":"object","nullable":true,"description":"Arbitrary Spark SQL session properties as key/value pairs\n","additionalProperties":{"type":"string"}}}},"LoadOptions":{"type":"object","nullable":true,"description":"Data loading options applied when reading from the source\n","properties":{"numPartitions":{"type":"integer","minimum":0,"default":0,"description":"Number of Spark input partitions\n"},"parallelJdbcOptions":{"$ref":"#/components/schemas/ParallelJdbcOptions"}}},"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false},"SparkJobSizing":{"type":"object","nullable":true,"description":"Optional manual sizing for Spark resources.\n\nIf this object is **omitted or null**, the platform automatically selects\nSpark resources based on the source query.","properties":{"numExecutors":{"type":"integer","minimum":1,"description":"Number of executors to use (upper bound).","default":1},"driverCores":{"type":"integer","minimum":1,"description":"Number of driver CPU cores.","default":1},"numExecutorCores":{"type":"integer","minimum":1,"description":"Number of CPU cores per executor.","default":1},"executorMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Maximum memory per executor in GB.","default":1}]},"driverMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Driver memory in GB.","default":1}]},"memoryOverheadGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Additional off-heap memory per executor in GB.","nullable":true,"default":null}]}},"additionalProperties":false},"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"},"JobMonitoringSettings":{"type":"object","description":"Monitoring configuration for the job.  This structure is designed for future extensibility to include additional monitor types.","properties":{"adaptiveMonitors":{"$ref":"#/components/schemas/AdaptiveMonitors"},"customMonitors":{"type":"array","maxItems":65535,"items":{"$ref":"#/components/schemas/CustomMonitors"}}}},"AdaptiveMonitors":{"type":"object","description":"Feature toggles for adaptive monitors computed during profiling. All data quality jobs always run profiling with data type detection and schema-change checks enabled.\n","properties":{"descriptiveStatistics":{"type":"boolean","default":false,"description":"Show descriptive statistics in profiling results (e.g., count, min, mean, max). Note: may expose sensitive values such as minimum/maximum. If disabled, all column values are masked in the profiling results.\n"},"emptyFields":{"type":"boolean","default":true,"description":"Detect changes in the number of empty values in numeric columns.\n"},"executionTime":{"type":"boolean","default":false,"description":"Track changes in total execution time of the data job.\n"},"max":{"type":"boolean","default":false,"description":"Detect changes in the highest value across numeric columns.\n"},"mean":{"type":"boolean","default":false,"description":"Detect changes in the average (mean) value across numeric columns.\n"},"min":{"type":"boolean","default":false,"description":"Detect changes in the lowest value across numeric columns.\n"},"nullValues":{"type":"boolean","default":true,"description":"Detect changes in the number of NULL values across all columns.\n"},"rowCount":{"type":"boolean","default":true,"description":"Track changes in the total number of rows.\n"},"uniqueness":{"type":"boolean","default":true,"description":"Track changes in the number of distinct values across all columns.\n"},"settings":{"$ref":"#/components/schemas/AdaptiveMonitorSettings"}}},"AdaptiveMonitorSettings":{"type":"object","description":"Optional learning/tuning parameters applied to the above monitors.\n","properties":{"dataLookBack":{"type":"integer","minimum":0,"default":10,"description":"Number of historical runs to consider when detecting changes (0 = no look back).\n"},"learningPhase":{"type":"integer","minimum":0,"default":4,"description":"Number of initial runs used to learn a baseline before signaling changes (0 = no learning phase).    \n"}}},"CustomMonitors":{"type":"object","description":"A user-defined custom data quality monitor.","required":["monitorName","customQuery"],"properties":{"monitorName":{"type":"string","description":"Unique monitor name.","pattern":"^[a-zA-Z0-9_-]+$","minLength":1,"maxLength":255},"customQuery":{"type":"string","description":"The SQL query."},"filterQuery":{"type":"string","description":"Optional SQL filter clause applied to the monitor."},"primaryColumn":{"type":"string","description":"Column the monitor is scoped to."},"description":{"type":"string","description":"Human-readable description of the monitor.","maxLength":256},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions this monitor measures.","items":{"type":"string"}},"notifications":{"type":"array","maxItems":500,"description":"Alert notification configurations.","items":{"$ref":"#/components/schemas/CustomMonitorNotification"}},"tolerance":{"type":"integer","description":"Number as a percentage of tolerated failures before flagging the monitor as breaking.","minimum":0,"maximum":100},"isActive":{"type":"boolean","description":"Whether the monitor is active."},"isSuppressed":{"type":"boolean","description":"Whether the monitor is suppressed."}}},"CustomMonitorNotification":{"type":"object","description":"Alert notification configuration attached to a custom monitor.","required":["notificationType","enabled","message","name"],"properties":{"notificationType":{"$ref":"#/components/schemas/CustomMonitorNotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom notification message.","maxLength":256},"channels":{"type":"array","maxItems":500,"description":"Channels to send out notifications.","items":{"$ref":"#/components/schemas/NotificationChannel"}},"name":{"type":"string","description":"Unique identifier for this notification entry."}}},"CustomMonitorNotificationType":{"type":"string","description":"Determines when a notification is triggered.\nThe current available values: * 'PASSING'   — monitor transitions to a passing state * 'BREAKING'  — monitor fails * 'EXCEPTION' — monitor encounters an execution error\n"},"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true},"JobNotifications":{"type":"object","description":"Controls which events trigger a notification, which channels deliver them, and what message is sent. This schema is **channel-extensible**: it starts with EMAIL and will be updated in future versions to support additional channels (e.g., Slack) without breaking existing clients.\n","properties":{"notificationOptions":{"type":"array","description":"Per-event settings. Add one item per event to monitor.","items":{"$ref":"#/components/schemas/NotificationOption"}},"globalMessage":{"type":"string","description":"Default message template when `useIndividualMessages` is false."},"useIndividualMessages":{"type":"boolean","description":"If true, use each option's `message`; otherwise use `globalMessage`."},"channels":{"type":"array","minItems":1,"description":"Delivery channels and their destinations","items":{"$ref":"#/components/schemas/NotificationChannel"}}},"required":["notificationOptions","channels"]},"NotificationOption":{"type":"object","description":"Configuration for a single notification event.\n","required":["notificationType","enabled"],"properties":{"notificationType":{"$ref":"#/components/schemas/NotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom message for this notification. Used when `useIndividualMessages` is `true`. If omitted or blank, the service falls back to `globalMessage`, if that is also blank, a system default template is used.\n"},"quantity":{"type":"integer","minimum":0,"nullable":true,"description":"Threshold used **only** for specific types:  \n  - `ROWS_LESS_THAN_LIMIT` – minimum expected row count.  \n  - `RUNS_WITHOUT_DATA` – number of consecutive empty runs (N).  \n  - `DAYS_WITHOUT_DATA` – number of days with no data (N).  \n  - `SCORE_LESS_THAN_LIMIT` – minimum acceptable score.  \n  - `RUN_TIME_MORE_THEN_LIMIT` – maximum allowed runtime in minutes.  \nIgnored for other types."}}},"NotificationType":{"type":"string","description":"The event that triggers this notification.\n\nCurrent possible values include:\n  * `JOB_FAILED`            – sent when a job run fails.\n  * `JOB_COMPLETED`         – sent when a job run finishes successfully.\n  * `ROWS_LESS_THAN_LIMIT`  – sent when produced row count is below a limit.\n  * `RUNS_WITHOUT_DATA`     – sent after N consecutive runs produced no data.\n  * `DAYS_WITHOUT_DATA`     – sent when no data was produced for N days.\n  * `SCORE_LESS_THAN_LIMIT` – sent when quality score is below a limit.\n  * `RUN_TIME_MORE_THEN_LIMIT` – sent when runtime exceeds a limit (in minutes).\n\nAdditional notification types may be introduced in the future."},"SchedulingSettings":{"nullable":true,"description":"Controls when a scheduled job runs and how `runDate` is adjusted. Exactly **one** schedule mode is allowed. **Optional** If omitted or null, the job will not be scheduled.\n","oneOf":[{"$ref":"#/components/schemas/SchedulingHourly"},{"$ref":"#/components/schemas/SchedulingDaily"},{"$ref":"#/components/schemas/SchedulingMonthly"}],"discriminator":{"propertyName":"schedulerMode","mapping":{"HOURLY":"#/components/schemas/SchedulingHourly","DAILY":"#/components/schemas/SchedulingDaily","MONTHLY":"#/components/schemas/SchedulingMonthly"}}},"SchedulingHourly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["hourly","schedulerMode"],"description":"Hourly schedule configuration. If scheduleRunTime is set \"14:30:00\", the job runs at 14:30, 15:30, 16:30, etc.","properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `HOURLY`."},"hourly":{"type":"object","description":"Hourly schedule rules.","required":["hourlyOffset"],"properties":{"hourlyOffset":{"type":"string","description":"Run-date offset in hours relative to the scheduled time.\n\nCurrent possible values include:\n  * `SCHEDULED` – use the scheduled date/time.\n  * `ONE_HOUR` – run date is 1 hour before the scheduled time.\n  * `TWO_HOURS` – run date is 2 hours before the scheduled time.\n\nAdditional values MAY be added in future versions."}}}}}]},"SchedulingBase":{"type":"object","required":["isActive","scheduledRunTime","schedulerMode"],"properties":{"isActive":{"type":"boolean","description":"Enable/disable the schedule (disabled schedules do not trigger runs)."},"scheduledRunTime":{"type":"string","description":"Time of day in **UTC**, format `HH:mm:ss`.  (24 hours) Example: `14:10:00` means the job starts at 14:10:00 UTC.\n"},"schedulerMode":{"type":"string","description":"Schedule type.\n\nCurrent possible values:\n  * `HOURLY`\n  * `DAILY`\n  * `MONTHLY`\n\nAdditional modes MAY be added in future versions."}}},"SchedulingDaily":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["daily","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `DAILY`."},"daily":{"type":"object","description":"Daily schedule rules.","required":["dailyOffset","daysOfWeek"],"properties":{"dailyOffset":{"type":"string","description":"Run-date offset in days relative to the scheduled day.\n\nCurrent possible values include:\n  * `SCHEDULED`\n  * `ONE_DAY`\n  * `TWO_DAYS`\n  * `THREE_DAYS`\n  * `FOUR_DAYS`\n  * `FIVE_DAYS`\n  * `SIX_DAYS`\n  * `SEVEN_DAYS`\n\nAdditional values MAY be added in future versions."},"daysOfWeek":{"type":"array","minItems":1,"items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]},"description":"Days of week to run."}}}}}]},"SchedulingMonthly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["monthly","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `MONTHLY`."},"monthly":{"type":"object","description":"Monthly schedule rules.","required":["monthlyRepeat","monthlyOffset"],"properties":{"monthlyRepeat":{"type":"string","description":"Which day of the month to run the job on.\n\nCurrent possible values:\n  * `FIRST` – first day of the month\n  * `LAST`  – last day of the month\n  * `DAY`   – specific calendar day (requires `dayNumber` in 1–31 range)\n\nAdditional values MAY be added in future versions."},"monthlyOffset":{"type":"string","description":"Run-date offset applied to the scheduled monthly day.\n\nCurrent possible values include:\n  * `SCHEDULED`              - use the scheduled date\n  * `FIRST_OF_CURRENT_MONTH` - first day of the current month\n  * `LAST_OF_CURRENT_MONTH`  - last day of the current month\n  * `FIRST_OF_PRIOR_MONTH`   - first day of the prior month\n  * `LAST_OF_PRIOR_MONTH`    - last day of the prior month\n\nAdditional values may be added in future versions."},"dayNumber":{"type":"integer","minimum":1,"maximum":31,"nullable":true,"description":"Required when `monthlyRepeat = DAY`."}}}}}]}}}}
```

## The JobSubmission object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"JobSubmission":{"type":"object","properties":{"jobRunId":{"type":"string","format":"uuid"}}}}}}
```

## The DataLocation object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"DataLocation":{"description":"Identifies where the job reads data from. Combines the platform connection and the specific catalog/schema/table location inside that connection.\n","required":["edgeSiteName","edgeConnectionName","dataSourceName","schemaName","tableName"],"type":"object","properties":{"edgeSiteName":{"description":"Edge site name","type":"string"},"edgeConnectionName":{"type":"string","description":"Edge connection name"},"dataSourceName":{"type":"string","description":"Data source (database/catalog) name"},"databaseProductName":{"$ref":"#/components/schemas/DatabaseProduct"},"schemaName":{"description":"Schema name","type":"string"},"tableName":{"description":"Table name","type":"string"}}},"DatabaseProduct":{"type":"string","readOnly":true,"description":"The database vendor associated with the connection.\n\nCurrent possible values include:\n    * `ATHENA`\n    * `BIGQUERY`\n    * `DATABRICKS`\n    * `DB2`\n    * `MYSQL`\n    * `POSTGRES`\n    * `REDSHIFT`\n    * `SAP`\n    * `SNOWFLAKE`\n    * `SQLSERVER`\n    * `TRINO`\n\n  Additional values will be introduced in the future."}}}}
```

## The BackrunTimeBin object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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"}}}}
```

## The Backrun object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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"}}}}
```

## The JobSettings object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"JobSettings":{"type":"object","description":"Job-level execution settings, including date format and pushdown/pullup tuning. Pullup jobs are available only when the Pullup preview feature is enabled.\n","properties":{"dateFormat":{"$ref":"#/components/schemas/DateFormat"},"pushdownSettings":{"$ref":"#/components/schemas/PushdownSettings"},"pullupSettings":{"$ref":"#/components/schemas/PullupSettings"}}},"DateFormat":{"type":"string","default":"DATE","description":"Date format used for `runDate` / `runDateEnd`.\nSupported values:\n  - DATE -> yyyy-MM-dd \n  - TIMESTAMP -> RFC 3339 timestamp, example - 2025-10-23T13:50:02Z","enum":["DATE","TIMESTAMP"]},"PushdownSettings":{"type":"object","nullable":true,"description":"Settings for pushdown execution. Controls concurrency used by the source system connection.\nProvide this object only when the job's jobType is PUSHDOWN. Omit or set to null for non-pushdown jobs.","properties":{"connections":{"type":"integer","minimum":1,"default":10,"description":"Number of concurrent source connections\n"},"threads":{"type":"integer","minimum":1,"default":5,"description":"Worker threads per connection for pushdown queries\n"}}},"PullupSettings":{"type":"object","nullable":true,"description":"Settings for pullup execution. Controls partitioning and Spark sizing.\nProvide this object only when the job's jobType is PULLUP. Omit or set to null for non-pullup jobs.\n\nPullup functionality is available only when the Pullup preview feature is enabled.","properties":{"loadOptions":{"$ref":"#/components/schemas/LoadOptions"},"sparkJobSizing":{"$ref":"#/components/schemas/SparkJobSizing"},"sparkSqlProperties":{"type":"object","nullable":true,"description":"Arbitrary Spark SQL session properties as key/value pairs\n","additionalProperties":{"type":"string"}}}},"LoadOptions":{"type":"object","nullable":true,"description":"Data loading options applied when reading from the source\n","properties":{"numPartitions":{"type":"integer","minimum":0,"default":0,"description":"Number of Spark input partitions\n"},"parallelJdbcOptions":{"$ref":"#/components/schemas/ParallelJdbcOptions"}}},"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false},"SparkJobSizing":{"type":"object","nullable":true,"description":"Optional manual sizing for Spark resources.\n\nIf this object is **omitted or null**, the platform automatically selects\nSpark resources based on the source query.","properties":{"numExecutors":{"type":"integer","minimum":1,"description":"Number of executors to use (upper bound).","default":1},"driverCores":{"type":"integer","minimum":1,"description":"Number of driver CPU cores.","default":1},"numExecutorCores":{"type":"integer","minimum":1,"description":"Number of CPU cores per executor.","default":1},"executorMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Maximum memory per executor in GB.","default":1}]},"driverMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Driver memory in GB.","default":1}]},"memoryOverheadGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Additional off-heap memory per executor in GB.","nullable":true,"default":null}]}},"additionalProperties":false},"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"}}}}
```

## The JobSettingsPatch object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"JobSettingsPatch":{"type":"object","nullable":true,"properties":{"dateFormat":{"$ref":"#/components/schemas/DateFormatPatch"},"pushdownSettings":{"$ref":"#/components/schemas/PushdownSettingsPatch"},"pullupSettings":{"$ref":"#/components/schemas/PullupSettingsPatch"}}},"DateFormatPatch":{"type":"string","nullable":true,"description":"Date format used for `runDate` / `runDateEnd`.\nSupported values:\n  - DATE -> yyyy-MM-dd \n  - TIMESTAMP -> RFC 3339 timestamp, example - 2025-10-23T13:50:02Z","enum":["DATE","TIMESTAMP"]},"PushdownSettingsPatch":{"type":"object","nullable":true,"description":"Settings for pushdown execution. Controls concurrency used by the source system connection.\nProvide this object only when the job's jobType is PUSHDOWN. Omit or set to null for non-pushdown jobs.","properties":{"connections":{"type":"integer","description":"Number of concurrent source connections\n","minimum":1,"nullable":true},"threads":{"type":"integer","description":"Worker threads per connection for pushdown queries\n","minimum":1,"nullable":true}}},"PullupSettingsPatch":{"type":"object","nullable":true,"description":"Settings for pullup execution. Controls partitioning and Spark sizing.\nProvide this object only when the job's jobType is PULLUP. Omit or set to null for non-pullup jobs.\n\nPullup functionality is available only when the Pullup preview feature is enabled.","properties":{"loadOptions":{"$ref":"#/components/schemas/LoadOptionsPatch"},"sparkJobSizing":{"$ref":"#/components/schemas/SparkJobSizingPatch"},"sparkSqlProperties":{"type":"object","nullable":true,"description":"Arbitrary Spark SQL session properties as key/value pairs\n","additionalProperties":{"type":"string"}}}},"LoadOptionsPatch":{"type":"object","nullable":true,"description":"Data loading options applied when reading from the source\n","properties":{"numPartitions":{"type":"integer","nullable":true,"minimum":0,"description":"Number of Spark input partitions\n"},"parallelJdbcOptions":{"$ref":"#/components/schemas/ParallelJdbcOptions"}}},"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false},"SparkJobSizingPatch":{"type":"object","nullable":true,"description":"Optional manual sizing for Spark resources.\n\nIf this object is **omitted or null**, the platform automatically selects\nSpark resources based on the source query.","properties":{"numExecutors":{"type":"integer","minimum":1,"description":"Number of executors to use (upper bound)."},"driverCores":{"type":"integer","minimum":1,"description":"Number of driver CPU cores."},"numExecutorCores":{"type":"integer","minimum":1,"description":"Number of CPU cores per executor."},"executorMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Maximum memory per executor in GB."}]},"driverMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Driver memory in GB."}]},"memoryOverheadGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Additional off-heap memory per executor in GB.","nullable":true}]}},"additionalProperties":false},"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"}}}}
```

## The PushdownSettings object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"PushdownSettings":{"type":"object","nullable":true,"description":"Settings for pushdown execution. Controls concurrency used by the source system connection.\nProvide this object only when the job's jobType is PUSHDOWN. Omit or set to null for non-pushdown jobs.","properties":{"connections":{"type":"integer","minimum":1,"default":10,"description":"Number of concurrent source connections\n"},"threads":{"type":"integer","minimum":1,"default":5,"description":"Worker threads per connection for pushdown queries\n"}}}}}}
```

## The PushdownSettingsPatch object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"PushdownSettingsPatch":{"type":"object","nullable":true,"description":"Settings for pushdown execution. Controls concurrency used by the source system connection.\nProvide this object only when the job's jobType is PUSHDOWN. Omit or set to null for non-pushdown jobs.","properties":{"connections":{"type":"integer","description":"Number of concurrent source connections\n","minimum":1,"nullable":true},"threads":{"type":"integer","description":"Worker threads per connection for pushdown queries\n","minimum":1,"nullable":true}}}}}}
```

## The PullupSettings object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"PullupSettings":{"type":"object","nullable":true,"description":"Settings for pullup execution. Controls partitioning and Spark sizing.\nProvide this object only when the job's jobType is PULLUP. Omit or set to null for non-pullup jobs.\n\nPullup functionality is available only when the Pullup preview feature is enabled.","properties":{"loadOptions":{"$ref":"#/components/schemas/LoadOptions"},"sparkJobSizing":{"$ref":"#/components/schemas/SparkJobSizing"},"sparkSqlProperties":{"type":"object","nullable":true,"description":"Arbitrary Spark SQL session properties as key/value pairs\n","additionalProperties":{"type":"string"}}}},"LoadOptions":{"type":"object","nullable":true,"description":"Data loading options applied when reading from the source\n","properties":{"numPartitions":{"type":"integer","minimum":0,"default":0,"description":"Number of Spark input partitions\n"},"parallelJdbcOptions":{"$ref":"#/components/schemas/ParallelJdbcOptions"}}},"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false},"SparkJobSizing":{"type":"object","nullable":true,"description":"Optional manual sizing for Spark resources.\n\nIf this object is **omitted or null**, the platform automatically selects\nSpark resources based on the source query.","properties":{"numExecutors":{"type":"integer","minimum":1,"description":"Number of executors to use (upper bound).","default":1},"driverCores":{"type":"integer","minimum":1,"description":"Number of driver CPU cores.","default":1},"numExecutorCores":{"type":"integer","minimum":1,"description":"Number of CPU cores per executor.","default":1},"executorMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Maximum memory per executor in GB.","default":1}]},"driverMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Driver memory in GB.","default":1}]},"memoryOverheadGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Additional off-heap memory per executor in GB.","nullable":true,"default":null}]}},"additionalProperties":false},"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"}}}}
```

## The PullupSettingsPatch object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"PullupSettingsPatch":{"type":"object","nullable":true,"description":"Settings for pullup execution. Controls partitioning and Spark sizing.\nProvide this object only when the job's jobType is PULLUP. Omit or set to null for non-pullup jobs.\n\nPullup functionality is available only when the Pullup preview feature is enabled.","properties":{"loadOptions":{"$ref":"#/components/schemas/LoadOptionsPatch"},"sparkJobSizing":{"$ref":"#/components/schemas/SparkJobSizingPatch"},"sparkSqlProperties":{"type":"object","nullable":true,"description":"Arbitrary Spark SQL session properties as key/value pairs\n","additionalProperties":{"type":"string"}}}},"LoadOptionsPatch":{"type":"object","nullable":true,"description":"Data loading options applied when reading from the source\n","properties":{"numPartitions":{"type":"integer","nullable":true,"minimum":0,"description":"Number of Spark input partitions\n"},"parallelJdbcOptions":{"$ref":"#/components/schemas/ParallelJdbcOptions"}}},"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false},"SparkJobSizingPatch":{"type":"object","nullable":true,"description":"Optional manual sizing for Spark resources.\n\nIf this object is **omitted or null**, the platform automatically selects\nSpark resources based on the source query.","properties":{"numExecutors":{"type":"integer","minimum":1,"description":"Number of executors to use (upper bound)."},"driverCores":{"type":"integer","minimum":1,"description":"Number of driver CPU cores."},"numExecutorCores":{"type":"integer","minimum":1,"description":"Number of CPU cores per executor."},"executorMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Maximum memory per executor in GB."}]},"driverMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Driver memory in GB."}]},"memoryOverheadGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Additional off-heap memory per executor in GB.","nullable":true}]}},"additionalProperties":false},"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"}}}}
```

## The LoadOptions object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"LoadOptions":{"type":"object","nullable":true,"description":"Data loading options applied when reading from the source\n","properties":{"numPartitions":{"type":"integer","minimum":0,"default":0,"description":"Number of Spark input partitions\n"},"parallelJdbcOptions":{"$ref":"#/components/schemas/ParallelJdbcOptions"}}},"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false}}}}
```

## The LoadOptionsPatch object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"LoadOptionsPatch":{"type":"object","nullable":true,"description":"Data loading options applied when reading from the source\n","properties":{"numPartitions":{"type":"integer","nullable":true,"minimum":0,"description":"Number of Spark input partitions\n"},"parallelJdbcOptions":{"$ref":"#/components/schemas/ParallelJdbcOptions"}}},"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false}}}}
```

## The ParallelJdbcOptions object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"ParallelJdbcOptions":{"nullable":true,"description":"Options for parallel JDBC partitioning. Choose a `mode`, which determines which\nfields are required: \n - `AUTO` – system selects column & partitions \n - `AUTO_COLUMN` – system selects column; you provide `partitionNumber`\n - `MANUAL` – you provide `partitionColumn` and `partitionNumber`","oneOf":[{"$ref":"#/components/schemas/ParallelJdbcOptionsAuto"},{"$ref":"#/components/schemas/ParallelJdbcOptionsAutoColumn"},{"$ref":"#/components/schemas/ParallelJdbcOptionsManual"}],"discriminator":{"propertyName":"mode","mapping":{"AUTO":"#/components/schemas/ParallelJdbcOptionsAuto","AUTO_COLUMN":"#/components/schemas/ParallelJdbcOptionsAutoColumn","MANUAL":"#/components/schemas/ParallelJdbcOptionsManual"}},"default":null},"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false},"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false},"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false}}}}
```

## The SparkJobSizing object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"SparkJobSizing":{"type":"object","nullable":true,"description":"Optional manual sizing for Spark resources.\n\nIf this object is **omitted or null**, the platform automatically selects\nSpark resources based on the source query.","properties":{"numExecutors":{"type":"integer","minimum":1,"description":"Number of executors to use (upper bound).","default":1},"driverCores":{"type":"integer","minimum":1,"description":"Number of driver CPU cores.","default":1},"numExecutorCores":{"type":"integer","minimum":1,"description":"Number of CPU cores per executor.","default":1},"executorMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Maximum memory per executor in GB.","default":1}]},"driverMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Driver memory in GB.","default":1}]},"memoryOverheadGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Additional off-heap memory per executor in GB.","nullable":true,"default":null}]}},"additionalProperties":false},"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"}}}}
```

## The SparkJobSizingPatch object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"SparkJobSizingPatch":{"type":"object","nullable":true,"description":"Optional manual sizing for Spark resources.\n\nIf this object is **omitted or null**, the platform automatically selects\nSpark resources based on the source query.","properties":{"numExecutors":{"type":"integer","minimum":1,"description":"Number of executors to use (upper bound)."},"driverCores":{"type":"integer","minimum":1,"description":"Number of driver CPU cores."},"numExecutorCores":{"type":"integer","minimum":1,"description":"Number of CPU cores per executor."},"executorMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Maximum memory per executor in GB."}]},"driverMemoryGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Driver memory in GB."}]},"memoryOverheadGb":{"allOf":[{"$ref":"#/components/schemas/SparkMemoryGB"},{"description":"Additional off-heap memory per executor in GB.","nullable":true}]}},"additionalProperties":false},"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"}}}}
```

## The SparkMemoryGB object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"SparkMemoryGB":{"type":"integer","description":"Memory amount in gigabytes. The unit is in **GB**, fractional values are not supported\n"}}}}
```

## The ParallelJdbcOptionsAuto object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"ParallelJdbcOptionsAuto":{"type":"object","description":"Automatic column & partition selection.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO`."}},"required":["mode"],"additionalProperties":false}}}}
```

## The ParallelJdbcOptionsAutoColumn object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"ParallelJdbcOptionsAutoColumn":{"type":"object","description":"Automatic column selection; you specify the number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `AUTO_COLUMN`."},"partitionNumber":{"type":"integer","minimum":0,"description":"Number of partitions to use."}},"required":["mode","partitionNumber"],"additionalProperties":false}}}}
```

## The ParallelJdbcOptionsManual object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"ParallelJdbcOptionsManual":{"type":"object","description":"You specify both the partition column and number of partitions.","properties":{"mode":{"type":"string","description":"Partitioning mode.\n\nFor this schema, the value MUST be `MANUAL`."},"partitionColumn":{"type":"string","description":"Numeric/integer column to partition on."},"partitionNumber":{"type":"integer","minimum":1,"description":"Number of partitions to use."}},"required":["mode","partitionColumn","partitionNumber"],"additionalProperties":false}}}}
```

## The JobMonitoringSettings object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"JobMonitoringSettings":{"type":"object","description":"Monitoring configuration for the job.  This structure is designed for future extensibility to include additional monitor types.","properties":{"adaptiveMonitors":{"$ref":"#/components/schemas/AdaptiveMonitors"},"customMonitors":{"type":"array","maxItems":65535,"items":{"$ref":"#/components/schemas/CustomMonitors"}}}},"AdaptiveMonitors":{"type":"object","description":"Feature toggles for adaptive monitors computed during profiling. All data quality jobs always run profiling with data type detection and schema-change checks enabled.\n","properties":{"descriptiveStatistics":{"type":"boolean","default":false,"description":"Show descriptive statistics in profiling results (e.g., count, min, mean, max). Note: may expose sensitive values such as minimum/maximum. If disabled, all column values are masked in the profiling results.\n"},"emptyFields":{"type":"boolean","default":true,"description":"Detect changes in the number of empty values in numeric columns.\n"},"executionTime":{"type":"boolean","default":false,"description":"Track changes in total execution time of the data job.\n"},"max":{"type":"boolean","default":false,"description":"Detect changes in the highest value across numeric columns.\n"},"mean":{"type":"boolean","default":false,"description":"Detect changes in the average (mean) value across numeric columns.\n"},"min":{"type":"boolean","default":false,"description":"Detect changes in the lowest value across numeric columns.\n"},"nullValues":{"type":"boolean","default":true,"description":"Detect changes in the number of NULL values across all columns.\n"},"rowCount":{"type":"boolean","default":true,"description":"Track changes in the total number of rows.\n"},"uniqueness":{"type":"boolean","default":true,"description":"Track changes in the number of distinct values across all columns.\n"},"settings":{"$ref":"#/components/schemas/AdaptiveMonitorSettings"}}},"AdaptiveMonitorSettings":{"type":"object","description":"Optional learning/tuning parameters applied to the above monitors.\n","properties":{"dataLookBack":{"type":"integer","minimum":0,"default":10,"description":"Number of historical runs to consider when detecting changes (0 = no look back).\n"},"learningPhase":{"type":"integer","minimum":0,"default":4,"description":"Number of initial runs used to learn a baseline before signaling changes (0 = no learning phase).    \n"}}},"CustomMonitors":{"type":"object","description":"A user-defined custom data quality monitor.","required":["monitorName","customQuery"],"properties":{"monitorName":{"type":"string","description":"Unique monitor name.","pattern":"^[a-zA-Z0-9_-]+$","minLength":1,"maxLength":255},"customQuery":{"type":"string","description":"The SQL query."},"filterQuery":{"type":"string","description":"Optional SQL filter clause applied to the monitor."},"primaryColumn":{"type":"string","description":"Column the monitor is scoped to."},"description":{"type":"string","description":"Human-readable description of the monitor.","maxLength":256},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions this monitor measures.","items":{"type":"string"}},"notifications":{"type":"array","maxItems":500,"description":"Alert notification configurations.","items":{"$ref":"#/components/schemas/CustomMonitorNotification"}},"tolerance":{"type":"integer","description":"Number as a percentage of tolerated failures before flagging the monitor as breaking.","minimum":0,"maximum":100},"isActive":{"type":"boolean","description":"Whether the monitor is active."},"isSuppressed":{"type":"boolean","description":"Whether the monitor is suppressed."}}},"CustomMonitorNotification":{"type":"object","description":"Alert notification configuration attached to a custom monitor.","required":["notificationType","enabled","message","name"],"properties":{"notificationType":{"$ref":"#/components/schemas/CustomMonitorNotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom notification message.","maxLength":256},"channels":{"type":"array","maxItems":500,"description":"Channels to send out notifications.","items":{"$ref":"#/components/schemas/NotificationChannel"}},"name":{"type":"string","description":"Unique identifier for this notification entry."}}},"CustomMonitorNotificationType":{"type":"string","description":"Determines when a notification is triggered.\nThe current available values: * 'PASSING'   — monitor transitions to a passing state * 'BREAKING'  — monitor fails * 'EXCEPTION' — monitor encounters an execution error\n"},"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true}}}}
```

## The JobMonitoringSettingsPatch object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"JobMonitoringSettingsPatch":{"type":"object","description":"Monitoring configuration for the job.  This structure is designed for future extensibility to include additional monitor types.","properties":{"adaptiveMonitors":{"$ref":"#/components/schemas/AdaptiveMonitorsPatch"},"customMonitors":{"type":"array","maxItems":65535,"items":{"$ref":"#/components/schemas/CustomMonitorsPatch"}}}},"AdaptiveMonitorsPatch":{"type":"object","description":"Feature toggles for adaptive monitors computed during profiling. All data quality jobs always run profiling with data type detection and schema-change checks enabled.\n","properties":{"descriptiveStatistics":{"type":"boolean","nullable":true,"description":"Show descriptive statistics in profiling results (e.g., count, min, mean, max). Note: may expose sensitive values such as minimum/maximum. If disabled, all column values are masked in the profiling results.\n"},"emptyFields":{"type":"boolean","nullable":true,"description":"Detect changes in the number of empty values in numeric columns.\n"},"executionTime":{"type":"boolean","nullable":true,"description":"Track changes in total execution time of the data job.\n"},"max":{"type":"boolean","nullable":true,"description":"Detect changes in the highest value across numeric columns.\n"},"mean":{"type":"boolean","nullable":true,"description":"Detect changes in the average (mean) value across numeric columns.\n"},"min":{"type":"boolean","nullable":true,"description":"Detect changes in the lowest value across numeric columns.\n"},"nullValues":{"type":"boolean","nullable":true,"description":"Detect changes in the number of NULL values across all columns.\n"},"rowCount":{"type":"boolean","nullable":true,"description":"Track changes in the total number of rows.\n"},"uniqueness":{"type":"boolean","nullable":true,"description":"Track changes in the number of distinct values across all columns.\n"},"settings":{"$ref":"#/components/schemas/AdaptiveMonitorSettingsPatch"}}},"AdaptiveMonitorSettingsPatch":{"type":"object","description":"Optional learning/tuning parameters applied to the above monitors.\n","properties":{"dataLookBack":{"type":"integer","nullable":true,"minimum":0,"description":"Number of historical runs to consider when detecting changes (0 = no look back).\n"},"learningPhase":{"type":"integer","minimum":0,"nullable":true,"description":"Number of initial runs used to learn a baseline before signaling changes (0 = no learning phase).\n"}}},"CustomMonitorsPatch":{"type":"object","description":"An update to a user-defined custom data quality monitor.","properties":{"monitorName":{"type":"string","description":"Unique monitor name.","pattern":"^[a-zA-Z0-9_-]+$","minLength":1,"maxLength":255},"customQuery":{"type":"string","description":"The SQL query."},"filterQuery":{"type":"string","description":"Optional SQL filter clause applied to the monitor."},"primaryColumn":{"type":"string","description":"Column the monitor is scoped to."},"description":{"type":"string","description":"Description of the monitor.","maxLength":256},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions this monitor measures.","items":{"type":"string"}},"notifications":{"type":"array","maxItems":500,"description":"Alert notification configurations.","items":{"$ref":"#/components/schemas/CustomMonitorNotification"}},"tolerance":{"type":"integer","description":"Number as a percentage of tolerated failures before flagging the monitor as breaking.","minimum":0,"maximum":100},"isActive":{"type":"boolean","description":"Whether the monitor is active."},"isSuppressed":{"type":"boolean","description":"Whether the monitor is suppressed."},"opIndicator":{"type":"string","enum":["CREATE","UPDATE","DELETE","NOOP"],"description":"Operation to be performed for this monitor"}}},"CustomMonitorNotification":{"type":"object","description":"Alert notification configuration attached to a custom monitor.","required":["notificationType","enabled","message","name"],"properties":{"notificationType":{"$ref":"#/components/schemas/CustomMonitorNotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom notification message.","maxLength":256},"channels":{"type":"array","maxItems":500,"description":"Channels to send out notifications.","items":{"$ref":"#/components/schemas/NotificationChannel"}},"name":{"type":"string","description":"Unique identifier for this notification entry."}}},"CustomMonitorNotificationType":{"type":"string","description":"Determines when a notification is triggered.\nThe current available values: * 'PASSING'   — monitor transitions to a passing state * 'BREAKING'  — monitor fails * 'EXCEPTION' — monitor encounters an execution error\n"},"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true}}}}
```

## The AdaptiveMonitors object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"AdaptiveMonitors":{"type":"object","description":"Feature toggles for adaptive monitors computed during profiling. All data quality jobs always run profiling with data type detection and schema-change checks enabled.\n","properties":{"descriptiveStatistics":{"type":"boolean","default":false,"description":"Show descriptive statistics in profiling results (e.g., count, min, mean, max). Note: may expose sensitive values such as minimum/maximum. If disabled, all column values are masked in the profiling results.\n"},"emptyFields":{"type":"boolean","default":true,"description":"Detect changes in the number of empty values in numeric columns.\n"},"executionTime":{"type":"boolean","default":false,"description":"Track changes in total execution time of the data job.\n"},"max":{"type":"boolean","default":false,"description":"Detect changes in the highest value across numeric columns.\n"},"mean":{"type":"boolean","default":false,"description":"Detect changes in the average (mean) value across numeric columns.\n"},"min":{"type":"boolean","default":false,"description":"Detect changes in the lowest value across numeric columns.\n"},"nullValues":{"type":"boolean","default":true,"description":"Detect changes in the number of NULL values across all columns.\n"},"rowCount":{"type":"boolean","default":true,"description":"Track changes in the total number of rows.\n"},"uniqueness":{"type":"boolean","default":true,"description":"Track changes in the number of distinct values across all columns.\n"},"settings":{"$ref":"#/components/schemas/AdaptiveMonitorSettings"}}},"AdaptiveMonitorSettings":{"type":"object","description":"Optional learning/tuning parameters applied to the above monitors.\n","properties":{"dataLookBack":{"type":"integer","minimum":0,"default":10,"description":"Number of historical runs to consider when detecting changes (0 = no look back).\n"},"learningPhase":{"type":"integer","minimum":0,"default":4,"description":"Number of initial runs used to learn a baseline before signaling changes (0 = no learning phase).    \n"}}}}}}
```

## The AdaptiveMonitorsPatch object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"AdaptiveMonitorsPatch":{"type":"object","description":"Feature toggles for adaptive monitors computed during profiling. All data quality jobs always run profiling with data type detection and schema-change checks enabled.\n","properties":{"descriptiveStatistics":{"type":"boolean","nullable":true,"description":"Show descriptive statistics in profiling results (e.g., count, min, mean, max). Note: may expose sensitive values such as minimum/maximum. If disabled, all column values are masked in the profiling results.\n"},"emptyFields":{"type":"boolean","nullable":true,"description":"Detect changes in the number of empty values in numeric columns.\n"},"executionTime":{"type":"boolean","nullable":true,"description":"Track changes in total execution time of the data job.\n"},"max":{"type":"boolean","nullable":true,"description":"Detect changes in the highest value across numeric columns.\n"},"mean":{"type":"boolean","nullable":true,"description":"Detect changes in the average (mean) value across numeric columns.\n"},"min":{"type":"boolean","nullable":true,"description":"Detect changes in the lowest value across numeric columns.\n"},"nullValues":{"type":"boolean","nullable":true,"description":"Detect changes in the number of NULL values across all columns.\n"},"rowCount":{"type":"boolean","nullable":true,"description":"Track changes in the total number of rows.\n"},"uniqueness":{"type":"boolean","nullable":true,"description":"Track changes in the number of distinct values across all columns.\n"},"settings":{"$ref":"#/components/schemas/AdaptiveMonitorSettingsPatch"}}},"AdaptiveMonitorSettingsPatch":{"type":"object","description":"Optional learning/tuning parameters applied to the above monitors.\n","properties":{"dataLookBack":{"type":"integer","nullable":true,"minimum":0,"description":"Number of historical runs to consider when detecting changes (0 = no look back).\n"},"learningPhase":{"type":"integer","minimum":0,"nullable":true,"description":"Number of initial runs used to learn a baseline before signaling changes (0 = no learning phase).\n"}}}}}}
```

## The AdaptiveMonitorSettings object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"AdaptiveMonitorSettings":{"type":"object","description":"Optional learning/tuning parameters applied to the above monitors.\n","properties":{"dataLookBack":{"type":"integer","minimum":0,"default":10,"description":"Number of historical runs to consider when detecting changes (0 = no look back).\n"},"learningPhase":{"type":"integer","minimum":0,"default":4,"description":"Number of initial runs used to learn a baseline before signaling changes (0 = no learning phase).    \n"}}}}}}
```

## The AdaptiveMonitorSettingsPatch object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"AdaptiveMonitorSettingsPatch":{"type":"object","description":"Optional learning/tuning parameters applied to the above monitors.\n","properties":{"dataLookBack":{"type":"integer","nullable":true,"minimum":0,"description":"Number of historical runs to consider when detecting changes (0 = no look back).\n"},"learningPhase":{"type":"integer","minimum":0,"nullable":true,"description":"Number of initial runs used to learn a baseline before signaling changes (0 = no learning phase).\n"}}}}}}
```

## The CustomMonitorNotificationType object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"CustomMonitorNotificationType":{"type":"string","description":"Determines when a notification is triggered.\nThe current available values: * 'PASSING'   — monitor transitions to a passing state * 'BREAKING'  — monitor fails * 'EXCEPTION' — monitor encounters an execution error\n"}}}}
```

## The CustomMonitorNotification object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"CustomMonitorNotification":{"type":"object","description":"Alert notification configuration attached to a custom monitor.","required":["notificationType","enabled","message","name"],"properties":{"notificationType":{"$ref":"#/components/schemas/CustomMonitorNotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom notification message.","maxLength":256},"channels":{"type":"array","maxItems":500,"description":"Channels to send out notifications.","items":{"$ref":"#/components/schemas/NotificationChannel"}},"name":{"type":"string","description":"Unique identifier for this notification entry."}}},"CustomMonitorNotificationType":{"type":"string","description":"Determines when a notification is triggered.\nThe current available values: * 'PASSING'   — monitor transitions to a passing state * 'BREAKING'  — monitor fails * 'EXCEPTION' — monitor encounters an execution error\n"},"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true}}}}
```

## The CustomMonitors object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"CustomMonitors":{"type":"object","description":"A user-defined custom data quality monitor.","required":["monitorName","customQuery"],"properties":{"monitorName":{"type":"string","description":"Unique monitor name.","pattern":"^[a-zA-Z0-9_-]+$","minLength":1,"maxLength":255},"customQuery":{"type":"string","description":"The SQL query."},"filterQuery":{"type":"string","description":"Optional SQL filter clause applied to the monitor."},"primaryColumn":{"type":"string","description":"Column the monitor is scoped to."},"description":{"type":"string","description":"Human-readable description of the monitor.","maxLength":256},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions this monitor measures.","items":{"type":"string"}},"notifications":{"type":"array","maxItems":500,"description":"Alert notification configurations.","items":{"$ref":"#/components/schemas/CustomMonitorNotification"}},"tolerance":{"type":"integer","description":"Number as a percentage of tolerated failures before flagging the monitor as breaking.","minimum":0,"maximum":100},"isActive":{"type":"boolean","description":"Whether the monitor is active."},"isSuppressed":{"type":"boolean","description":"Whether the monitor is suppressed."}}},"CustomMonitorNotification":{"type":"object","description":"Alert notification configuration attached to a custom monitor.","required":["notificationType","enabled","message","name"],"properties":{"notificationType":{"$ref":"#/components/schemas/CustomMonitorNotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom notification message.","maxLength":256},"channels":{"type":"array","maxItems":500,"description":"Channels to send out notifications.","items":{"$ref":"#/components/schemas/NotificationChannel"}},"name":{"type":"string","description":"Unique identifier for this notification entry."}}},"CustomMonitorNotificationType":{"type":"string","description":"Determines when a notification is triggered.\nThe current available values: * 'PASSING'   — monitor transitions to a passing state * 'BREAKING'  — monitor fails * 'EXCEPTION' — monitor encounters an execution error\n"},"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true}}}}
```

## The CustomMonitorsPatch object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"CustomMonitorsPatch":{"type":"object","description":"An update to a user-defined custom data quality monitor.","properties":{"monitorName":{"type":"string","description":"Unique monitor name.","pattern":"^[a-zA-Z0-9_-]+$","minLength":1,"maxLength":255},"customQuery":{"type":"string","description":"The SQL query."},"filterQuery":{"type":"string","description":"Optional SQL filter clause applied to the monitor."},"primaryColumn":{"type":"string","description":"Column the monitor is scoped to."},"description":{"type":"string","description":"Description of the monitor.","maxLength":256},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions this monitor measures.","items":{"type":"string"}},"notifications":{"type":"array","maxItems":500,"description":"Alert notification configurations.","items":{"$ref":"#/components/schemas/CustomMonitorNotification"}},"tolerance":{"type":"integer","description":"Number as a percentage of tolerated failures before flagging the monitor as breaking.","minimum":0,"maximum":100},"isActive":{"type":"boolean","description":"Whether the monitor is active."},"isSuppressed":{"type":"boolean","description":"Whether the monitor is suppressed."},"opIndicator":{"type":"string","enum":["CREATE","UPDATE","DELETE","NOOP"],"description":"Operation to be performed for this monitor"}}},"CustomMonitorNotification":{"type":"object","description":"Alert notification configuration attached to a custom monitor.","required":["notificationType","enabled","message","name"],"properties":{"notificationType":{"$ref":"#/components/schemas/CustomMonitorNotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom notification message.","maxLength":256},"channels":{"type":"array","maxItems":500,"description":"Channels to send out notifications.","items":{"$ref":"#/components/schemas/NotificationChannel"}},"name":{"type":"string","description":"Unique identifier for this notification entry."}}},"CustomMonitorNotificationType":{"type":"string","description":"Determines when a notification is triggered.\nThe current available values: * 'PASSING'   — monitor transitions to a passing state * 'BREAKING'  — monitor fails * 'EXCEPTION' — monitor encounters an execution error\n"},"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true}}}}
```

## The JobNotifications object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"JobNotifications":{"type":"object","description":"Controls which events trigger a notification, which channels deliver them, and what message is sent. This schema is **channel-extensible**: it starts with EMAIL and will be updated in future versions to support additional channels (e.g., Slack) without breaking existing clients.\n","properties":{"notificationOptions":{"type":"array","description":"Per-event settings. Add one item per event to monitor.","items":{"$ref":"#/components/schemas/NotificationOption"}},"globalMessage":{"type":"string","description":"Default message template when `useIndividualMessages` is false."},"useIndividualMessages":{"type":"boolean","description":"If true, use each option's `message`; otherwise use `globalMessage`."},"channels":{"type":"array","minItems":1,"description":"Delivery channels and their destinations","items":{"$ref":"#/components/schemas/NotificationChannel"}}},"required":["notificationOptions","channels"]},"NotificationOption":{"type":"object","description":"Configuration for a single notification event.\n","required":["notificationType","enabled"],"properties":{"notificationType":{"$ref":"#/components/schemas/NotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom message for this notification. Used when `useIndividualMessages` is `true`. If omitted or blank, the service falls back to `globalMessage`, if that is also blank, a system default template is used.\n"},"quantity":{"type":"integer","minimum":0,"nullable":true,"description":"Threshold used **only** for specific types:  \n  - `ROWS_LESS_THAN_LIMIT` – minimum expected row count.  \n  - `RUNS_WITHOUT_DATA` – number of consecutive empty runs (N).  \n  - `DAYS_WITHOUT_DATA` – number of days with no data (N).  \n  - `SCORE_LESS_THAN_LIMIT` – minimum acceptable score.  \n  - `RUN_TIME_MORE_THEN_LIMIT` – maximum allowed runtime in minutes.  \nIgnored for other types."}}},"NotificationType":{"type":"string","description":"The event that triggers this notification.\n\nCurrent possible values include:\n  * `JOB_FAILED`            – sent when a job run fails.\n  * `JOB_COMPLETED`         – sent when a job run finishes successfully.\n  * `ROWS_LESS_THAN_LIMIT`  – sent when produced row count is below a limit.\n  * `RUNS_WITHOUT_DATA`     – sent after N consecutive runs produced no data.\n  * `DAYS_WITHOUT_DATA`     – sent when no data was produced for N days.\n  * `SCORE_LESS_THAN_LIMIT` – sent when quality score is below a limit.\n  * `RUN_TIME_MORE_THEN_LIMIT` – sent when runtime exceeds a limit (in minutes).\n\nAdditional notification types may be introduced in the future."},"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true}}}}
```

## The NotificationChannel object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"NotificationChannel":{"type":"object","description":"Notification delivery channel and its destination/parameters.\n\nCurrent supported channel type:\n  * `EMAIL` – send notifications via email to the given recipients.\n\nAdditional channel types (e.g., `SLACK`) may be introduced in the future.","properties":{"channel":{"type":"string","description":"Delivery channel type.\n\nCurrent value:\n  * `EMAIL`\n\nAdditional values MAY be added in future versions."},"recipients":{"type":"array","minItems":1,"description":"Platform usernames to receive email notifications when `channel = EMAIL`\n(e.g., `jsmith`, `adoe`).","items":{"type":"string"}}},"additionalProperties":true}}}}
```

## The NotificationOption object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"NotificationOption":{"type":"object","description":"Configuration for a single notification event.\n","required":["notificationType","enabled"],"properties":{"notificationType":{"$ref":"#/components/schemas/NotificationType"},"enabled":{"type":"boolean","description":"Whether this notification is active."},"message":{"type":"string","description":"Custom message for this notification. Used when `useIndividualMessages` is `true`. If omitted or blank, the service falls back to `globalMessage`, if that is also blank, a system default template is used.\n"},"quantity":{"type":"integer","minimum":0,"nullable":true,"description":"Threshold used **only** for specific types:  \n  - `ROWS_LESS_THAN_LIMIT` – minimum expected row count.  \n  - `RUNS_WITHOUT_DATA` – number of consecutive empty runs (N).  \n  - `DAYS_WITHOUT_DATA` – number of days with no data (N).  \n  - `SCORE_LESS_THAN_LIMIT` – minimum acceptable score.  \n  - `RUN_TIME_MORE_THEN_LIMIT` – maximum allowed runtime in minutes.  \nIgnored for other types."}}},"NotificationType":{"type":"string","description":"The event that triggers this notification.\n\nCurrent possible values include:\n  * `JOB_FAILED`            – sent when a job run fails.\n  * `JOB_COMPLETED`         – sent when a job run finishes successfully.\n  * `ROWS_LESS_THAN_LIMIT`  – sent when produced row count is below a limit.\n  * `RUNS_WITHOUT_DATA`     – sent after N consecutive runs produced no data.\n  * `DAYS_WITHOUT_DATA`     – sent when no data was produced for N days.\n  * `SCORE_LESS_THAN_LIMIT` – sent when quality score is below a limit.\n  * `RUN_TIME_MORE_THEN_LIMIT` – sent when runtime exceeds a limit (in minutes).\n\nAdditional notification types may be introduced in the future."}}}}
```

## The NotificationType object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"NotificationType":{"type":"string","description":"The event that triggers this notification.\n\nCurrent possible values include:\n  * `JOB_FAILED`            – sent when a job run fails.\n  * `JOB_COMPLETED`         – sent when a job run finishes successfully.\n  * `ROWS_LESS_THAN_LIMIT`  – sent when produced row count is below a limit.\n  * `RUNS_WITHOUT_DATA`     – sent after N consecutive runs produced no data.\n  * `DAYS_WITHOUT_DATA`     – sent when no data was produced for N days.\n  * `SCORE_LESS_THAN_LIMIT` – sent when quality score is below a limit.\n  * `RUN_TIME_MORE_THEN_LIMIT` – sent when runtime exceeds a limit (in minutes).\n\nAdditional notification types may be introduced in the future."}}}}
```

## The SchedulingSettings object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"SchedulingSettings":{"nullable":true,"description":"Controls when a scheduled job runs and how `runDate` is adjusted. Exactly **one** schedule mode is allowed. **Optional** If omitted or null, the job will not be scheduled.\n","oneOf":[{"$ref":"#/components/schemas/SchedulingHourly"},{"$ref":"#/components/schemas/SchedulingDaily"},{"$ref":"#/components/schemas/SchedulingMonthly"}],"discriminator":{"propertyName":"schedulerMode","mapping":{"HOURLY":"#/components/schemas/SchedulingHourly","DAILY":"#/components/schemas/SchedulingDaily","MONTHLY":"#/components/schemas/SchedulingMonthly"}}},"SchedulingHourly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["hourly","schedulerMode"],"description":"Hourly schedule configuration. If scheduleRunTime is set \"14:30:00\", the job runs at 14:30, 15:30, 16:30, etc.","properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `HOURLY`."},"hourly":{"type":"object","description":"Hourly schedule rules.","required":["hourlyOffset"],"properties":{"hourlyOffset":{"type":"string","description":"Run-date offset in hours relative to the scheduled time.\n\nCurrent possible values include:\n  * `SCHEDULED` – use the scheduled date/time.\n  * `ONE_HOUR` – run date is 1 hour before the scheduled time.\n  * `TWO_HOURS` – run date is 2 hours before the scheduled time.\n\nAdditional values MAY be added in future versions."}}}}}]},"SchedulingBase":{"type":"object","required":["isActive","scheduledRunTime","schedulerMode"],"properties":{"isActive":{"type":"boolean","description":"Enable/disable the schedule (disabled schedules do not trigger runs)."},"scheduledRunTime":{"type":"string","description":"Time of day in **UTC**, format `HH:mm:ss`.  (24 hours) Example: `14:10:00` means the job starts at 14:10:00 UTC.\n"},"schedulerMode":{"type":"string","description":"Schedule type.\n\nCurrent possible values:\n  * `HOURLY`\n  * `DAILY`\n  * `MONTHLY`\n\nAdditional modes MAY be added in future versions."}}},"SchedulingDaily":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["daily","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `DAILY`."},"daily":{"type":"object","description":"Daily schedule rules.","required":["dailyOffset","daysOfWeek"],"properties":{"dailyOffset":{"type":"string","description":"Run-date offset in days relative to the scheduled day.\n\nCurrent possible values include:\n  * `SCHEDULED`\n  * `ONE_DAY`\n  * `TWO_DAYS`\n  * `THREE_DAYS`\n  * `FOUR_DAYS`\n  * `FIVE_DAYS`\n  * `SIX_DAYS`\n  * `SEVEN_DAYS`\n\nAdditional values MAY be added in future versions."},"daysOfWeek":{"type":"array","minItems":1,"items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]},"description":"Days of week to run."}}}}}]},"SchedulingMonthly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["monthly","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `MONTHLY`."},"monthly":{"type":"object","description":"Monthly schedule rules.","required":["monthlyRepeat","monthlyOffset"],"properties":{"monthlyRepeat":{"type":"string","description":"Which day of the month to run the job on.\n\nCurrent possible values:\n  * `FIRST` – first day of the month\n  * `LAST`  – last day of the month\n  * `DAY`   – specific calendar day (requires `dayNumber` in 1–31 range)\n\nAdditional values MAY be added in future versions."},"monthlyOffset":{"type":"string","description":"Run-date offset applied to the scheduled monthly day.\n\nCurrent possible values include:\n  * `SCHEDULED`              - use the scheduled date\n  * `FIRST_OF_CURRENT_MONTH` - first day of the current month\n  * `LAST_OF_CURRENT_MONTH`  - last day of the current month\n  * `FIRST_OF_PRIOR_MONTH`   - first day of the prior month\n  * `LAST_OF_PRIOR_MONTH`    - last day of the prior month\n\nAdditional values may be added in future versions."},"dayNumber":{"type":"integer","minimum":1,"maximum":31,"nullable":true,"description":"Required when `monthlyRepeat = DAY`."}}}}}]}}}}
```

## The SchedulingBase object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"SchedulingBase":{"type":"object","required":["isActive","scheduledRunTime","schedulerMode"],"properties":{"isActive":{"type":"boolean","description":"Enable/disable the schedule (disabled schedules do not trigger runs)."},"scheduledRunTime":{"type":"string","description":"Time of day in **UTC**, format `HH:mm:ss`.  (24 hours) Example: `14:10:00` means the job starts at 14:10:00 UTC.\n"},"schedulerMode":{"type":"string","description":"Schedule type.\n\nCurrent possible values:\n  * `HOURLY`\n  * `DAILY`\n  * `MONTHLY`\n\nAdditional modes MAY be added in future versions."}}}}}}
```

## The SchedulingHourly object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"SchedulingHourly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["hourly","schedulerMode"],"description":"Hourly schedule configuration. If scheduleRunTime is set \"14:30:00\", the job runs at 14:30, 15:30, 16:30, etc.","properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `HOURLY`."},"hourly":{"type":"object","description":"Hourly schedule rules.","required":["hourlyOffset"],"properties":{"hourlyOffset":{"type":"string","description":"Run-date offset in hours relative to the scheduled time.\n\nCurrent possible values include:\n  * `SCHEDULED` – use the scheduled date/time.\n  * `ONE_HOUR` – run date is 1 hour before the scheduled time.\n  * `TWO_HOURS` – run date is 2 hours before the scheduled time.\n\nAdditional values MAY be added in future versions."}}}}}]},"SchedulingBase":{"type":"object","required":["isActive","scheduledRunTime","schedulerMode"],"properties":{"isActive":{"type":"boolean","description":"Enable/disable the schedule (disabled schedules do not trigger runs)."},"scheduledRunTime":{"type":"string","description":"Time of day in **UTC**, format `HH:mm:ss`.  (24 hours) Example: `14:10:00` means the job starts at 14:10:00 UTC.\n"},"schedulerMode":{"type":"string","description":"Schedule type.\n\nCurrent possible values:\n  * `HOURLY`\n  * `DAILY`\n  * `MONTHLY`\n\nAdditional modes MAY be added in future versions."}}}}}}
```

## The SchedulingDaily object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"SchedulingDaily":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["daily","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `DAILY`."},"daily":{"type":"object","description":"Daily schedule rules.","required":["dailyOffset","daysOfWeek"],"properties":{"dailyOffset":{"type":"string","description":"Run-date offset in days relative to the scheduled day.\n\nCurrent possible values include:\n  * `SCHEDULED`\n  * `ONE_DAY`\n  * `TWO_DAYS`\n  * `THREE_DAYS`\n  * `FOUR_DAYS`\n  * `FIVE_DAYS`\n  * `SIX_DAYS`\n  * `SEVEN_DAYS`\n\nAdditional values MAY be added in future versions."},"daysOfWeek":{"type":"array","minItems":1,"items":{"type":"string","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]},"description":"Days of week to run."}}}}}]},"SchedulingBase":{"type":"object","required":["isActive","scheduledRunTime","schedulerMode"],"properties":{"isActive":{"type":"boolean","description":"Enable/disable the schedule (disabled schedules do not trigger runs)."},"scheduledRunTime":{"type":"string","description":"Time of day in **UTC**, format `HH:mm:ss`.  (24 hours) Example: `14:10:00` means the job starts at 14:10:00 UTC.\n"},"schedulerMode":{"type":"string","description":"Schedule type.\n\nCurrent possible values:\n  * `HOURLY`\n  * `DAILY`\n  * `MONTHLY`\n\nAdditional modes MAY be added in future versions."}}}}}}
```

## The SchedulingMonthly object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"SchedulingMonthly":{"allOf":[{"$ref":"#/components/schemas/SchedulingBase"},{"type":"object","required":["monthly","schedulerMode"],"properties":{"schedulerMode":{"type":"string","description":"Schedule type.\n\nFor this schema, the value MUST be `MONTHLY`."},"monthly":{"type":"object","description":"Monthly schedule rules.","required":["monthlyRepeat","monthlyOffset"],"properties":{"monthlyRepeat":{"type":"string","description":"Which day of the month to run the job on.\n\nCurrent possible values:\n  * `FIRST` – first day of the month\n  * `LAST`  – last day of the month\n  * `DAY`   – specific calendar day (requires `dayNumber` in 1–31 range)\n\nAdditional values MAY be added in future versions."},"monthlyOffset":{"type":"string","description":"Run-date offset applied to the scheduled monthly day.\n\nCurrent possible values include:\n  * `SCHEDULED`              - use the scheduled date\n  * `FIRST_OF_CURRENT_MONTH` - first day of the current month\n  * `LAST_OF_CURRENT_MONTH`  - last day of the current month\n  * `FIRST_OF_PRIOR_MONTH`   - first day of the prior month\n  * `LAST_OF_PRIOR_MONTH`    - last day of the prior month\n\nAdditional values may be added in future versions."},"dayNumber":{"type":"integer","minimum":1,"maximum":31,"nullable":true,"description":"Required when `monthlyRepeat = DAY`."}}}}}]},"SchedulingBase":{"type":"object","required":["isActive","scheduledRunTime","schedulerMode"],"properties":{"isActive":{"type":"boolean","description":"Enable/disable the schedule (disabled schedules do not trigger runs)."},"scheduledRunTime":{"type":"string","description":"Time of day in **UTC**, format `HH:mm:ss`.  (24 hours) Example: `14:10:00` means the job starts at 14:10:00 UTC.\n"},"schedulerMode":{"type":"string","description":"Schedule type.\n\nCurrent possible values:\n  * `HOURLY`\n  * `DAILY`\n  * `MONTHLY`\n\nAdditional modes MAY be added in future versions."}}}}}}
```

## The DateOnly object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"DateOnly":{"type":"object","required":["kind","value"],"description":"Calendar date, format yyyy-MM-dd.","properties":{"kind":{"type":"string","pattern":"^DATE$"},"value":{"type":"string","format":"date"}}}}}}
```

## The DateFormat object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"DateFormat":{"type":"string","default":"DATE","description":"Date format used for `runDate` / `runDateEnd`.\nSupported values:\n  - DATE -> yyyy-MM-dd \n  - TIMESTAMP -> RFC 3339 timestamp, example - 2025-10-23T13:50:02Z","enum":["DATE","TIMESTAMP"]}}}}
```

## The DateFormatPatch object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"DateFormatPatch":{"type":"string","nullable":true,"description":"Date format used for `runDate` / `runDateEnd`.\nSupported values:\n  - DATE -> yyyy-MM-dd \n  - TIMESTAMP -> RFC 3339 timestamp, example - 2025-10-23T13:50:02Z","enum":["DATE","TIMESTAMP"]}}}}
```

## The Rfc3339DateTime object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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"}}}}}}
```

## The RunDateValue object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"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).","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"}}}}}}
```

## The RunDateEndValue object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"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."},"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"}}}}}}
```

## The EgressTopic object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"EgressTopic":{"type":"string","description":"Selectable topic for the data-egress export endpoint. Values follow\nthe platform-wide UPPER_SNAKE_CASE enum convention. Note that\nqualified field names in filters use the lowercase form\n(e.g. `rules.ruleName`); the qualified-name syntax is its own grammar\nand is intentionally distinct from the enum.","enum":["JOBS","MONITORS","RULES"]}}}}
```

## The EgressOperator object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"EgressOperator":{"type":"string","description":"Filter operator. Each field declares its allowed operators in the\nmanifest; requesting an unsupported operator yields HTTP 400.\n\n`LIKE` exposes SQL `%` (zero-or-more chars) and `_` (single char)\nwildcards verbatim and is case-sensitive — the operator is a thin\nwrapper over the SQL `LIKE` predicate. Callers that want\ncase-insensitive matching or anchored prefix/suffix can express that\nwith the wildcards (`%foo%` for contains, `foo%` for prefix). The\nintentional SQL-flavoured shape mirrors the rest of the egress\nquery surface; consumers that need a higher-level abstraction can\nlayer it on the client.","enum":["EQ","NE","IN","NOT_IN","LIKE","GTE","LTE","GT","LT","IS_NULL","IS_NOT_NULL"]}}}}
```

## The EgressFilter object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"EgressFilter":{"type":"object","description":"Single filter predicate. Use `value` for `EQ`/`NE`/`LIKE`/`GTE`/`LTE`/`GT`/`LT`,\n`values` for `IN`/`NOT_IN`, and neither for `IS_NULL`/`IS_NOT_NULL`.","required":["field","op"],"properties":{"field":{"type":"string","description":"Qualified field name `<topic>.<apiName>`, e.g. `rules.ruleName`.","maxLength":128},"op":{"$ref":"#/components/schemas/EgressOperator"},"value":{"description":"Single value for unary operators. Send as a JSON scalar (string,\nnumber, integer, or boolean), or `null`. The server coerces the\nvalue to the field's declared type (string / integer / long /\ndouble / boolean / RFC 3339 timestamp / UUID) at validation time\nbefore binding into the SQL parameter. The schema is kept type-less\nrather than\nusing `oneOf` because OAS codegen wraps `oneOf` in a sealed\nwrapper that breaks the server's dynamic-coercion flow; the\nscalar-or-null constraint is enforced server-side."},"values":{"type":"array","description":"List of values for `IN` / `NOT_IN`. Each item follows the same\nscalar-or-null contract as `value` above and is coerced to the\nfield's declared type at validation time. Capped at 1000 items\nper request as a DoS guard; pageable surfaces should split\nlarger lists across multiple requests.","maxItems":1000,"items":{"description":"JSON scalar (string / number / integer / boolean) or `null`.\nSchema kept type-less for the same dynamic-coercion reason\nas the sibling `value` property."}}}},"EgressOperator":{"type":"string","description":"Filter operator. Each field declares its allowed operators in the\nmanifest; requesting an unsupported operator yields HTTP 400.\n\n`LIKE` exposes SQL `%` (zero-or-more chars) and `_` (single char)\nwildcards verbatim and is case-sensitive — the operator is a thin\nwrapper over the SQL `LIKE` predicate. Callers that want\ncase-insensitive matching or anchored prefix/suffix can express that\nwith the wildcards (`%foo%` for contains, `foo%` for prefix). The\nintentional SQL-flavoured shape mirrors the rest of the egress\nquery surface; consumers that need a higher-level abstraction can\nlayer it on the client.","enum":["EQ","NE","IN","NOT_IN","LIKE","GTE","LTE","GT","LT","IS_NULL","IS_NOT_NULL"]}}}}
```

## The EgressRequest object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"EgressRequest":{"type":"object","description":"Request body for `POST /egress/export`. Optional — omit the body (or\nomit `topics`) to export all three topics with defaults. Any `topics`\nyou do select must form a connected subgraph in the manifest's join graph.","properties":{"topics":{"type":"array","maxItems":16,"uniqueItems":true,"description":"Topics to include in the export. Omitted or empty → all three\n(`JOBS`, `MONITORS`, `RULES`). Today's surface exposes those three;\nthe upper bound has headroom so adding a new topic doesn't break clients.","items":{"$ref":"#/components/schemas/EgressTopic"}},"filters":{"type":"array","maxItems":100,"description":"Filter predicates ANDed together. Empty or omitted means no filtering.","items":{"$ref":"#/components/schemas/EgressFilter"}},"includeCatalogAssets":{"type":"boolean","default":false,"description":"Opt in to catalog-asset enrichment. May also be set via the\n`includeCatalogAssets` query parameter (useful on a body-less\nrequest); enrichment applies when either is `true`. When `true`, each\nrow is enriched with the DGC Catalog assets it maps to: the `Table`\nasset on `jobs`, the `Column` asset on `monitors`/`rules`, and the\ngoverning `Data Quality Rule` asset on `monitors`. See **Catalog\nassets** in the `POST /egress/export` description for the exact\nfields and the `excludeColumnAssets` / `excludeRuleAssets` switches.\n\nWhen `false` (default) no enrichment is performed and those fields\nare omitted — off by default because enrichment makes external\nround-trips to DGC. Note a monitor linked to several `Data Quality\nRule` assets emits one row per linked asset; `excludeRuleAssets`\nopts out of that group (and its row multiplication)."}}},"EgressTopic":{"type":"string","description":"Selectable topic for the data-egress export endpoint. Values follow\nthe platform-wide UPPER_SNAKE_CASE enum convention. Note that\nqualified field names in filters use the lowercase form\n(e.g. `rules.ruleName`); the qualified-name syntax is its own grammar\nand is intentionally distinct from the enum.","enum":["JOBS","MONITORS","RULES"]},"EgressFilter":{"type":"object","description":"Single filter predicate. Use `value` for `EQ`/`NE`/`LIKE`/`GTE`/`LTE`/`GT`/`LT`,\n`values` for `IN`/`NOT_IN`, and neither for `IS_NULL`/`IS_NOT_NULL`.","required":["field","op"],"properties":{"field":{"type":"string","description":"Qualified field name `<topic>.<apiName>`, e.g. `rules.ruleName`.","maxLength":128},"op":{"$ref":"#/components/schemas/EgressOperator"},"value":{"description":"Single value for unary operators. Send as a JSON scalar (string,\nnumber, integer, or boolean), or `null`. The server coerces the\nvalue to the field's declared type (string / integer / long /\ndouble / boolean / RFC 3339 timestamp / UUID) at validation time\nbefore binding into the SQL parameter. The schema is kept type-less\nrather than\nusing `oneOf` because OAS codegen wraps `oneOf` in a sealed\nwrapper that breaks the server's dynamic-coercion flow; the\nscalar-or-null constraint is enforced server-side."},"values":{"type":"array","description":"List of values for `IN` / `NOT_IN`. Each item follows the same\nscalar-or-null contract as `value` above and is coerced to the\nfield's declared type at validation time. Capped at 1000 items\nper request as a DoS guard; pageable surfaces should split\nlarger lists across multiple requests.","maxItems":1000,"items":{"description":"JSON scalar (string / number / integer / boolean) or `null`.\nSchema kept type-less for the same dynamic-coercion reason\nas the sibling `value` property."}}}},"EgressOperator":{"type":"string","description":"Filter operator. Each field declares its allowed operators in the\nmanifest; requesting an unsupported operator yields HTTP 400.\n\n`LIKE` exposes SQL `%` (zero-or-more chars) and `_` (single char)\nwildcards verbatim and is case-sensitive — the operator is a thin\nwrapper over the SQL `LIKE` predicate. Callers that want\ncase-insensitive matching or anchored prefix/suffix can express that\nwith the wildcards (`%foo%` for contains, `foo%` for prefix). The\nintentional SQL-flavoured shape mirrors the rest of the egress\nquery surface; consumers that need a higher-level abstraction can\nlayer it on the client.","enum":["EQ","NE","IN","NOT_IN","LIKE","GTE","LTE","GT","LT","IS_NULL","IS_NOT_NULL"]}}}}
```

## The EgressManifestField object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"EgressManifestField":{"type":"object","required":["apiName","type","filterable","projectable","allowedOperators"],"properties":{"apiName":{"type":"string","description":"Field name within its topic. Combined with the topic as `<topic>.<apiName>`."},"type":{"type":"string","description":"Logical type of the field for filter-value coercion. Free-form\nstring (not an enum) so the server can introduce new types\nwithout breaking SDK switch-on-known-values code. Currently one\nof: `STRING`, `INTEGER`, `LONG`, `DOUBLE`, `BOOLEAN`,\n`TIMESTAMP`, `UUID`, `STRING_LIST`. Clients should treat unknown\nvalues as opaque and fall back to string handling."},"filterable":{"type":"boolean","description":"When `true`, this field can appear in `EgressFilter.field`. When\n`false`, the server rejects any filter referencing it with HTTP 400."},"projectable":{"type":"boolean","description":"When `true`, this field is included in the response projection\n(unless `optIn: true`). When `false`, the field is never returned —\nit exists only as a filter target."},"allowedOperators":{"type":"array","uniqueItems":true,"description":"Operators the server accepts when filtering this field. Items\nmirror the request-side `EgressOperator` enum (currently\n`EQ`, `NE`, `IN`, `NOT_IN`, `LIKE`, `GTE`, `LTE`, `GT`, `LT`,\n`IS_NULL`, `IS_NOT_NULL`) but the response shape is free-form\nstring so new operators can be added without breaking SDK\nswitch-on-known-values code.","items":{"type":"string"}},"optIn":{"type":"boolean","default":false,"description":"When `true`, the field is excluded from the default response\nprojection. The catalog-asset fields are opt-in and become\nprojectable when the request sets `includeCatalogAssets`. Projection\nis not otherwise a request parameter, so any other opt-in field\n(e.g. `rules.ruleColumnName`) is reachable only as a filter target."}}}}}}
```

## The EgressManifestTopic object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"EgressManifestTopic":{"type":"object","required":["name","fields"],"properties":{"name":{"type":"string","description":"Topic identifier in UPPER_SNAKE_CASE. Mirrors the request-side\n`EgressTopic` enum (currently `JOBS`, `MONITORS`, `RULES`) but the\nresponse is free-form string so new topics can be added without\nbreaking SDK switch-on-known-values code.\nNote: qualified field names (e.g. `rules.ruleName`) use the\nlowercase form — that grammar is intentionally distinct from this\nenum."},"joinsTo":{"type":"array","uniqueItems":true,"description":"The topics this one can be joined to (UPPER_SNAKE_CASE, matching\n`name`). Reachability is symmetric — if A lists B, then B lists A.\nUse it to validate that a `topics` selection forms a connected\nsubgraph. Join-key columns are not exposed; clients need only\nreachability.","items":{"type":"string"}},"fields":{"type":"array","items":{"$ref":"#/components/schemas/EgressManifestField"}}}},"EgressManifestField":{"type":"object","required":["apiName","type","filterable","projectable","allowedOperators"],"properties":{"apiName":{"type":"string","description":"Field name within its topic. Combined with the topic as `<topic>.<apiName>`."},"type":{"type":"string","description":"Logical type of the field for filter-value coercion. Free-form\nstring (not an enum) so the server can introduce new types\nwithout breaking SDK switch-on-known-values code. Currently one\nof: `STRING`, `INTEGER`, `LONG`, `DOUBLE`, `BOOLEAN`,\n`TIMESTAMP`, `UUID`, `STRING_LIST`. Clients should treat unknown\nvalues as opaque and fall back to string handling."},"filterable":{"type":"boolean","description":"When `true`, this field can appear in `EgressFilter.field`. When\n`false`, the server rejects any filter referencing it with HTTP 400."},"projectable":{"type":"boolean","description":"When `true`, this field is included in the response projection\n(unless `optIn: true`). When `false`, the field is never returned —\nit exists only as a filter target."},"allowedOperators":{"type":"array","uniqueItems":true,"description":"Operators the server accepts when filtering this field. Items\nmirror the request-side `EgressOperator` enum (currently\n`EQ`, `NE`, `IN`, `NOT_IN`, `LIKE`, `GTE`, `LTE`, `GT`, `LT`,\n`IS_NULL`, `IS_NOT_NULL`) but the response shape is free-form\nstring so new operators can be added without breaking SDK\nswitch-on-known-values code.","items":{"type":"string"}},"optIn":{"type":"boolean","default":false,"description":"When `true`, the field is excluded from the default response\nprojection. The catalog-asset fields are opt-in and become\nprojectable when the request sets `includeCatalogAssets`. Projection\nis not otherwise a request parameter, so any other opt-in field\n(e.g. `rules.ruleColumnName`) is reachable only as a filter target."}}}}}}
```

## The EgressManifestDefaultWindow object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"EgressManifestDefaultWindow":{"type":"object","description":"Describes the implicit time-window filter the server injects when the\ncaller does not supply one. Clients that want a different window range\nmust filter explicitly on any `*.updatedAt` field — the server detects\nthe explicit filter and suppresses the default.","required":["durationDays","anchorField","appliesWhen"],"properties":{"durationDays":{"type":"integer","description":"Default number of days back from `now` (UTC) used as the lower\nbound. Overridable per request via the `window` query parameter on\n`POST /egress/export`."},"anchorField":{"type":"string","description":"Suffix the server appends to the anchor topic to compute the\nwindow field. The anchor topic is chosen in the order\nmonitors > rules > jobs — e.g. `updatedAt` resolves to\n`monitors.updatedAt` whenever monitors are selected, otherwise\n`rules.updatedAt`, otherwise `jobs.updatedAt`."},"appliesWhen":{"type":"string","description":"Plain-text rule describing when the window is injected."}}}}}}
```

## The EgressManifest object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"EgressManifest":{"type":"object","required":["topics"],"properties":{"topics":{"type":"array","items":{"$ref":"#/components/schemas/EgressManifestTopic"}},"defaultWindow":{"$ref":"#/components/schemas/EgressManifestDefaultWindow"}}},"EgressManifestTopic":{"type":"object","required":["name","fields"],"properties":{"name":{"type":"string","description":"Topic identifier in UPPER_SNAKE_CASE. Mirrors the request-side\n`EgressTopic` enum (currently `JOBS`, `MONITORS`, `RULES`) but the\nresponse is free-form string so new topics can be added without\nbreaking SDK switch-on-known-values code.\nNote: qualified field names (e.g. `rules.ruleName`) use the\nlowercase form — that grammar is intentionally distinct from this\nenum."},"joinsTo":{"type":"array","uniqueItems":true,"description":"The topics this one can be joined to (UPPER_SNAKE_CASE, matching\n`name`). Reachability is symmetric — if A lists B, then B lists A.\nUse it to validate that a `topics` selection forms a connected\nsubgraph. Join-key columns are not exposed; clients need only\nreachability.","items":{"type":"string"}},"fields":{"type":"array","items":{"$ref":"#/components/schemas/EgressManifestField"}}}},"EgressManifestField":{"type":"object","required":["apiName","type","filterable","projectable","allowedOperators"],"properties":{"apiName":{"type":"string","description":"Field name within its topic. Combined with the topic as `<topic>.<apiName>`."},"type":{"type":"string","description":"Logical type of the field for filter-value coercion. Free-form\nstring (not an enum) so the server can introduce new types\nwithout breaking SDK switch-on-known-values code. Currently one\nof: `STRING`, `INTEGER`, `LONG`, `DOUBLE`, `BOOLEAN`,\n`TIMESTAMP`, `UUID`, `STRING_LIST`. Clients should treat unknown\nvalues as opaque and fall back to string handling."},"filterable":{"type":"boolean","description":"When `true`, this field can appear in `EgressFilter.field`. When\n`false`, the server rejects any filter referencing it with HTTP 400."},"projectable":{"type":"boolean","description":"When `true`, this field is included in the response projection\n(unless `optIn: true`). When `false`, the field is never returned —\nit exists only as a filter target."},"allowedOperators":{"type":"array","uniqueItems":true,"description":"Operators the server accepts when filtering this field. Items\nmirror the request-side `EgressOperator` enum (currently\n`EQ`, `NE`, `IN`, `NOT_IN`, `LIKE`, `GTE`, `LTE`, `GT`, `LT`,\n`IS_NULL`, `IS_NOT_NULL`) but the response shape is free-form\nstring so new operators can be added without breaking SDK\nswitch-on-known-values code.","items":{"type":"string"}},"optIn":{"type":"boolean","default":false,"description":"When `true`, the field is excluded from the default response\nprojection. The catalog-asset fields are opt-in and become\nprojectable when the request sets `includeCatalogAssets`. Projection\nis not otherwise a request parameter, so any other opt-in field\n(e.g. `rules.ruleColumnName`) is reachable only as a filter target."}}},"EgressManifestDefaultWindow":{"type":"object","description":"Describes the implicit time-window filter the server injects when the\ncaller does not supply one. Clients that want a different window range\nmust filter explicitly on any `*.updatedAt` field — the server detects\nthe explicit filter and suppresses the default.","required":["durationDays","anchorField","appliesWhen"],"properties":{"durationDays":{"type":"integer","description":"Default number of days back from `now` (UTC) used as the lower\nbound. Overridable per request via the `window` query parameter on\n`POST /egress/export`."},"anchorField":{"type":"string","description":"Suffix the server appends to the anchor topic to compute the\nwindow field. The anchor topic is chosen in the order\nmonitors > rules > jobs — e.g. `updatedAt` resolves to\n`monitors.updatedAt` whenever monitors are selected, otherwise\n`rules.updatedAt`, otherwise `jobs.updatedAt`."},"appliesWhen":{"type":"string","description":"Plain-text rule describing when the window is injected."}}}}}}
```

## The UserReference object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"UserReference":{"type":"object","description":"Minimal user reference. The public API exposes only the id and userName - not the full user profile (no email, avatar, or first/last name).","properties":{"id":{"type":"string","format":"uuid","description":"The user's id."},"userName":{"type":"string","maxLength":255,"description":"The user's login name."}},"required":["id","userName"]}}}}
```

## The RuleTemplate object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplate":{"type":"object","description":"A reusable rule template.","properties":{"id":{"type":"string","format":"uuid","description":"Server-generated identifier."},"ruleTemplateName":{"type":"string","description":"Unique, human-readable template name. Used as the path key."},"description":{"type":"string","description":"Template description."},"sql":{"type":"string","description":"Parameterized SQL query with a {{column}} placeholder."},"dialect":{"type":"string","description":"SQL dialect the query was authored in."},"dimensions":{"type":"array","maxItems":20,"description":"Data quality dimensions.","items":{"type":"string"}},"tolerance":{"type":"integer","minimum":0,"description":"Number of breaking records tolerated before the rule reports breaking (non-negative integer)."},"isSystem":{"type":"boolean","description":"True if this template is system-defined (ships with the product and is read-only)."},"deployedRuleCount":{"type":"integer","format":"int64","minimum":0,"description":"Number of rules currently deployed from this template."},"businessRuleAssetIds":{"type":"array","maxItems":100,"description":"Linked business rule asset ids.","items":{"type":"string","format":"uuid"}},"translatedQueries":{"type":"object","description":"Translated SQL queries per database dialect (dialect to SQL).","additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"createdBy":{"$ref":"#/components/schemas/UserReference"},"updatedAt":{"type":"string","format":"date-time"},"updatedBy":{"$ref":"#/components/schemas/UserReference"}},"required":["id","ruleTemplateName"]},"UserReference":{"type":"object","description":"Minimal user reference. The public API exposes only the id and userName - not the full user profile (no email, avatar, or first/last name).","properties":{"id":{"type":"string","format":"uuid","description":"The user's id."},"userName":{"type":"string","maxLength":255,"description":"The user's login name."}},"required":["id","userName"]}}}}
```

## The RuleTemplateWriteRequest object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplateWriteRequest":{"type":"object","description":"Create or update payload. On create, ruleTemplateName must be unique. On update, supplying a different ruleTemplateName renames the template - which changes its URL (the old name then returns 404, no alias is kept).","properties":{"ruleTemplateName":{"type":"string","minLength":1,"maxLength":255},"description":{"type":"string","maxLength":1000},"sql":{"type":"string","minLength":1,"maxLength":10000},"dialect":{"type":"string","minLength":1,"maxLength":255},"dimensions":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"string","maxLength":255}},"tolerance":{"type":"integer","minimum":0,"description":"Number of breaking records tolerated before the rule reports breaking (non-negative integer)."},"businessRuleAssetIds":{"type":"array","maxItems":100,"items":{"type":"string","format":"uuid"}}},"required":["ruleTemplateName","sql","dialect","description","dimensions"]}}}}
```

## The RuleTemplatePaginated object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplatePaginated":{"type":"object","description":"Paged list of rule templates.","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/RuleTemplate"}},"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"]},"RuleTemplate":{"type":"object","description":"A reusable rule template.","properties":{"id":{"type":"string","format":"uuid","description":"Server-generated identifier."},"ruleTemplateName":{"type":"string","description":"Unique, human-readable template name. Used as the path key."},"description":{"type":"string","description":"Template description."},"sql":{"type":"string","description":"Parameterized SQL query with a {{column}} placeholder."},"dialect":{"type":"string","description":"SQL dialect the query was authored in."},"dimensions":{"type":"array","maxItems":20,"description":"Data quality dimensions.","items":{"type":"string"}},"tolerance":{"type":"integer","minimum":0,"description":"Number of breaking records tolerated before the rule reports breaking (non-negative integer)."},"isSystem":{"type":"boolean","description":"True if this template is system-defined (ships with the product and is read-only)."},"deployedRuleCount":{"type":"integer","format":"int64","minimum":0,"description":"Number of rules currently deployed from this template."},"businessRuleAssetIds":{"type":"array","maxItems":100,"description":"Linked business rule asset ids.","items":{"type":"string","format":"uuid"}},"translatedQueries":{"type":"object","description":"Translated SQL queries per database dialect (dialect to SQL).","additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"createdBy":{"$ref":"#/components/schemas/UserReference"},"updatedAt":{"type":"string","format":"date-time"},"updatedBy":{"$ref":"#/components/schemas/UserReference"}},"required":["id","ruleTemplateName"]},"UserReference":{"type":"object","description":"Minimal user reference. The public API exposes only the id and userName - not the full user profile (no email, avatar, or first/last name).","properties":{"id":{"type":"string","format":"uuid","description":"The user's id."},"userName":{"type":"string","maxLength":255,"description":"The user's login name."}},"required":["id","userName"]}}}}
```

## The RuleTemplateDeploymentPaginated object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplateDeploymentPaginated":{"type":"object","description":"Paged list of a rule template's deployments.","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/RuleTemplateDeployment"}},"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"]},"RuleTemplateDeployment":{"type":"object","description":"A rule currently deployed from a template.","properties":{"jobName":{"$ref":"#/components/schemas/JobName"},"deployedRuleName":{"type":"string","maxLength":255},"columnName":{"type":"string","maxLength":255},"connectionId":{"type":"string","format":"uuid","description":"Edge connection of the job."},"edgeSiteId":{"type":"string","format":"uuid","description":"Edge site of the connection."},"lastRun":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last run; null if never run."},"lastRunStatus":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/RuleStatus"},{"description":"Latest evaluation status."}]},"creator":{"$ref":"#/components/schemas/UserReference"},"relatedAssetIds":{"type":"array","maxItems":100,"description":"Linked Business Rule assets.","items":{"type":"string","format":"uuid"}}},"required":["jobName","deployedRuleName"]},"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_.-]+$"},"RuleStatus":{"type":"string","description":"Latest evaluation status of a deployed rule.","enum":["passing","breaking","exception","suppressed","pending_run"]},"UserReference":{"type":"object","description":"Minimal user reference. The public API exposes only the id and userName - not the full user profile (no email, avatar, or first/last name).","properties":{"id":{"type":"string","format":"uuid","description":"The user's id."},"userName":{"type":"string","maxLength":255,"description":"The user's login name."}},"required":["id","userName"]}}}}
```

## The RuleTemplateDeploymentStatus object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplateDeploymentStatus":{"type":"string","description":"Outcome of deploying or cascading to a single rule.","enum":["DEPLOYED","SKIPPED","FAILED"]}}}}
```

## The RuleTemplateDeploymentOutcome object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplateDeploymentOutcome":{"type":"object","description":"The result of deploying to, or cascading an update onto, one rule. `jobName` (plus `columnName` when present) identifies the originating target so the caller can map the outcome back to the target it submitted.","properties":{"jobName":{"$ref":"#/components/schemas/JobName"},"columnName":{"type":"string","maxLength":255,"description":"Echoes the target's column when present; disambiguates the outcome when a job has multiple column targets."},"deployedRuleName":{"type":"string","maxLength":255},"status":{"$ref":"#/components/schemas/RuleTemplateDeploymentStatus"},"reason":{"type":"string","maxLength":1000,"description":"Why the deployment was skipped or failed (for example, a missing dialect)."}},"required":["jobName","status"]},"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_.-]+$"},"RuleTemplateDeploymentStatus":{"type":"string","description":"Outcome of deploying or cascading to a single rule.","enum":["DEPLOYED","SKIPPED","FAILED"]}}}}
```

## The RuleTemplateUpdateResult object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplateUpdateResult":{"type":"object","description":"The updated template plus the per-deployment cascade results, so a partial update (some deployments skipped) is visible to the caller.","properties":{"ruleTemplate":{"$ref":"#/components/schemas/RuleTemplate"},"deployments":{"type":"array","items":{"$ref":"#/components/schemas/RuleTemplateDeploymentOutcome"}}},"required":["ruleTemplate","deployments"]},"RuleTemplate":{"type":"object","description":"A reusable rule template.","properties":{"id":{"type":"string","format":"uuid","description":"Server-generated identifier."},"ruleTemplateName":{"type":"string","description":"Unique, human-readable template name. Used as the path key."},"description":{"type":"string","description":"Template description."},"sql":{"type":"string","description":"Parameterized SQL query with a {{column}} placeholder."},"dialect":{"type":"string","description":"SQL dialect the query was authored in."},"dimensions":{"type":"array","maxItems":20,"description":"Data quality dimensions.","items":{"type":"string"}},"tolerance":{"type":"integer","minimum":0,"description":"Number of breaking records tolerated before the rule reports breaking (non-negative integer)."},"isSystem":{"type":"boolean","description":"True if this template is system-defined (ships with the product and is read-only)."},"deployedRuleCount":{"type":"integer","format":"int64","minimum":0,"description":"Number of rules currently deployed from this template."},"businessRuleAssetIds":{"type":"array","maxItems":100,"description":"Linked business rule asset ids.","items":{"type":"string","format":"uuid"}},"translatedQueries":{"type":"object","description":"Translated SQL queries per database dialect (dialect to SQL).","additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"createdBy":{"$ref":"#/components/schemas/UserReference"},"updatedAt":{"type":"string","format":"date-time"},"updatedBy":{"$ref":"#/components/schemas/UserReference"}},"required":["id","ruleTemplateName"]},"UserReference":{"type":"object","description":"Minimal user reference. The public API exposes only the id and userName - not the full user profile (no email, avatar, or first/last name).","properties":{"id":{"type":"string","format":"uuid","description":"The user's id."},"userName":{"type":"string","maxLength":255,"description":"The user's login name."}},"required":["id","userName"]},"RuleTemplateDeploymentOutcome":{"type":"object","description":"The result of deploying to, or cascading an update onto, one rule. `jobName` (plus `columnName` when present) identifies the originating target so the caller can map the outcome back to the target it submitted.","properties":{"jobName":{"$ref":"#/components/schemas/JobName"},"columnName":{"type":"string","maxLength":255,"description":"Echoes the target's column when present; disambiguates the outcome when a job has multiple column targets."},"deployedRuleName":{"type":"string","maxLength":255},"status":{"$ref":"#/components/schemas/RuleTemplateDeploymentStatus"},"reason":{"type":"string","maxLength":1000,"description":"Why the deployment was skipped or failed (for example, a missing dialect)."}},"required":["jobName","status"]},"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_.-]+$"},"RuleTemplateDeploymentStatus":{"type":"string","description":"Outcome of deploying or cascading to a single rule.","enum":["DEPLOYED","SKIPPED","FAILED"]}}}}
```

## The RuleTemplateDeployTarget object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplateDeployTarget":{"type":"object","description":"A single deploy target.","properties":{"jobName":{"$ref":"#/components/schemas/JobName"},"columnName":{"type":"string","maxLength":255},"connectionName":{"type":"string","maxLength":255}},"required":["jobName"]},"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_.-]+$"}}}}
```

## The RuleTemplateDeployRequest object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplateDeployRequest":{"type":"object","description":"A request to deploy a template to one or more targets.","properties":{"targets":{"type":"array","minItems":1,"maxItems":100,"items":{"$ref":"#/components/schemas/RuleTemplateDeployTarget"}}},"required":["targets"]},"RuleTemplateDeployTarget":{"type":"object","description":"A single deploy target.","properties":{"jobName":{"$ref":"#/components/schemas/JobName"},"columnName":{"type":"string","maxLength":255},"connectionName":{"type":"string","maxLength":255}},"required":["jobName"]},"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_.-]+$"}}}}
```

## The RuleTemplateDeployResult object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplateDeployResult":{"type":"object","description":"Per-target deploy outcomes.","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/RuleTemplateDeploymentOutcome"}}},"required":["results"]},"RuleTemplateDeploymentOutcome":{"type":"object","description":"The result of deploying to, or cascading an update onto, one rule. `jobName` (plus `columnName` when present) identifies the originating target so the caller can map the outcome back to the target it submitted.","properties":{"jobName":{"$ref":"#/components/schemas/JobName"},"columnName":{"type":"string","maxLength":255,"description":"Echoes the target's column when present; disambiguates the outcome when a job has multiple column targets."},"deployedRuleName":{"type":"string","maxLength":255},"status":{"$ref":"#/components/schemas/RuleTemplateDeploymentStatus"},"reason":{"type":"string","maxLength":1000,"description":"Why the deployment was skipped or failed (for example, a missing dialect)."}},"required":["jobName","status"]},"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_.-]+$"},"RuleTemplateDeploymentStatus":{"type":"string","description":"Outcome of deploying or cascading to a single rule.","enum":["DEPLOYED","SKIPPED","FAILED"]}}}}
```

## The RuleTemplateDeployment object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplateDeployment":{"type":"object","description":"A rule currently deployed from a template.","properties":{"jobName":{"$ref":"#/components/schemas/JobName"},"deployedRuleName":{"type":"string","maxLength":255},"columnName":{"type":"string","maxLength":255},"connectionId":{"type":"string","format":"uuid","description":"Edge connection of the job."},"edgeSiteId":{"type":"string","format":"uuid","description":"Edge site of the connection."},"lastRun":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last run; null if never run."},"lastRunStatus":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/RuleStatus"},{"description":"Latest evaluation status."}]},"creator":{"$ref":"#/components/schemas/UserReference"},"relatedAssetIds":{"type":"array","maxItems":100,"description":"Linked Business Rule assets.","items":{"type":"string","format":"uuid"}}},"required":["jobName","deployedRuleName"]},"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_.-]+$"},"RuleStatus":{"type":"string","description":"Latest evaluation status of a deployed rule.","enum":["passing","breaking","exception","suppressed","pending_run"]},"UserReference":{"type":"object","description":"Minimal user reference. The public API exposes only the id and userName - not the full user profile (no email, avatar, or first/last name).","properties":{"id":{"type":"string","format":"uuid","description":"The user's id."},"userName":{"type":"string","maxLength":255,"description":"The user's login name."}},"required":["id","userName"]}}}}
```

## The RuleStatus object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleStatus":{"type":"string","description":"Latest evaluation status of a deployed rule.","enum":["passing","breaking","exception","suppressed","pending_run"]}}}}
```

## The RuleTemplateDetachRequest object

```json
{"openapi":"3.0.3","info":{"title":"Data Quality Collibra API","version":"1.3.0"},"components":{"schemas":{"RuleTemplateDetachRequest":{"type":"object","description":"Identifies the deployed rule to detach from the template.","properties":{"jobName":{"$ref":"#/components/schemas/JobName"},"deployedRuleName":{"type":"string","maxLength":255}},"required":["jobName","deployedRuleName"]},"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_.-]+$"}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://developer.collibra.com/api/references/data-quality/models.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
