Skip to content

HTTP API / Exports

Exports API ​

11 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}/git-connectionThe workspace's Git repository for exports (404 when none). The token is never returned.
PUT/api/v1/workspaces/{workspaceId}/git-connectionConnect (or change) the workspace's Git repository. Workspace admins; the token is write-only.
DELETE/api/v1/workspaces/{workspaceId}/git-connectionDisconnect the repository; the token is deleted from the secret store.
POST/api/v1/workspaces/{workspaceId}/git-connection:testCheck that the token can read the repository and push to it. Nothing is written.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/export-settingsTargets exported and pushed to Git on every release, and whether the workspace has a Git connection.
PUT/api/v1/workspaces/{workspaceId}/models/{modelId}/export-settingsSet the targets pushed to Git on every release (needs a Git connection; ApproveChanges).
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/exportsExport history of a model (optionally one release), newest first, with each export's unsupported-features report.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/exports/{exportId}One export with its report and Git delivery.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/exports/{exportId}/archiveThe export's files as a zip (one root folder named {model}-{version}-{target}).
POST/api/v1/workspaces/{workspaceId}/models/{modelId}/releases/{releaseId}/exportsExport a release to a target (history + audit). Download needs ReadCatalog; Git (branch + pull request) needs EditModels and records a failed push as status Failed.
GET/api/v1/workspaces/{workspaceId}/models/{modelId}/releases/{releaseId}/exports/{target}/previewWhat exporting a release to a target produces: files and the unsupported-features report. Nothing is recorded.

GetGitConnection ​

http
GET /api/v1/workspaces/{workspaceId}/git-connection

The workspace's Git repository for exports (404 when none). The token is never returned.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
StatusDescriptionBody
200OKGitConnectionDto

Response 200: GitConnectionDto

FieldTypeNotes
createdAtdate-time
defaultBranchstring
hoststring
iduuid
pathPrefixstring
providerGitProviderOne of GitHub, GitLab, AzureRepos
pushSupportedboolean
repositoryUrlstring
tokenConfiguredboolean
updatedAtdate-time?

SaveGitConnection ​

http
PUT /api/v1/workspaces/{workspaceId}/git-connection

Connect (or change) the workspace's Git repository. Workspace admins; the token is write-only.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes

Request body (application/json): SaveGitConnectionRequest

FieldTypeNotes
defaultBranchstring?
pathPrefixstring?Folder that receives exports ({prefix}/{target}/…); empty for the repository root.
providerGitProviderOne of GitHub, GitLab, AzureRepos
repositoryUrlstringThe repository's web URL, e.g. https://github.com/acme/analytics.
tokenstring?A personal access token with contents and pull request write access. Write-only: required to create, omit to keep the current one; stored in the secret store, never returned or logged.
StatusDescriptionBody
200OKGitConnectionDto

Response 200: GitConnectionDto

FieldTypeNotes
createdAtdate-time
defaultBranchstring
hoststring
iduuid
pathPrefixstring
providerGitProviderOne of GitHub, GitLab, AzureRepos
pushSupportedboolean
repositoryUrlstring
tokenConfiguredboolean
updatedAtdate-time?

DeleteGitConnection ​

http
DELETE /api/v1/workspaces/{workspaceId}/git-connection

Disconnect the repository; the token is deleted from the secret store.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
StatusDescriptionBody
204No Content—

TestGitConnection ​

http
POST /api/v1/workspaces/{workspaceId}/git-connection:test

Check that the token can read the repository and push to it. Nothing is written.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
StatusDescriptionBody
200OKGitConnectionTestDto

Response 200: GitConnectionTestDto

FieldTypeNotes
messagestring
okboolean

GetExportSettings ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/export-settings

Targets exported and pushed to Git on every release, and whether the workspace has a Git connection.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
StatusDescriptionBody
200OKExportSettingsDto

Response 200: ExportSettingsDto

FieldTypeNotes
autoExportTargetsstring[]
gitConnectedboolean
modelIduuid
targetsstring[]

UpdateExportSettings ​

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

Set the targets pushed to Git on every release (needs a Git connection; ApproveChanges).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes

Request body (application/json): UpdateExportSettingsRequest

FieldTypeNotes
autoExportTargetsstring[]Targets exported and pushed to Git on every release (empty: off).
StatusDescriptionBody
204No Content—

ListExports ​

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

Export history of a model (optionally one release), newest first, with each export's unsupported-features report.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
releaseIdqueryuuidno
limitqueryint32no
StatusDescriptionBody
200OKExportDto[]

GetExport ​

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

One export with its report and Git delivery.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
exportIdpathuuidyes
StatusDescriptionBody
200OKExportDto

Response 200: ExportDto

FieldTypeNotes
approximatedint32
branchstring?
commitShastring?
contentHashstring
deliveryExportDeliveryOne of Download, Git
downloadUrlstring
errorstring?
exportedAtdate-time
exportedBystring
filesint32
iduuid
issuesExportIssueDto[]
modelIduuid
pullRequestNumberint32?
pullRequestUrlstring?
releaseIduuid
skippedint32
statusExportStatusOne of Succeeded, Failed
targetstring
versionstring

DownloadExport ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/exports/{exportId}/archive

The export's files as a zip (one root folder named {model}-{version}-{target}).

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
exportIdpathuuidyes
StatusDescriptionBody
200OKbyte

ExportRelease ​

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

Export a release to a target (history + audit). Download needs ReadCatalog; Git (branch + pull request) needs EditModels and records a failed push as status Failed.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
releaseIdpathuuidyes

Request body (application/json): ExportReleaseRequest

FieldTypeNotes
deliveryExportDelivery?Download (default) or Git (branch + pull request in the workspace's repository).
targetstringdbt, cube, looker, powerbi or osi.
StatusDescriptionBody
201CreatedExportDto

Response 201: ExportDto

FieldTypeNotes
approximatedint32
branchstring?
commitShastring?
contentHashstring
deliveryExportDeliveryOne of Download, Git
downloadUrlstring
errorstring?
exportedAtdate-time
exportedBystring
filesint32
iduuid
issuesExportIssueDto[]
modelIduuid
pullRequestNumberint32?
pullRequestUrlstring?
releaseIduuid
skippedint32
statusExportStatusOne of Succeeded, Failed
targetstring
versionstring

PreviewExport ​

http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/releases/{releaseId}/exports/{target}/preview

What exporting a release to a target produces: files and the unsupported-features report. Nothing is recorded.

ParameterInTypeRequiredNotes
workspaceIdpathuuidyes
modelIdpathuuidyes
releaseIdpathuuidyes
targetpathstringyes
StatusDescriptionBody
200OKExportPreviewDto

Response 200: ExportPreviewDto

FieldTypeNotes
approximatedint32
entitiesint32
filesstring[]
issuesExportIssueDto[]
metricsint32
releaseIduuid
skippedint32
targetstring
versionstring

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.