openscale service has 8 resource kinds, each listed below with its endpoints, fields, and dependencies. Values resolve late, so you reference another resource with ${kind.ref_name}. For defaults, validation rules, and examples, run wxctl explain <kind>.
YAML envelope & reference syntax
YAML envelope & reference syntax
- Envelope: A config is one or more YAML documents separated by
---. Each has top-levelkindandref_name, then the fields below at the top level (not nested underspec). ref_name: Unique handle for this resource within the config. Used to reference it from other resources, then stripped before the API call (not a schema field).- References: Reference another resource by its ref_name:
${<kind>.<ref_name>}resolves to its id,${<kind>.<ref_name>.<field>}to a specific field. Values resolve late, at plan/apply time.
data_mart
An OpenScale data mart is the per-instance datastore that holds monitoring records (payload, feedback, metrics) for every subscribed deployment.
Runs on SaaS + Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /v2/data_marts |
| Read | GET | /v2/data_marts/{id} |
| List | GET | /v2/data_marts |
| Update | PATCH | /v2/data_marts/{id} |
| Delete | DELETE | /v2/data_marts/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
database_configuration | object | Optional | Database configuration ignored if internal database is requested (internal_database is true) |
database_discovery | string | Optional | Indicates if the database was discovered automatically or manually added by user through UI |
description | string | Optional | Description of the data mart |
internal_database | boolean | Optional | If true the internal database managed by AI OpenScale is provided for the user |
name | string | Optional | Name of the data mart |
service_instance_crn | string | Optional | Can be omitted if user token is used for authorization |
entity, metadata.
Consumers
data_set→.data_mart_id(required)monitor_instance→.data_mart_id(required)subscription→.data_mart_id(required)
data_set
A data set is a typed store within an OpenScale data mart (payload logging, feedback, or business payload) that records the data used to compute a subscription’s monitor metrics.
Runs on SaaS + Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /v2/data_sets |
| Read | GET | /v2/data_sets/{id} |
| List | GET | /v2/data_sets |
| Update | PATCH | /v2/data_sets/{id} |
| Delete | DELETE | /v2/data_sets/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
data_mart_id | string | Required | |
name | string | Required | Name of the data set |
description | string | Optional | Description of the data set |
type | string | Required | Type of the data set |
target | object | Required | |
schema_update_mode | string | Optional | Defines what happens when incoming record has field not present in data set schema. If ‘none’ is specified, unknown fields will be ignored. If ‘auto’ is specified, the schema will be automatically updated with new fields. |
data_schema | object | Required | Schema of data stored in the data set (Spark StructType format) |
location | object | Optional | Location of the data set table |
managed_by | string | Optional | Indicates who manages the data set |
entity, metadata.
Depends on
data_mart_id→data_mart(required)target.target_id→subscription(required)
guardrails_policy
A guardrails policy defines content-filtering and safety rules (such as PII or HAP detection) that OpenScale enforces on generative-AI model inputs and outputs.
Runs on SaaS + Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /guardrails-manager/v1/policies |
| Read | GET | /guardrails-manager/v1/policies/{id} |
| List | GET | /guardrails-manager/v1/policies |
| Update | PUT | /guardrails-manager/v1/policies/{id} |
| Delete | DELETE | /guardrails-manager/v1/policies/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | |
description | string | Optional | Description of the policy |
block_message | string | Optional | Message to display when content is blocked |
mask_character | string | Optional | Character to use for masking (e.g. ”*“) |
input | array<object> | Required | Detector configurations for the input (prompt) direction. Each item is an object {detector, action, detector_properties}: detector names the built-in (e.g. pii, hap); action is block|mask; detector_properties is a list of {name, value} pairs (values are strings). The block|mask choice and inner shape are documented here, not schema-enforced, the engine validates only that the field is an array (array items are not type-checked). |
output | array<object> | Required | Detector configurations for the output (response) direction. Same item shape as input: {detector, action(block|mask), detector_properties:[{name,value}]}. |
policy_status | string | Required | Status of the policy (publish for active, draft for inactive). |
tags | array<string> | Optional |
entity, metadata.
integrated_system
An integrated system registers an external service (notifications, a custom metrics provider, or a third-party endpoint) that OpenScale calls during monitoring.
Runs on SaaS + Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /v2/integrated_systems |
| Read | GET | /v2/integrated_systems/{id} |
| List | GET | /v2/integrated_systems |
| Update | PATCH | /v2/integrated_systems/{id} |
| Delete | DELETE | /v2/integrated_systems/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
connection | object | Optional | The additional connection information for the Integrated System |
credentials | object | Required | The credentials for the Integrated System |
description | string | Required | The description of the Integrated System. |
group_ids | array<string> | Optional | Access control list of group id of Cloud Pak for Data (Only available for open_pages type and OpenScale on Cloud Pak for Data >= 4.0.6 with ENABLE_GROUP_AUTH being true) |
name | string | Required | The name of the Integrated System. |
parameters | object | Optional | Additional parameters |
type | string | Required | |
user_ids | array<string> | Optional | Access control list of user id of Cloud Pak for Data (Only available for open_pages type and OpenScale on Cloud Pak for Data >= 4.0.6 with ENABLE_GROUP_AUTH being true) |
entity, metadata.
monitor_definition
A monitor definition registers a custom monitor type in OpenScale, declaring its metrics, thresholds, and tags.
Runs on SaaS + Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /v2/monitor_definitions |
| Read | GET | /v2/monitor_definitions/{id} |
| List | GET | /v2/monitor_definitions |
| Update | PATCH | /v2/monitor_definitions/{id} |
| Delete | DELETE | /v2/monitor_definitions/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Monitor UI label (must be unique) |
description | string | Optional | Long monitoring description presented in monitoring catalog |
metrics | array<object> | Required | A list of metric definitions |
tags | array<object> | Required | Available tags |
applies_to | object | Optional | Applicability selection for this monitor definition |
parameters_schema | object | Optional | JSON schema used to validate monitoring parameters when enabled |
managed_by | string | Optional | |
schedule | object | Optional | The schedule used to control how frequently monitoring runs |
schedules | object | Optional | A set of schedules for online and batch deployment types. If set, the schedule field is ignored. |
monitor_runtime | object | Optional | Monitor runtime configuration |
entity, metadata.
Consumers
monitor_instance→.monitor_definition_id(optional)
monitor_instance
A monitor instance activates a monitor (quality, fairness, drift, explainability, or a custom definition) on a subscription, with its parameters and alert thresholds.
Runs on SaaS + Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /v2/monitor_instances |
| Read | GET | /v2/monitor_instances/{id} |
| List | GET | /v2/monitor_instances |
| Update | PATCH | /v2/monitor_instances/{id} |
| Delete | DELETE | /v2/monitor_instances/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
data_mart_id | string | Required | |
target.target_id | string | Optional | Discovery scoping only, sent as ?target.target_id=<id> on list/get/delete so the monitor_definition_id identity match resolves within one subscription. Value is read from the nested target.target_id body field via get_nested_field. |
managed_by | string | Optional | |
monitor_definition_id | string | Required | |
parameters | object | Optional | Monitoring parameters consistent with the parameters_schema from the monitor definition |
schedule | object | Optional | The schedule used to control how frequently the target is monitored. The maximum frequency is once every 30 minutes. Defaults to once every hour if not specified. |
schedule_id | string | Optional | |
target | object | Required | |
thresholds | array<object> | Optional | Alert thresholds; each is an object {metric_id, type, value}. The metric_id MUST match the monitor definition: quality -> area_under_roc, fairness -> fairness_value, drift_v2 -> feature_drift_score. A metric id that the definition does not emit is rejected or silently never evaluated, so the monitor never alerts. |
total_records | string | Optional | |
unprocessed_records | object | Optional | Summary about records count |
evaluate_on_create | boolean | Optional | When true, fire the monitor’s first evaluation run (POST /v2/monitor_instances/{id}/runs) immediately after create, a fire-and-forget trigger (wxctl test polls for the result). Omit on monitors whose configuration is incomplete at create time (e.g. a drift monitor awaiting its baseline archive). Never sent to the API. |
entity, metadata.
Depends on
data_mart_id→data_mart(required)target.target_id→subscription(required)monitor_definition_id→monitor_definition(optional)
service_provider
A service provider binds a machine-learning serving environment (such as a watsonx.ai or WML space) to OpenScale so its deployments can be discovered and monitored.
Runs on SaaS + Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /v2/service_providers |
| Read | GET | /v2/service_providers/{id} |
| List | GET | /v2/service_providers |
| Update | PATCH | /v2/service_providers/{id} |
| Delete | DELETE | /v2/service_providers/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
credentials | object | Required | |
deployment_space_id | string | Optional | Reference to V2 Space ID |
description | string | Optional | |
group_ids | array<string> | Optional | Access control list of group id of Cloud Pak for Data (Only available for OpenScale on Cloud Pak for Data >= 4.0.6 with ENABLE_GROUP_AUTH being true) |
integrated_project_id | string | Optional | Project ID |
name | string | Required | Name of the ML service instance |
operational_space_id | string | Optional | Reference to Operational Space |
request_headers | object | Optional | map header name to header value |
service_type | string | Required | machine learning service type (azure_machine_learning_studio is a preferred alias for azure_machine_learning and should be used in new service bindings) |
user_ids | array<string> | Optional | Access control list of user id of Cloud Pak for Data (Only available for OpenScale on Cloud Pak for Data >= 4.0.6 with ENABLE_GROUP_AUTH being true) |
entity, metadata.
Depends on
deployment_space_id→space(optional)
subscription→.service_provider_id(required)
subscription
A subscription connects one deployed model to OpenScale for monitoring, linking it to a service provider and data mart and capturing its input and output schema.
Runs on SaaS + Software · ID field id
Endpoints
| Operation | Method | Path |
|---|---|---|
| Create | POST | /v2/subscriptions |
| Read | GET | /v2/subscriptions/{id} |
| List | GET | /v2/subscriptions |
| Update | PATCH | /v2/subscriptions/{id} |
| Delete | DELETE | /v2/subscriptions/{id} |
| Field | Type | Required | Description |
|---|---|---|---|
analytics_engine | object | Optional | |
asset | object | Required | |
asset_properties | object | Optional | Free-form asset metadata OpenScale would otherwise discover, supplied inline when the deployed asset carries no discoverable schema (a bare wml_function deployment). Passed through verbatim as JSON (the object type is itself the fix for the AIQCS0002E/AIQPO0003E ClassCastException that a JSON-encoded string triggered). KB-blessed keys (models-configure-asset-deployments-using-json-configuration-files): input_data_schema and output_data_schema and training_data_schema (each a Spark StructType {"fields":[{"name","type","nullable","metadata":{"modeling_role"}}]}), prediction_field, prediction_probability_field, label_column, problem_type. Drift baseline (OQ2): put training_data_reference (a COS location object) here for OpenScale to compute stats itself, or let the governance step attach precomputed training_data_stats. |
data_mart_id | string | Required | |
data_sources | array<string> | Optional | |
deployment | object | Required | |
risk_evaluation_status | object | Optional | |
service_provider_id | string | Required | |
payload_records | string | Optional | Local path to a JSON file of scoring records to seed into the subscription’s payload-logging data set after it activates. Content is the verbatim OpenScale store-records body: a JSON array of {request, response} objects (a single {fields, values} object is also accepted and wrapped into a one-element array). Read once by the post_create hook, never sent to the API and never re-seeded on re-apply. |
feedback_records | string | Optional | Local path to a JSON file of scored feedback records to seed into the subscription’s feedback data set after it activates. Content is the verbatim OpenScale store-records body: a JSON array (or a single {fields, values} object, which is wrapped) whose rows carry the model’s prediction and probability columns. Read once by the post_create hook, never sent to the API. |
entity, metadata.
Depends on
asset.asset_id→wml_deployment(required)data_mart_id→data_mart(required)deployment.deployment_id→wml_deployment(required)service_provider_id→service_provider(required)
data_set→.target.target_id(required)monitor_instance→.target.target_id(required)

