Skip to content

HTTP API / Modeling

Modeling API ​

38 operations. Paths are relative to the API host (http://localhost:5080 in local development). Every operation accepts an OIDC bearer token (Authorization: Bearer …) or a workspace API key (X-Api-Key: keel_live_…); errors are RFC 9457 Problem Details with a code (error codes). Permissions: matrix.

MethodPathSummary
GET/api/v1/workspaces/{workspaceId}/change-requestsChange requests of a workspace (or one model), newest first.
GET/api/v1/workspaces/{workspaceId}/model-generationsModel generations of a workspace, newest first (optionally for one scan run).
GET/api/v1/workspaces/{workspaceId}/modelsSemantic models of a workspace.
POST/api/v1/workspaces/{workspaceId}/modelsCreate a model with an empty first revision on main.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}A model with its branches and latest release.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}:generateGenerate proposals for a model from a scan (default the latest) onto keel/proposals-{run} with a change request.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/branchesCreate a branch from a branch head (default main) or a revision.
DELETE/api/v1/workspaces/{workspaceId}/models/{modelId}/branches/{name}Delete a branch (not main); its open change request is closed.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/change-requestsPropose merging a branch (default into main); the checks run at once.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}A change request with its diff, checks, reviews, conflicts and merge blockers.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}:acknowledgeConfirm consumers of breaking changes were notified.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}:checksRe-run the checks against the current branch heads.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}:closeClose without merging.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}:mergeThree-way merge into the target (409 when a branch moved since the checks).
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}:reviewApprove, request changes or comment.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/diffObject-level diff between two branches or revisions.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/graphCanvas graph of a branch (or the caller's working copy of it): entities, joins, metrics, domains, issues.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/historyFirst-parent history of a branch.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/metrics:previewMetric editor preview: compiled SQL, the metric's issues, authoring checks and (with run) its last 12 periods; nothing is stored.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/query:compileCompile a semantic query against a release or branch of the model to dialect SQL and its parameters (422 with suggestions for unknown names).
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/query:runRun a semantic query on the model's source (row limit 1000 by default, 10000 at most; 30 s timeout).
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/releasesReleases of a model, newest first.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/releasesTag a main revision (default the head) with the suggested or given version.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/releases/{releaseId}:rollbackPublish an earlier release's revision as a new release.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/revisionsCommit a validated model document on a branch (409 when the head moved).
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/revisions/{revisionId}A revision: document, content hash, parents and validation issues.
PUT/api/v1/workspaces/{workspaceId}/models/{modelId}/settingsBranch protection, required approvals, automatic generation.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/strategyThe model's strategy report, questionnaire answers and ticked-off actions.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/strategy:recommendRecompute the strategy report from the latest discoveries and the model.
PUT/api/v1/workspaces/{workspaceId}/models/{modelId}/strategy/actions/{key}Tick a next action off, or back on.
PUT/api/v1/workspaces/{workspaceId}/models/{modelId}/strategy/questionnaireStore the questionnaire answers and recompute the recommendation.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/validateValidate a model document against the model's sources (Problems panel); nothing is stored.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/working-copyThe caller's working copy of a branch (404 when they have none); ETag is its version.
PUT/api/v1/workspaces/{workspaceId}/models/{modelId}/working-copyAutosave the caller's draft of a branch (412 when the expected version is stale); returns validation.
DELETE/api/v1/workspaces/{workspaceId}/models/{modelId}/working-copyDiscard the caller's draft of a branch.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/working-copy:commitCommit the draft as a revision on its branch and clear it; rebases cleanly when the branch moved, else 409 Modeling.WorkingCopyOutdated.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/working-copy:conflictsWhat rebasing the caller's draft onto the branch head conflicts on (target = branch head, source = draft); empty when clean.
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/working-copy:rebaseMerge the branch's new commits into the draft; resolutions pick a side per conflicting path (409 Modeling.WorkingCopyOutdated while any is unresolved).

ListChangeRequests ​

http
GET /api/v1/workspaces/{workspaceId}/change-requests

Change requests of a workspace (or one model), newest first.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdqueryuuidno
activequerybooleanno
StatusDescriptionBody
200OKChangeRequestSummaryDto[]

ListModelGenerations ​

http
GET /api/v1/workspaces/{workspaceId}/model-generations

Model generations of a workspace, newest first (optionally for one scan run).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
runIdqueryuuidno
limitqueryint32no
StatusDescriptionBody
200OKGenerationDto[]

ListModels ​

http
GET /api/v1/workspaces/{workspaceId}/models

Semantic models of a workspace.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
StatusDescriptionBody
200OKModelSummaryDto[]

CreateModel ​

http
POST /api/v1/workspaces/{workspaceId}/models

Create a model with an empty first revision on main.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes

Request body (application/json): CreateModelRequest

FieldTypeNotes
dataSourceIdsuuid[]?
descriptionstring?
namestring
StatusDescriptionBody
201CreatedModelCreatedResult

Response 201: ModelCreatedResult

FieldTypeNotes
iduuid
mainRevisionIduuid

GetModel ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}

