Preview products
POST /api/v1/products/preview: request fields and declared response contract.
POST/api/v1/products/preview
| Permission | settings.read |
|---|---|
| Workspace scope | required |
| Scope target | workspace |
Request body
| Field | Type | Required | Nullable | Default |
|---|---|---|---|---|
| productKey | string | required | non-null | — |
| productVersion | string | required | non-null | — |
| namespace | string | optional | non-null | — |
| expectedPlan | object | optional | non-null | — |
| expectedPlan.planSchemaVersion | number | required | non-null | — |
| expectedPlan.planHash | string | required | non-null | — |
| productConfig | object | optional | non-null | — |
| profile | object | optional | non-null | — |
| profile.profileKey | string | required | non-null | — |
| profile.profileVersion | string | required | non-null | — |
| bindingAnswers | object | optional | non-null | — |
| roleSatisfactions | object | optional | non-null | — |
| acceptedRecommendations | object | optional | 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.root | object | required | non-null | — |
| data.plan.root.productKey | string | required | non-null | — |
| data.plan.root.productVersion | string | required | non-null | — |
| data.plan.root.manifestDigest | string | required | non-null | — |
| data.plan.graph | array | required | non-null | — |
| data.plan.references | array | required | non-null | — |
| data.plan.ownedContentOrder | array | required | non-null | — |
| data.plan.planHash | string | required | non-null | — |
| data.configuration | object | optional | non-null | — |
| data.configuration.ok | boolean | required | non-null | — |
| data.configuration.plan | object | required | non-null | — |
| data.configuration.plan.product | object | required | non-null | — |
| data.configuration.plan.contractVersion | string | required | non-null | — |
| data.configuration.plan.validator | object | required | non-null | — |
| data.configuration.plan.profile | object | optional | non-null | — |
| data.configuration.plan.settings | object | required | non-null | — |
| data.configuration.plan.provenance | object | required | non-null | — |
| data.configuration.plan.bindings | object | required | non-null | — |
| data.configuration.plan.roleSatisfactions | object | optional | non-null | — |
| data.configuration.plan.inputSlots | object | required | non-null | — |
| data.configuration.plan.planHash | string | required | non-null | — |
| data.configuration.blockers | array | required | non-null | — |
| data.configuration.requiredDecisions | array | required | non-null | — |
| data.configuration.unresolvedBindings | array | required | non-null | — |
| data.configuration.childProjections | object | optional | non-null | — |
Declared failures
| PRODUCT_OPERATION_FAILED | 500 — not retryable |
|---|---|
| PRODUCT_REQUIRES_RESOLUTION | 409 — not retryable |
| PRODUCT_STALE | 409 — not retryable |
Readback
This method returns the current state it read.
- products.preview
Request example
Schematic only. Replace placeholders with real values and include all required nested fields.
POST /api/v1/products/preview HTTP/1.1
Authorization: Bearer <token>
x-merulan-workspace-id: <workspace-id>
Content-Type: application/json
{
"productKey": "<productKey>",
"productVersion": "<productVersion>"
}