Plan quality configuration
POST /api/v1/quality/configuration/plans: request fields and declared response contract.
POST/api/v1/quality/configuration/plans
| Permission | quality.configure |
|---|---|
| Workspace scope | required |
| Scope target | workspace |
Request body
| Field | Type | Required | Nullable | Default |
|---|---|---|---|---|
| draft | object | required | non-null | — |
| draft.kind | "metric_definition" | "objective" | "constraint" | "constraint_group" | "notification_binding" | required | non-null | — |
| draft.resourceId | string | required | non-null | — |
| draft.displayName | string | required | non-null | — |
| draft.body | object | required | non-null | — |
| draft.provenance | object | optional | non-null | — |
| draft.provenance.productKey | string | required | non-null | — |
| draft.provenance.productVersion | string | required | non-null | — |
| draft.provenance.packageDigest | string | required | non-null | — |
| draft.provenance.productInstallationId | string | required | non-null | — |
| draft.provenance.configurationRevision | integer | required | non-null | — |
| draft.lifecycle | "active" | "inactive" | optional | non-null | — |
| expectedRevision | integer | required | non-null | — |
Response
201
| Field | Type | Required | Nullable | Default |
|---|---|---|---|---|
| data | object | required | non-null | — |
| data.plan | object | required | non-null | — |
| data.plan.schemaVersion | number | required | non-null | — |
| data.plan.workspaceId | string | required | non-null | — |
| data.plan.expectedRevision | integer | required | non-null | — |
| data.plan.successor | object | required | non-null | — |
| data.plan.successor.kind | "metric_definition" | "objective" | "constraint" | "constraint_group" | "notification_binding" | required | non-null | — |
| data.plan.successor.resourceId | string | required | non-null | — |
| data.plan.successor.revision | integer | required | non-null | — |
| data.plan.successor.workspaceId | string | required | non-null | — |
| data.plan.successor.lifecycle | "active" | "inactive" | required | non-null | — |
| data.plan.successor.resource | object | required | non-null | — |
| data.plan.successor.references | array | required | non-null | — |
| data.plan.successor.associations | array | required | non-null | — |
| data.plan.successor.contentDigest | string | required | non-null | — |
| data.plan.successor.createdByPrincipalId | string | required | non-null | — |
| data.plan.successor.createdAt | string | required | non-null | — |
| data.plan.planDigest | string | required | non-null | — |
Declared failures
| QUALITY_CONFIGURATION_CAPABILITY_UNAVAILABLE | 422 — not retryable |
|---|---|
| QUALITY_CONFIGURATION_CONSTRAINT_GROUP_CYCLE | 422 — not retryable |
| QUALITY_CONFIGURATION_COST_REFUSED | 422 — not retryable |
| QUALITY_CONFIGURATION_FAILED | 500 — not retryable |
| QUALITY_CONFIGURATION_IDEMPOTENCY_MISMATCH | 409 — not retryable |
| QUALITY_CONFIGURATION_INVALID | 422 — not retryable |
| QUALITY_CONFIGURATION_PLAN_DIGEST_MISMATCH | 409 — not retryable |
| QUALITY_CONFIGURATION_REFERENCE_DENIED | 403 — not retryable |
| QUALITY_CONFIGURATION_REFERENCE_NOT_FOUND | 404 — not retryable |
| QUALITY_CONFIGURATION_SEMANTIC_SUCCESSOR_REQUIRED | 422 — not retryable |
| QUALITY_CONFIGURATION_STALE_HEAD | 409 — not retryable |
| QUALITY_CONFIGURATION_UNIT_MISMATCH | 422 — not retryable |
Readback
This method returns the current state it read.
- quality.configuration.plan
Request example
Schematic only. Replace placeholders with real values and include all required nested fields.
POST /api/v1/quality/configuration/plans HTTP/1.1
Authorization: Bearer <token>
x-merulan-workspace-id: <workspace-id>
Content-Type: application/json
{
"draft": {},
"expectedRevision": 0
}