A model with its branches and latest release.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
StatusDescriptionBody
200OKModelDto

Response 200: ModelDto

FieldTypeNotes
allowDirectCommitsToMainboolean
autoGenerateboolean
branchesBranchDto[]
dataSourceIdsuuid[]
descriptionstring?
iduuid
latestReleaseReleaseDto?
namestring
requiredApprovalsint32
workspaceIduuid

GenerateModel ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}:generate

Generate proposals for a model from a scan (default the latest) onto keel/proposals-{run} with a change request.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): GenerateModelRequest

FieldTypeNotes
includeHighConfidenceboolean?
runIduuid?
StatusDescriptionBody
202AcceptedGenerationAccepted

Response 202: GenerationAccepted

FieldTypeNotes
generationIduuid
jobIduuid

CreateBranch ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/branches

Create a branch from a branch head (default main) or a revision.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): CreateBranchRequest

FieldTypeNotes
fromBranchstring?
fromRevisionIduuid?
namestring
StatusDescriptionBody
201CreatedCreatedResponse

Response 201: CreatedResponse

FieldTypeNotes
iduuid

DeleteBranch ​

http
DELETE /api/v1/workspaces/{workspaceId}/models/{modelId}/branches/{name}

Delete a branch (not main); its open change request is closed.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
namepathstringyes
StatusDescriptionBody
204No Content—

OpenChangeRequest ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests

Propose merging a branch (default into main); the checks run at once.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): OpenChangeRequestRequest

FieldTypeNotes
descriptionstring?
reviewersstring[]?
sourceBranchstring
targetBranchstring?
titlestring
StatusDescriptionBody
201CreatedChangeRequestOpenedResult

Response 201: ChangeRequestOpenedResult

FieldTypeNotes
iduuid
numberint32

GetChangeRequest ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}

A change request with its diff, checks, reviews, conflicts and merge blockers.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
numberpathint32yes
StatusDescriptionBody
200OKChangeRequestDto

Response 200: ChangeRequestDto

FieldTypeNotes
acknowledgedBystring?
approvalsint32
checksCheckDto[]
checksCurrentboolean
conflictsConflictDto[]
descriptionstring?
diffDiffDto
iduuid
mergeBlockersstring[]
mergedRevisionIduuid?
modelIduuid
modelNamestring
numberint32
openedAtdate-time
openedBystring
openedByNamestring
releaseReleaseDto?
requestedReviewersRequestedReviewerDto[]
requiredApprovalsint32
reviewsReviewDto[]
sourceBranchstring
statusChangeRequestStatusOne of Open, Approved, ChangesRequested, Merged, Closed
suggestedVersionstring
targetBranchstring
titlestring

AcknowledgeBreakingChanges ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}:acknowledge

