Appearance
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.
| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/workspaces/{workspaceId}/git-connection | The workspace's Git repository for exports (404 when none). The token is never returned. |
| PUT | /api/v1/workspaces/{workspaceId}/git-connection | Connect (or change) the workspace's Git repository. Workspace admins; the token is write-only. |
| DELETE | /api/v1/workspaces/{workspaceId}/git-connection | Disconnect the repository; the token is deleted from the secret store. |
| POST | /api/v1/workspaces/{workspaceId}/git-connection:test | Check that the token can read the repository and push to it. Nothing is written. |
| 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. |
| PUT | /api/v1/workspaces/{workspaceId}/models/{modelId}/export-settings | Set the targets pushed to Git on every release (needs a Git connection; ApproveChanges). |
| 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. |
| 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}/archive | The export's files as a zip (one root folder named {model}-{version}-{target}). |
| 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. |
| 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. |
GetGitConnection
http
GET /api/v1/workspaces/{workspaceId}/git-connectionThe workspace's Git repository for exports (404 when none). The token is never returned.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
workspaceId | path | uuid | yes |
| Status | Description | Body |
|---|---|---|
| 200 | OK | GitConnectionDto |
Response 200: GitConnectionDto
| Field | Type | Notes |
|---|---|---|
createdAt | date-time | |
defaultBranch | string | |
host | string | |
id | uuid | |
pathPrefix | string | |
provider | GitProvider | One of GitHub, GitLab, AzureRepos |
pushSupported | boolean | |
repositoryUrl | string | |
tokenConfigured | boolean | |
updatedAt | date-time? |
SaveGitConnection
http
PUT /api/v1/workspaces/{workspaceId}/git-connectionConnect (or change) the workspace's Git repository. Workspace admins; the token is write-only.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
workspaceId | path | uuid | yes |
Request body (application/json): SaveGitConnectionRequest
| Field | Type | Notes |
|---|---|---|
defaultBranch | string? | |
pathPrefix | string? | Folder that receives exports ({prefix}/{target}/…); empty for the repository root. |
provider | GitProvider | One of GitHub, GitLab, AzureRepos |
repositoryUrl | string | The repository's web URL, e.g. https://github.com/acme/analytics. |
token | string? | 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. |
| Status | Description | Body |
|---|---|---|
| 200 | OK | GitConnectionDto |
Response 200: GitConnectionDto
| Field | Type | Notes |
|---|---|---|
createdAt | date-time | |
defaultBranch | string | |
host | string | |
id | uuid | |
pathPrefix | string | |
provider | GitProvider | One of GitHub, GitLab, AzureRepos |
pushSupported | boolean | |
repositoryUrl | string | |
tokenConfigured | boolean | |
updatedAt | date-time? |
DeleteGitConnection
http
DELETE /api/v1/workspaces/{workspaceId}/git-connectionDisconnect the repository; the token is deleted from the secret store.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
workspaceId | path | uuid | yes |
| Status | Description | Body |
|---|---|---|
| 204 | No Content | — |
TestGitConnection
http
POST /api/v1/workspaces/{workspaceId}/git-connection:testCheck that the token can read the repository and push to it. Nothing is written.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
workspaceId | path | uuid | yes |
| Status | Description | Body |
|---|---|---|
| 200 | OK | GitConnectionTestDto |
Response 200: GitConnectionTestDto
| Field | Type | Notes |
|---|---|---|
message | string | |
ok | boolean |
GetExportSettings
http
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.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
workspaceId | path | uuid | yes | |
modelId | path | uuid | yes |
| Status | Description | Body |
|---|---|---|
| 200 | OK | ExportSettingsDto |
Response 200: ExportSettingsDto
| Field | Type | Notes |
|---|---|---|
autoExportTargets | string[] | |
gitConnected | boolean | |
modelId | uuid | |
targets | string[] |
UpdateExportSettings
http
PUT /api/v1/workspaces/{workspaceId}/models/{modelId}/export-settingsSet the targets pushed to Git on every release (needs a Git connection; ApproveChanges).
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
workspaceId | path | uuid | yes | |
modelId | path | uuid | yes |
Request body (application/json): UpdateExportSettingsRequest
| Field | Type | Notes |
|---|---|---|
autoExportTargets | string[] | Targets exported and pushed to Git on every release (empty: off). |
| Status | Description | Body |
|---|---|---|
| 204 | No Content | — |
ListExports
http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/exportsExport history of a model (optionally one release), newest first, with each export's unsupported-features report.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
workspaceId | path | uuid | yes | |
modelId | path | uuid | yes | |
releaseId | query | uuid | no | |
limit | query | int32 | no |
| Status | Description | Body |
|---|---|---|
| 200 | OK | ExportDto[] |
GetExport
http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/exports/{exportId}One export with its report and Git delivery.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
workspaceId | path | uuid | yes | |
modelId | path | uuid | yes | |
exportId | path | uuid | yes |
| Status | Description | Body |
|---|---|---|
| 200 | OK | ExportDto |
Response 200: ExportDto
| Field | Type | Notes |
|---|---|---|
approximated | int32 | |
branch | string? | |
commitSha | string? | |
contentHash | string | |
delivery | ExportDelivery | One of Download, Git |
downloadUrl | string | |
error | string? | |
exportedAt | date-time | |
exportedBy | string | |
files | int32 | |
id | uuid | |
issues | ExportIssueDto[] | |
modelId | uuid | |
pullRequestNumber | int32? | |
pullRequestUrl | string? | |
releaseId | uuid | |
skipped | int32 | |
status | ExportStatus | One of Succeeded, Failed |
target | string | |
version | string |
DownloadExport
http
GET /api/v1/workspaces/{workspaceId}/models/{modelId}/exports/{exportId}/archiveThe export's files as a zip (one root folder named {model}-{version}-{target}).
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
workspaceId | path | uuid | yes | |
modelId | path | uuid | yes | |
exportId | path | uuid | yes |
| Status | Description | Body |
|---|---|---|
| 200 | OK | byte |
ExportRelease
http
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.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
workspaceId | path | uuid | yes | |
modelId | path | uuid | yes | |
releaseId | path | uuid | yes |
Request body (application/json): ExportReleaseRequest
| Field | Type | Notes |
|---|---|---|
delivery | ExportDelivery? | Download (default) or Git (branch + pull request in the workspace's repository). |
target | string | dbt, cube, looker, powerbi or osi. |
| Status | Description | Body |
|---|---|---|
| 201 | Created | ExportDto |
Response 201: ExportDto
| Field | Type | Notes |
|---|---|---|
approximated | int32 | |
branch | string? | |
commitSha | string? | |
contentHash | string | |
delivery | ExportDelivery | One of Download, Git |
downloadUrl | string | |
error | string? | |
exportedAt | date-time | |
exportedBy | string | |
files | int32 | |
id | uuid | |
issues | ExportIssueDto[] | |
modelId | uuid | |
pullRequestNumber | int32? | |
pullRequestUrl | string? | |
releaseId | uuid | |
skipped | int32 | |
status | ExportStatus | One of Succeeded, Failed |
target | string | |
version | string |
PreviewExport
http
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.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
workspaceId | path | uuid | yes | |
modelId | path | uuid | yes | |
releaseId | path | uuid | yes | |
target | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | OK | ExportPreviewDto |
Response 200: ExportPreviewDto
| Field | Type | Notes |
|---|---|---|
approximated | int32 | |
entities | int32 | |
files | string[] | |
issues | ExportIssueDto[] | |
metrics | int32 | |
releaseId | uuid | |
skipped | int32 | |
target | string | |
version | string |