Request constraint runs
POST /api/v1/quality/constraint-runs: request fields and declared response contract.
POST/api/v1/quality/constraint-runs
| Permission | quality.operate |
|---|---|
| Workspace scope | required |
| Scope target | workspace |
Request body
| Field | Type | Required | Nullable | Default |
|---|---|---|---|---|
| constraint | object | required | non-null | — |
| constraint.id | string | required | non-null | — |
| constraint.revision | integer | required | non-null | — |
| cause | "schedule" | "upstream_change" | "manual_request" | "correction" | required | non-null | — |
| causeKey | string | required | non-null | — |
| window | object | optional | non-null | — |
| window.startsAt | string | required | non-null | — |
| window.endsAt | string | required | non-null | — |
Response
201
| Field | Type | Required | Nullable | Default |
|---|---|---|---|---|
| data | object | required | non-null | — |
| data.outcome | "accepted" | "replayed" | required | non-null | — |
| data.run | object | required | non-null | — |
| data.run.id | string | required | non-null | — |
| data.run.workspaceId | string | required | non-null | — |
| data.run.constraint | object | required | non-null | — |
| data.run.constraint.id | string | required | non-null | — |
| data.run.constraint.revision | integer | required | non-null | — |
| data.run.metric | object | required | non-null | — |
| data.run.metric.id | string | required | non-null | — |
| data.run.metric.revision | integer | required | non-null | — |
| data.run.cause | "schedule" | "upstream_change" | "manual_request" | "correction" | required | non-null | — |
| data.run.requestedAt | string | required | non-null | — |
| data.run.completedAt | string | optional | non-null | — |
| data.run.state | "accepted" | "waiting" | "conforming" | "breaching" | "unevaluable" | "failed" | "canceled" | required | non-null | — |
| data.run.evidence | unknown | optional | non-null | — |
| data.run.versions | object | required | non-null | — |
| data.run.versions.registryRevision | integer | required | non-null | — |
| data.run.versions.evaluatorContractVersion | integer | required | non-null | — |
| data.run.versions.evidenceAdapterVersions | object | required | non-null | — |
| data.run.permissionLineage | object | required | non-null | — |
| data.run.permissionLineage.memberId | string | required | non-null | — |
| data.run.permissionLineage.decisionId | string | optional | non-null | — |
| data.run.permissionLineage.restrictionCodes | array | required | non-null | — |
| data.run.durableRunId | string | optional | non-null | — |
| data.run.resumeToken | string | optional | non-null | — |
Declared failures
| QUALITY_CONSTRAINT_RUN_CAUSE_NOT_CONFIGURED | 422 — not retryable |
|---|---|
| QUALITY_CONSTRAINT_RUN_CONSTRAINT_INACTIVE | 409 — not retryable |
| QUALITY_CONSTRAINT_RUN_CONSTRAINT_REVISION_NOT_FOUND | 404 — not retryable |
| QUALITY_CONSTRAINT_RUN_METRIC_REVISION_NOT_FOUND | 409 — not retryable |
| QUALITY_CONSTRAINT_RUN_REQUEST_FAILED | 500 — not retryable |
Readback
Read the result back with:
- quality.constraintRuns.get
Request example
Schematic only. Replace placeholders with real values and include all required nested fields.
POST /api/v1/quality/constraint-runs HTTP/1.1
Authorization: Bearer <token>
x-merulan-workspace-id: <workspace-id>
Content-Type: application/json
{
"constraint": {},
"cause": "schedule",
"causeKey": "<causeKey>"
}