Confirm consumers of breaking changes were notified.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
numberpathint32yes
StatusDescriptionBody
204No Content—

RunChangeRequestChecks ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}:checks

Re-run the checks against the current branch heads.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
numberpathint32yes
StatusDescriptionBody
204No Content—

CloseChangeRequest ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}:close

Close without merging.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
numberpathint32yes
StatusDescriptionBody
204No Content—

MergeChangeRequest ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}:merge

Three-way merge into the target (409 when a branch moved since the checks).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
numberpathint32yes

Request body (application/json): MergeRequest

FieldTypeNotes
resolutionsobject?
StatusDescriptionBody
200OKuuid

ReviewChangeRequest ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/change-requests/{number}:review

Approve, request changes or comment.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
numberpathint32yes

Request body (application/json): ReviewRequest

FieldTypeNotes
commentstring?
decisionReviewDecisionOne of Approve, RequestChanges, Comment
StatusDescriptionBody
204No Content—

GetDiff ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/diff

Object-level diff between two branches or revisions.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
basequerystringyes
headquerystringyes
StatusDescriptionBody
200OKDiffDto

Response 200: DiffDto

FieldTypeNotes
addedint32
baseRevisionIduuid
changesObjectChangeDto[]
headRevisionIduuid
modifiedint32
removedint32
suggestedBumpReleaseBumpOne of None, Patch, Minor, Major

GetModelGraph ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/graph

Canvas graph of a branch (or the caller's working copy of it): entities, joins, metrics, domains, issues.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
branchquerystringno
includeWorkingCopyquerybooleanno
StatusDescriptionBody
200OKModelGraphDto

Response 200: ModelGraphDto

FieldTypeNotes
branchstring
contentHashstring
domainsGraphDomain[]
edgesGraphEdge[]
headRevisionIduuid
issuesValidationIssue[]
metricsGraphMetric[]
modelIduuid
nodesGraphNode[]
workingCopyVersionint32?

GetHistory ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/history

First-parent history of a branch.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
branchquerystringno
limitqueryint32no
StatusDescriptionBody
200OKRevisionSummaryDto[]

PreviewMetric ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/metrics:preview

Metric editor preview: compiled SQL, the metric's issues, authoring checks and (with run) its last 12 periods; nothing is stored.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): PreviewMetricRequest

FieldTypeNotes
branchstring?The branch whose working copy (else head) the metric is previewed on; default main.
includeWorkingCopyboolean?Preview on the caller's draft of the branch (default); false = on the branch head.
metricMetricDef
previousNamestring?The metric's current name when the edit renames it.
runboolean?Also read the last 12 periods of values from the source (needs QueryServing).
StatusDescriptionBody
200OKMetricPreviewDto

Response 200: MetricPreviewDto

FieldTypeNotes
checksMetricCheckDto[]
dialectstring?
grainstring?
issuesValidationIssue[]
seriesMetricPreviewPointDto[]?
seriesErrorstring?
sourceQuerySourceDto
sqlstring?

CompileModelQuery ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/query:compile

Compile a semantic query against a release or branch of the model to dialect SQL and its parameters (422 with suggestions for unknown names).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): SemanticQueryBody

FieldTypeNotes
dimensionsstring[]?
filtersQueryFilterBody[]?
limitint32?
metricsstring[]
optionsQueryOptionsBody?
orderByQueryOrderRequest[]?
segmentsstring[]?
sourceQuerySourceRequest?
viewAsQueryViewAs?
StatusDescriptionBody
200OKCompiledQueryDto
422Unprocessable EntityProblemDetails

Response 200: CompiledQueryDto

FieldTypeNotes
columnsQueryColumnDto[]
dialectstring
limitint32
parametersQueryParameterDto[]
sourceQuerySourceDto
sqlstring
warningsstring[]

RunModelQuery ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/query:run

