Keboola Deleted Projects API
Inspect and purge soft-deleted projects.
Inspect and purge soft-deleted projects.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/keboola-deleted-projects-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Keboola Connection Management Deleted Projects API
description: 'The Keboola Connection Management API covers all tasks required for managing
projects, plus super-admin features for controlling and monitoring Keboola Connection.
## Projects management
* Create, modify and delete maintainers, organizations and projects
* Move projects between organizations
* Define project limits
* Provision storage backends
* Access project management activity log
## Projects monitoring
* Monitoring of projects across organizations and maintainers
## Super user control and monitoring
* UI release and deployment
* Components management
* Final project delete
* Workers start/shutdown, etc.
## Authentication
The API authenticates with a personal access token sent in the `X-KBC-ManageApiToken`
header. Tokens can be created in
[Account Settings](https://connection.keboola.com/admin/account/change-password)
in Keboola Connection. A token is tied to an administrator and inherits that
administrator''s permissions; when the administrator is disabled or deleted, all
their tokens become invalid.
```
curl -H "X-KBC-ManageApiToken: USER_TOKEN" https://connection.keboola.com/manage/tokens/verify
```
## Token types
| Type | Tied to a user | Token string visible only on create | Description |
| ----- | -------------- | ----------------------------------- | ----------- |
| user | Yes | Yes | Full access to maintainers, organizations and projects the user can see. |
| super | No | Yes | KBC management. Scopes such as `super_ui_deploy`, `super_monitoring` etc. can be limited per-token. |
Legacy Apiary reference: see the
[Manage API blueprint](https://github.com/keboola/connection/blob/master/Package/ManageApiPhpClient/apiary.apib)
for the historical document this OpenAPI spec is migrating from.
'
version: '1.0'
servers:
- url: https://connection.keboola.com
description: AWS US East
- url: https://connection.eu-central-1.keboola.com
description: AWS EU Central
- url: https://connection.north-europe.azure.keboola.com
description: Azure North Europe
- url: https://connection.east-us-2.azure.keboola-testing.com
description: Azure Testing
security:
- StorageKey: []
- ManageKey: []
- BearerAuth: []
tags:
- name: Deleted Projects
description: Inspect and purge soft-deleted projects.
paths:
/manage/deleted-projects/{projectId}:
get:
tags:
- Deleted Projects
summary: Deleted project detail
description: 'Returns detailed information about a project scheduled for deletion.
This endpoint can also be accessed using application tokens with scope `deleted-projects:read` or user token with feature `can-manage-deleted-projects`.'
operationId: get_/manage/deleted-projects/{projectId}::DeletedProjectDetailAction
parameters:
- name: projectId
in: path
description: Identifier of the deleted project.
required: true
schema:
type: integer
pattern: '[1-9][0-9]*'
example: 101
responses:
'200':
description: Deleted project detail response.
content:
application/json:
schema:
$ref: '#/components/schemas/DeletedProjectResponse'
example:
id: 101
name: test project
type: production
region: eu-west-1
created: 2017-02-15T14:25:15+0100
expires: null
features: []
dataSizeBytes: 49152
rowsCount: 200
hasMysql: false
hasSynapse: false
hasExasol: false
hasTeradata: false
hasSnowflake: true
defaultBackend: snowflake
hasTryModeOn: '0'
limits: {}
metrics: {}
isDisabled: false
billedMonthlyPrice: null
dataRetentionTimeInDays: 1
isPurged: false
isDeleted: true
deletedTime: 2018-02-11T14:25:15+0100
purgedTime: null
isBYODB: false
'400':
description: Returned when the project is not deleted or was permanently removed.
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have permission to view the deleted project.
'404':
description: Returned when the project does not exist.
delete:
tags:
- Deleted Projects
summary: Cancel project deletion
description: 'Cancelling project deletion is allowed only for a super admin or user with feature `can-manage-deleted-projects`.
If the project has set expiration, the expiration is reset on the project renewal.
You can also specify new expiration by `expirationDays` parameter.'
operationId: delete_/manage/deleted-projects/{projectId}::ProjectDeletionCancelAction
parameters:
- name: projectId
in: path
description: Identifier of the deleted project.
required: true
schema:
type: integer
pattern: '[1-9][0-9]*'
example: 101
- name: expirationDays
in: query
description: Project expiration in days.
required: false
schema:
type: integer
example: 30
responses:
'204':
description: Deletion canceled successfully.
'400':
description: Returned when the project is not deleted or was permanently removed.
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have permission to cancel project deletion.
'404':
description: Returned when the project does not exist.
/manage/deleted-projects:
get:
tags:
- Deleted Projects
summary: List deleted projects
description: 'Listing deleted projects is allowed only for a super admin or user with feature `can-manage-deleted-projects`.
#### Projects filtering
Projects can be filtered by various filters:
* *organizationId* - organization ID
* *name* - name of the project
#### Projects pagination
* *limit* - number of returned projects; default value: 100
* *offset* - pagination offset'
operationId: get_/manage/deleted-projects::DeletedProjectsListAction
parameters:
- name: limit
in: query
description: 'Number of returned projects. Default value: 100.'
required: false
schema:
type: integer
example: 100
- name: offset
in: query
description: Pagination offset.
required: false
schema:
type: integer
example: 0
- name: organizationId
in: query
description: Filter projects by organization identifier.
required: false
schema:
type: integer
example: 1
- name: name
in: query
description: Filter projects by name.
required: false
schema:
type: string
example: test project
responses:
'200':
description: Deleted projects list response.
content:
application/json:
schema:
$ref: '#/components/schemas/DeletedProjectsListResponse'
example:
- id: 101
name: test project
type: production
region: eu-west-1
created: 2017-02-15T14:25:15+0100
expires: null
features: []
dataSizeBytes: 49152
rowsCount: 200
hasMysql: false
hasSnowflake: true
hasSynapse: false
hasTeradata: false
hasExasol: false
defaultBackend: snowflake
hasTryModeOn: '0'
limits: {}
metrics: {}
isDisabled: false
billedMonthlyPrice: null
dataRetentionTimeInDays: 7
isBYODB: false
isPurged: false
isDeleted: true
deletedTime: 2018-02-11T14:25:15+0100
purgedTime: null
organization:
id: 1
name: Keboola Tests
created: ''
allowAutoJoin: true
- id: 104
name: another test project
type: production
region: eu-west-1
created: 2017-02-15T14:25:15+0100
expires: null
features: []
dataSizeBytes: 49152
rowsCount: 200
hasMysql: false
hasSnowflake: true
hasSynapse: false
hasTeradata: false
hasExasol: false
defaultBackend: snowflake
hasTryModeOn: '0'
limits: {}
metrics: {}
isDisabled: false
billedMonthlyPrice: null
dataRetentionTimeInDays: 7
isBYODB: false
isPurged: false
isDeleted: true
deletedTime: 2018-02-11T14:25:15+0100
purgedTime: null
organization:
id: 1
name: Keboola Tests
created: ''
allowAutoJoin: true
'400':
description: Returned when the supplied organization is not found.
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have permission to list deleted projects.
/manage/deleted-projects/{projectId}/purge:
post:
tags:
- Deleted Projects
summary: Purge deleted project
description: Enqueues the command that fully deletes a project and returns its execution ID for monitoring.
operationId: post_/manage/deleted-projects/{projectId}/purge::ProjectPurgeAction
parameters:
- name: projectId
in: path
description: Identifier of the deleted project to purge.
required: true
schema:
type: integer
pattern: '[1-9][0-9]*'
example: 101
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectPurgeRequest'
example:
ignoreBackendErrors: false
responses:
'200':
description: Identifier of the enqueued purge command.
content:
application/json:
schema:
$ref: '#/components/schemas/EnqueueCommandResponse'
example:
commandExecutionId: 123-abcd
'400':
description: Returned when the project is not deleted.
'401':
description: Returned when the Manage token is missing or invalid.
'403':
description: Returned when the token does not have permission to purge deleted projects.
'404':
description: Returned when the project does not exist.
components:
schemas:
ProjectPurgeRequest:
properties:
ignoreBackendErrors:
description: Ignore errors when purging data from backend storage.
type: boolean
default: false
type: object
EnqueueCommandResponse:
required:
- commandExecutionId
properties:
commandExecutionId:
description: Identifier of the enqueued command execution; this ID is appended to all logs produced by the command.
type: string
example: 123-abcd
type: object
DeletedProjectsListResponse:
type: array
items:
$ref: '#/components/schemas/DeletedProjectResponse'
DeletedProjectResponse:
required:
- id
- name
- type
- region
- features
- dataSizeBytes
- rowsCount
- hasMysql
- hasSynapse
- hasSnowflake
- hasExasol
- hasTeradata
- hasBigquery
- defaultBackend
- hasTryModeOn
- limits
- metrics
- isDisabled
- dataRetentionTimeInDays
- isBYODB
- assignedBackends
- isPurged
- isDeleted
- deletedTime
properties:
id:
description: Project identifier.
type: integer
name:
description: Project name.
type: string
type:
description: Project type.
type: string
region:
description: Project region.
type: string
created:
description: Project creation time.
type:
- string
- 'null'
format: date-time
expires:
description: Project expiration time.
type:
- string
- 'null'
format: date-time
features:
description: Enabled features.
type: array
items:
type: string
dataSizeBytes:
description: Total data size.
type: integer
rowsCount:
description: Total rows count.
type: integer
hasMysql:
type: boolean
hasSynapse:
type: boolean
hasSnowflake:
type: boolean
hasExasol:
type: boolean
hasTeradata:
type: boolean
hasBigquery:
type: boolean
defaultBackend:
type: string
hasTryModeOn:
type: string
limits:
type: object
additionalProperties:
type: mixed
metrics:
type: object
additionalProperties:
type: mixed
isDisabled:
type: boolean
billedMonthlyPrice:
type:
- integer
- 'null'
dataRetentionTimeInDays:
type: integer
isBYODB:
type: boolean
assignedBackends:
type: array
items:
type: string
fileStorageProvider:
type:
- string
- 'null'
payAsYouGo:
properties:
purchasedCredits:
type: number
format: float
type:
- object
- 'null'
disabled:
properties:
reason:
type: string
estimatedEndTime:
type:
- string
- 'null'
format: date-time
type:
- object
- 'null'
isPurged:
type: boolean
isDeleted:
type: boolean
deletedTime:
type: string
format: date-time
purgedTime:
type:
- string
- 'null'
format: date-time
type: object
securitySchemes:
StorageKey:
type: apiKey
name: X-StorageApi-Token
in: header
ManageKey:
type: apiKey
name: X-KBC-ManageApiToken
in: header
BearerAuth:
type: http
bearerFormat: Access Token (kbc_at_...)
scheme: bearer