> 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"},"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 the job, excluding custom rules. Currently, only adaptive rules are supported. \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\nCurrently **queueRun** will always treated as true, whether the client provides a value or omits the field. Create-only behavior is not supported yet.\nIn future versions, this field will become fully optional and will default to false."},"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 the job, excluding custom rules. Currently, only adaptive rules are supported. \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- `false` when the job was created without an immediate run (future state)."}}}]},"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"}]}},"additionalProperties":false},"RunDateValue":{"description":"Start of the time slice used only when the `sourceQuery` contains the `${rd}` placeholder.\nThe engine substitutes `${rd}` using `jobSettings.dateFormat`:\n  - DATE → `yyyy-MM-dd`\n  - TIMESTAMP → RFC 3339 `yyyy-MM-dd'T'HH:mm:ss'Z'` \n\nIf `sourceQuery` omits `${rd}`, this value does **not** restrict the data scan and\nonly affects the **run’s date** (e.g., run metadata/labeling, scheduling context).","oneOf":[{"$ref":"#/components/schemas/DateOnly"},{"$ref":"#/components/schemas/Rfc3339DateTime"}],"discriminator":{"propertyName":"kind","mapping":{"DATE":"#/components/schemas/DateOnly","TIMESTAMP":"#/components/schemas/Rfc3339DateTime"}}},"DateOnly":{"type":"object","required":["kind","value"],"description":"Calendar date, format yyyy-MM-dd.","properties":{"kind":{"type":"string","pattern":"^DATE$"},"value":{"type":"string","format":"date"}}},"Rfc3339DateTime":{"type":"object","required":["kind","value"],"format":"date-time","description":"RFC 3339 timestamp with timezone offset. The server normalizes all inputs to UTC and responses are returned in UTC (trailing 'Z'), seconds precision.","properties":{"kind":{"type":"string","pattern":"^TIMESTAMP$"},"value":{"type":"string","format":"date-time"}}},"RunDateEndValue":{"nullable":true,"oneOf":[{"$ref":"#/components/schemas/DateOnly"},{"$ref":"#/components/schemas/Rfc3339DateTime"}],"discriminator":{"propertyName":"kind","mapping":{"DATE":"#/components/schemas/DateOnly","TIMESTAMP":"#/components/schemas/Rfc3339DateTime"}},"description":"**Exclusive end** of the time slice, used only when the `sourceQuery` contains the `${rdEnd}` placeholder.\nMust be **greater than** `runDate` when both are provided. Formatted per `jobSettings.dateFormat`:\n  - DATE → `yyyy-MM-dd`\n  - TIMESTAMP → RFC 3339 `yyyy-MM-dd'T'HH:mm:ss'Z'`\n\nIf `sourceQuery` omits `${rdEnd}`, this value does **not** restrict the data scan and is ignored for run timing."},"Backrun":{"type":"object","nullable":true,"description":"Enables historical backfill runs relative to the scheduled runDate. If included, additional runs will be triggered for the previous `binValue` time bins using the selected `timeBin`. Example: DAY + 10 -> run the previous 10 days.\n","properties":{"timeBin":{"$ref":"#/components/schemas/BackrunTimeBin"},"binValue":{"type":"integer","minimum":1,"description":"Number of past bins to backfill"}},"required":["timeBin","binValue"]},"BackrunTimeBin":{"type":"string","description":"Time bin used when defining backruns.\n\nCurrent possible values include:\n  * `DAY`   – backrun by day.\n  * `MONTH` – backrun by month.\n  * `YEAR`  – backrun by year.\n\nAdditional values may be introduced in the future"}}}}
```

## 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: * 'PASSING'    — observed value is within expected bounds * 'BREAKING'   — observed value is outside expected bounds * 'SUPPRESSED' — findings are suppressed and excluded from scoring * 'SKIPPED'    — execution of monitor skipped * 'EXCEPTION'  — an exception was encountered executing the monitor\n"},"AdaptiveMonitorTolerance":{"type":"string","description":"Controls how aggressively the adaptive boundary model updates its expected range.\nThe current available values: * 'NARROW' - most strict (slowest to update) * 'NEUTRAL' - default tolerance * 'WIDE' - most lenient (fastest to update).\n","default":"NEUTRAL"},"CustomMonitorResult":{"type":"object","description":"The outcome of a custom monitor for a specific job run.","required":["monitorName","state","score"],"properties":{"monitorName":{"type":"string","description":"Monitor name."},"state":{"$ref":"#/components/schemas/MonitorState"},"score":{"type":"number","format":"double","minimum":0,"maximum":100,"description":"Score based on sum of points per breaking row (0 - 100)."},"breakingPercentage":{"type":"number","format":"double","minimum":0,"maximum":100,"description":"Percentage of records breaking."},"rowsPassing":{"type":"integer","description":"Number of rows that passed."},"rowsBreaking":{"type":"integer","description":"Number of rows that failed."},"rowsTotal":{"type":"integer","description":"Number of total rows."},"exception":{"type":"string","description":"Error message captured when the monitor query failed to execute. Empty when the monitor ran successfully."},"dimensions":{"type":"array","maxItems":50,"description":"DQ dimensions associated with this monitor.","items":{"type":"string"}},"tolerance":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of tolerated failures before this monitor is flagged as BREAKING (mirrors the value supplied at monitor configuration time)."}}}}}}
```

## 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_-]+$","description":"Unique monitor name."},"operation":{"type":"string","enum":["PASS","SUPPRESS"],"description":"Operation to apply to the monitor result:\n* `PASS`     — Set state to passing and retrain (adaptive monitors only).\n* `SUPPRESS` — Set state to suppressed and retrain adaptive monitors."}}}}}}
```

## 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_-]+$","description":"Unique monitor name."},"operation":{"type":"string","enum":["PASS","SUPPRESS"],"description":"Operation to apply to the monitor result:\n* `PASS`     — Set state to passing and retrain (adaptive monitors only).\n* `SUPPRESS` — Set state to suppressed and retrain adaptive monitors."}}}}}}
```

## 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: * 'PASSING'    — observed value is within expected bounds * 'BREAKING'   — observed value is outside expected bounds * 'SUPPRESSED' — findings are suppressed and excluded from scoring * 'SKIPPED'    — execution of monitor skipped * 'EXCEPTION'  — an exception was encountered executing the monitor\n"},"AdaptiveMonitorTolerance":{"type":"string","description":"Controls how aggressively the adaptive boundary model updates its expected range.\nThe current available values: * 'NARROW' - most strict (slowest to update) * 'NEUTRAL' - default tolerance * 'WIDE' - most lenient (fastest to update).\n","default":"NEUTRAL"}}}}
```

## 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: * 'PASSING'    — observed value is within expected bounds * 'BREAKING'   — observed value is outside expected bounds * 'SUPPRESSED' — findings are suppressed and excluded from scoring * 'SKIPPED'    — execution of monitor skipped * 'EXCEPTION'  — an exception was encountered executing the monitor\n"}}}}
```

## 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: * 'PASSING'    — observed value is within expected bounds * 'BREAKING'   — observed value is outside expected bounds * 'SUPPRESSED' — findings are suppressed and excluded from scoring * 'SKIPPED'    — execution of monitor skipped * 'EXCEPTION'  — an exception was encountered executing the monitor\n"}}}}
```

## 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."}}}}}}
```