Run a semantic query on the model's source (row limit 1000 by default, 10000 at most; 30 s timeout).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): SemanticQueryBody

FieldTypeNotes
dimensionsstring[]?
filtersQueryFilterBody[]?
limitint32?
metricsstring[]
optionsQueryOptionsBody?
orderByQueryOrderRequest[]?
segmentsstring[]?
sourceQuerySourceRequest?
viewAsQueryViewAs?
StatusDescriptionBody
200OKQueryResultDto
422Unprocessable EntityProblemDetails

Response 200: QueryResultDto

FieldTypeNotes
cacheQueryCacheDto
columnsQueryColumnDto[]
durationMsint64
rowsnone[][]
sourceQuerySourceDto
sqlstring?
truncatedboolean
trustQueryTrustDto
warningsstring[]

ListReleases ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/releases

Releases of a model, newest first.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
StatusDescriptionBody
200OKReleaseDto[]

PublishRelease ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/releases

Tag a main revision (default the head) with the suggested or given version.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): PublishReleaseRequest

FieldTypeNotes
notesstring?
revisionIduuid?
versionstring?
StatusDescriptionBody
201CreatedReleasePublishedResult

Response 201: ReleasePublishedResult

FieldTypeNotes
iduuid
versionstring

RollbackRelease ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/releases/{releaseId}:rollback

Publish an earlier release's revision as a new release.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
releaseIdpathuuidyes

Request body (application/json): RollbackRequest

FieldTypeNotes
notesstring?
StatusDescriptionBody
201CreatedReleasePublishedResult

Response 201: ReleasePublishedResult

FieldTypeNotes
iduuid
versionstring

CommitRevision ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/revisions

Commit a validated model document on a branch (409 when the head moved).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): CommitRequest

FieldTypeNotes
branchstring
definitionModelDefinition
expectedHeadRevisionIduuid
messagestring
StatusDescriptionBody
201CreatedCreatedResponse

Response 201: CreatedResponse

FieldTypeNotes
iduuid

GetRevision ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/revisions/{revisionId}

A revision: document, content hash, parents and validation issues.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
revisionIdpathuuidyes
StatusDescriptionBody
200OKRevisionDto

Response 200: RevisionDto

FieldTypeNotes
authorstring
committedAtdate-time
contentHashstring
definitionModelDefinition
iduuid
issuesValidationIssue[]
messagestring
modelIduuid
parentIdsuuid[]

UpdateModelSettings ​

http
PUT /api/v1/workspaces/{workspaceId}/models/{modelId}/settings

Branch protection, required approvals, automatic generation.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): UpdateModelSettingsRequest

FieldTypeNotes
allowDirectCommitsToMainboolean
autoGenerateboolean
requiredApprovalsint32
StatusDescriptionBody
204No Content—

GetStrategy ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/strategy

The model's strategy report, questionnaire answers and ticked-off actions.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
StatusDescriptionBody
200OKStrategyDto

Response 200: StrategyDto

FieldTypeNotes
answersStrategyAnswers?
doneActionsstring[]
errorstring?
generatedAtdate-time?
modelIduuid
modelNamestring
reportStrategyReport?
statusstring

RecommendStrategy ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/strategy:recommend

Recompute the strategy report from the latest discoveries and the model.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
StatusDescriptionBody
202AcceptedStrategyQueued

Response 202: StrategyQueued

FieldTypeNotes
jobIduuid

SetStrategyAction ​

http
PUT /api/v1/workspaces/{workspaceId}/models/{modelId}/strategy/actions/{key}

Tick a next action off, or back on.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
keypathstringyes

Request body (application/json): StrategyActionRequest

FieldTypeNotes
doneboolean
StatusDescriptionBody
204No Content—

AnswerStrategyQuestionnaire ​

http
PUT /api/v1/workspaces/{workspaceId}/models/{modelId}/strategy/questionnaire

Store the questionnaire answers and recompute the recommendation.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): StrategyAnswers

