Approve model releases
POST /api/v1/predictive-models/releases/{releaseId}/approve: request fields and declared response contract.
POST/api/v1/predictive-models/releases/{releaseId}/approve
| Permission | dataPipelines.manage |
|---|---|
| Workspace scope | required |
| Scope target | workspace |
Parameters
| Field | Type | Required | Nullable | Default |
|---|---|---|---|---|
| releaseId | string | required | non-null | — |
Query parameters: none.
Request body
| Field | Type | Required | Nullable | Default |
|---|---|---|---|---|
| note | string | optional | non-null | — |
Response
200
| Field | Type | Required | Nullable | Default |
|---|---|---|---|---|
| data | object | required | non-null | — |
| data.id | string | required | non-null | — |
| data.companyId | string | required | non-null | — |
| data.workspaceId | string | required | non-null | — |
| data.objectiveId | string | required | non-null | — |
| data.environment | "staging" | "production" | required | non-null | — |
| data.versionId | string | required | non-null | — |
| data.executorKind | string | required | non-null | — |
| data.kind | "promotion" | "rollback" | required | non-null | — |
| data.status | "pending" | "approved" | "rejected" | required | non-null | — |
| data.revision | integer | required | non-null | — |
| data.isCurrent | boolean | required | non-null | — |
| data.supersedesVersionId | unknown | required | non-null | — |
| data.requestedBy | string | required | non-null | — |
| data.requestedAt | unknown | required | non-null | — |
| data.decidedBy | unknown | required | non-null | — |
| data.decidedAt | unknown | required | non-null | — |
| data.decisionNote | unknown | required | non-null | — |
| data.evidence | object | required | non-null | — |
| data.evidence.evaluationRunId | string | optional | non-null | — |
| data.evidence.gates | object | required | non-null | {} |
| data.evidence.affectedConsumers | array | required | non-null | [] |
| data.evidence.summary | string | optional | non-null | — |
| data.createdAt | unknown | required | non-null | — |
| data.updatedAt | unknown | required | non-null | — |
Declared failures
| ACCESS_DENIED | 403 — not retryable |
|---|---|
| CORE_ERROR | 500 — not retryable |
| GOVERNANCE_DENIED | 403 — not retryable |
| QUOTA_DENIED | 429 — retryable |
| VALIDATION_ERROR | 400 — not retryable |
| VALIDATION_INPUT_ERROR | 400 — not retryable |
Readback
Read the result back with:
- predictiveModels.release.list
Request example
Schematic only. Replace placeholders with real values and include all required nested fields.
POST /api/v1/predictive-models/releases/{releaseId}/approve HTTP/1.1
Authorization: Bearer <token>
x-merulan-workspace-id: <workspace-id>
Content-Type: application/json
{}