Skip to content

Plan schema migrations

POST /api/v1/ontology/migrations/plans: request fields and declared response contract.

POST/api/v1/ontology/migrations/plans

Authorization
Permissionparties.declareKind
Workspace scoperequired
Scope targetworkspace

Request body

Request body fields
FieldTypeRequiredNullableDefault
kindstringrequirednon-null—
fieldsarrayrequirednon-null—
implementsarrayoptionalnon-null—

Response

201

Response fields
FieldTypeRequiredNullableDefault
dataobjectrequirednon-null—
data.planobjectrequirednon-null—
data.plan.idstringrequirednon-null—
data.plan.companyIdstringrequirednon-null—
data.plan.workspaceIdstringrequirednon-null—
data.plan.kindstringrequirednon-null—
data.plan.diffFingerprintstringrequirednon-null—
data.plan.changesarrayrequirednon-null—
data.plan.impactsarrayrequirednon-null—
data.plan.stepsarrayrequirednon-null—
data.plan.status"draft" | "approved" | "applied" | "abandoned"requirednon-null—
data.plan.createdByMemberIdstringoptionalnon-null—
data.plan.approvedByMemberIdstringoptionalnon-null—
data.plan.appliedAtstringoptionalnon-null—
data.plan.createdAtstringrequirednon-null—
data.plan.updatedAtstringrequirednon-null—
data.createdbooleanrequirednon-null—
data.classification"safe" | "warning" | "breaking"requirednon-null—

Declared failures

Declared failures
ONTOLOGY_MIGRATIONS_PLAN_FAILED400 — not retryable

Readback

Read the result back with:

  • ontology.migrations.get

Request example

Schematic only. Replace placeholders with real values and include all required nested fields.

POST /api/v1/ontology/migrations/plans HTTP/1.1
Authorization: Bearer <token>
x-merulan-workspace-id: <workspace-id>
Content-Type: application/json

{
  "kind": "<kind>",
  "fields": []
}