FieldTypeNotes
aiUseCasesstring[]
biToolsstring[]
latencystring
teamSkillsstring[]
usesDbtboolean
StatusDescriptionBody
202AcceptedStrategyQueued

Response 202: StrategyQueued

FieldTypeNotes
jobIduuid

ValidateModel ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/validate

Validate a model document against the model's sources (Problems panel); nothing is stored.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): ValidateModelRequest

FieldTypeNotes
definitionModelDefinition
StatusDescriptionBody
200OKValidationReportDto

Response 200: ValidationReportDto

FieldTypeNotes
errorsint32
isValidboolean
issuesValidationIssue[]
warningsint32

GetWorkingCopy ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/working-copy

The caller's working copy of a branch (404 when they have none); ETag is its version.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
branchquerystringyes
StatusDescriptionBody
200OKWorkingCopyDto

Response 200: WorkingCopyDto

FieldTypeNotes
baseRevisionIduuid
branchstring
branchHeadRevisionIduuid
branchMovedboolean
contentHashstring
definitionModelDefinition
modelIduuid
savedAtdate-time
validationValidationReportDto
versionint32

SaveWorkingCopy ​

http
PUT /api/v1/workspaces/{workspaceId}/models/{modelId}/working-copy

Autosave the caller's draft of a branch (412 when the expected version is stale); returns validation.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
branchquerystringyes

Request body (application/json): SaveWorkingCopyRequest

FieldTypeNotes
baseRevisionIduuid?First save only: the revision the edits started from (default the branch head).
definitionModelDefinition
expectedVersionint32?The working copy version the client last saw (or send If-Match: "n"); omit on the first save.
StatusDescriptionBody
200OKWorkingCopySavedDto

Response 200: WorkingCopySavedDto

FieldTypeNotes
baseRevisionIduuid
contentHashstring
savedAtdate-time
validationValidationReportDto
versionint32

DiscardWorkingCopy ​

http
DELETE /api/v1/workspaces/{workspaceId}/models/{modelId}/working-copy

Discard the caller's draft of a branch.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
branchquerystringyes
StatusDescriptionBody
204No Content—

CommitWorkingCopy ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/working-copy:commit

Commit the draft as a revision on its branch and clear it; rebases cleanly when the branch moved, else 409 Modeling.WorkingCopyOutdated.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
branchquerystringyes

Request body (application/json): CommitWorkingCopyRequest

FieldTypeNotes
expectedVersionint32?
messagestring
StatusDescriptionBody
201CreatedWorkingCopyCommittedDto

Response 201: WorkingCopyCommittedDto

FieldTypeNotes
contentHashstring
parentRevisionIduuid
rebasedboolean
revisionIduuid

GetWorkingCopyConflicts ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/working-copy:conflicts

What rebasing the caller's draft onto the branch head conflicts on (target = branch head, source = draft); empty when clean.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
branchquerystringyes
StatusDescriptionBody
200OKWorkingCopyConflictsDto

Response 200: WorkingCopyConflictsDto

FieldTypeNotes
baseRevisionIduuid
conflictsConflictDto[]
headRevisionIduuid

RebaseWorkingCopy ​

http
POST /api/v1/workspaces/{workspaceId}/models/{modelId}/working-copy:rebase

Merge the branch's new commits into the draft; resolutions pick a side per conflicting path (409 Modeling.WorkingCopyOutdated while any is unresolved).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
branchquerystringyes

Request body (application/json): RebaseWorkingCopyRequest?

StatusDescriptionBody
200OKWorkingCopySavedDto

Response 200: WorkingCopySavedDto

FieldTypeNotes
baseRevisionIduuid
contentHashstring
savedAtdate-time
validationValidationReportDto
versionint32

Anchor Keel is a working product name: one platform, a shared core and licensed modules (Keel Semantic, Keel Migrate). Documentation built from the repository — facts are derived from code, ADRs and the decisions log.