Create laboratory workbenches
POST /api/v1/laboratory/workbenches: request fields and declared response contract.
POST/api/v1/laboratory/workbenches
| Property | Value |
|---|---|
| Permission | laboratory.method.publish |
| Workspace scope | required |
| Scope target | workspace |
Request body
| Field | Type | Required | Nullable | Default |
|---|---|---|---|---|
| workbenchId | string | required | non-null | — |
| title | string | required | non-null | — |
| objective | string | optional | non-null | "" |
| graph | object | required | non-null | — |
| graph.schemaVersion | number | required | non-null | — |
| graph.nodes | array | required | non-null | — |
| graph.edges | array | required | non-null | — |
Response
201
| Field | Type | Required | Nullable | Default |
|---|---|---|---|---|
| data | object | required | non-null | — |
| data.document | object | required | non-null | — |
| data.document.workbenchId | string | required | non-null | — |
| data.document.title | string | required | non-null | — |
| data.document.objective | string | required | non-null | "" |
| data.document.graph | object | required | non-null | — |
| data.document.graph.schemaVersion | number | required | non-null | — |
| data.document.graph.nodes | array | required | non-null | — |
| data.document.graph.edges | array | required | non-null | — |
| data.acceptance | object | required | non-null | — |
| data.acceptance.policyDigest | string | required | non-null | — |
| data.acceptance.capabilityDigest | string | required | non-null | — |
| data.acceptance.readiness | object | required | non-null | — |
| data.acceptance.readiness.authorable | boolean | required | non-null | — |
| data.acceptance.readiness.executable | boolean | required | non-null | — |
| data.acceptance.readiness.reasons | array | required | non-null | — |
| data.acceptance.resolvedReferences | array | required | non-null | — |
| data.revision | integer | required | non-null | — |
| data.parentRevision | integer | required | nullable | — |
| data.digest | string | required | non-null | — |
| data.sealDigest | string | required | non-null | — |
| data.createdAt | string | required | non-null | — |
| data.createdBy | string | required | non-null | — |
Declared failures
| Property | Value |
|---|---|
| ACCESS_DENIED | 403 — not retryable |
| APPROVAL_REQUIRED | 403 — not retryable |
| CORE_ERROR | 500 — not retryable |
| GOVERNANCE_DENIED | 403 — not retryable |
| NOT_FOUND | 404 — not retryable |
| QUOTA_DENIED | 429 — retryable |
| REBASE_CONFLICT | 409 — not retryable |
| REVISION_CONFLICT | 409 — retryable |
| SETUP_REQUIRED | 503 — not retryable |
| VALIDATION_ERROR | 400 — not retryable |
| VALIDATION_INPUT_ERROR | 400 — not retryable |
Readback
Read the result back with:
- laboratory.workbenches.read
Request example
Schematic only. Replace placeholders with real values and include all required nested fields.
POST /api/v1/laboratory/workbenches HTTP/1.1
Authorization: Bearer <token>
x-merulan-workspace-id: <workspace-id>
Content-Type: application/json
{
"workbenchId": "<workbenchId>",
"title": "<title>",
"graph": {}
}