Keboola Sandboxes API

The Sandboxes API from Keboola — 2 operation(s) for sandboxes.

OpenAPI Specification

keboola-sandboxes-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: AI Service Actions Sandboxes API
  version: 1.0.0
  contact:
    email: devel@keboola.com
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
tags:
- name: Sandboxes
paths:
  /sandboxes:
    post:
      summary: Create sandbox
      operationId: createSandbox
      tags:
      - Sandboxes
      description: 'This endpoint is intended to create Python/R Sandboxes.

        '
      security:
      - storageApiToken: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - componentId
              - configurationId
              - type
              - host
              additionalProperties: true
              properties:
                componentId:
                  type: string
                  description: Keboola component ID (e.g. keboola.sandboxes)
                configurationId:
                  type: string
                  description: Keboola configuration ID
                configurationVersion:
                  type: string
                  description: 'Configuration version to use. If omitted, the latest version is resolved automatically.

                    '
                type:
                  type: string
                  enum:
                  - python
                  - r
                  - snowflake
                  - bigquery
                  - streamlit
                  - python-js
                  description: Sandbox type
                physicalId:
                  type: string
                  description: Physical identifier of the underlying resource (e.g. Snowflake schema name)
                host:
                  type: string
                  description: Hostname of the underlying resource
                size:
                  type: string
                  enum:
                  - micro
                  - tiny
                  - small
                  - medium
                  - large
                  nullable: true
                branchId:
                  type: string
                  nullable: true
                user:
                  type: string
                  nullable: true
                password:
                  type: string
                  nullable: true
                url:
                  type: string
                  nullable: true
                active:
                  type: boolean
                shared:
                  type: boolean
                imageVersion:
                  type: string
                  nullable: true
                packages:
                  type: array
                  deprecated: true
                  items:
                    type: string
                autoSuspendAfterSeconds:
                  type: integer
                  nullable: true
      responses:
        '201':
          description: Sandbox created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '422':
          description: Unprocessable Entity
  /sandboxes/{appId}:
    get:
      summary: Get sandbox
      operationId: getSandbox
      tags:
      - Sandboxes
      description: 'This endpoint is intended to get details for Python/R Sandboxes.

        '
      security:
      - storageApiToken: []
      parameters:
      - in: path
        name: appId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Sandbox not found
    patch:
      summary: Update sandbox
      operationId: patchSandbox
      tags:
      - Sandboxes
      description: 'This endpoint is intended to update Python/R Sandboxes.

        '
      security:
      - storageApiToken: []
      parameters:
      - in: path
        name: appId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - configurationVersion
              additionalProperties: true
              properties:
                configurationVersion:
                  type: string
                active:
                  type: boolean
                  nullable: true
                url:
                  type: string
                  nullable: true
                expirationAfterHours:
                  type: integer
                  nullable: true
                  minimum: 0
                autoSuspendAfterSeconds:
                  type: integer
                  nullable: true
                  minimum: 0
                password:
                  type: string
                  nullable: true
                persistentStorage:
                  type: object
                  nullable: true
                  description: Persistent volume claim data; populated by the sandboxes component after PVC provisioning.
                  properties:
                    pvcName:
                      type: string
                      nullable: true
                      description: Name of the PVC in Kubernetes (e.g. "sandbox-123").
                    k8sManifest:
                      type: string
                      nullable: true
                      description: Serialized YAML of the PVC Kubernetes manifest.
                    isEnabled:
                      type: boolean
                      description: Whether persistent storage is enabled for this sandbox.
                    ready:
                      type: boolean
                      nullable: true
                      description: Whether the project-level persistent storage is ready.
                    k8sStorageClassName:
                      type: string
                      nullable: true
                      description: Kubernetes StorageClass name for the project's persistent storage.
                sizeParameters:
                  type: object
                  nullable: true
                  description: Size parameters for the sandbox; used to store the PVC storage size.
                  properties:
                    storageSize_GB:
                      type: integer
                      nullable: true
                      description: PVC storage size in GB.
      responses:
        '200':
          description: Sandbox updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Sandbox not found
        '422':
          description: Unprocessable Entity
    delete:
      summary: Delete sandbox
      operationId: deleteSandbox
      tags:
      - Sandboxes
      description: 'This endpoint is intended to delete Python/R Sandboxes.

        '
      security:
      - storageApiToken: []
      parameters:
      - in: path
        name: appId
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Sandbox deleted successfully
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Sandbox not found
components:
  schemas:
    SandboxResponse:
      type: object
      description: 'Response schema for sandbox endpoints (GET, POST, PATCH).

        '
      properties:
        id:
          type: string
        projectId:
          type: string
        tokenId:
          type: string
          deprecated: true
          description: Always empty string
        branchId:
          type: string
          nullable: true
        configurationId:
          type: string
        physicalId:
          type: string
          deprecated: true
          description: Always empty string
        type:
          type: string
        active:
          type: boolean
          description: Whether the sandbox is currently running.
        createdTimestamp:
          type: string
          format: date-time
        startTimestamp:
          type: string
          format: date-time
        updatedTimestamp:
          type: string
          format: date-time
        persistentStorage:
          type: object
          properties:
            pvcName:
              type: string
              nullable: true
            k8sManifest:
              type: string
              nullable: true
            isEnabled:
              type: boolean
              description: Whether persistent storage is enabled for this sandbox.
            ready:
              type: boolean
              nullable: true
              description: Whether the project-level persistent storage is ready.
            k8sStorageClassName:
              type: string
              nullable: true
              description: Kubernetes StorageClass name for the project's persistent storage.
        shared:
          type: boolean
        componentId:
          type: string
        configurationVersion:
          type: string
        size:
          type: string
          nullable: true
        lastAutosaveTimestamp:
          type: string
          nullable: true
          format: date-time
          deprecated: true
          description: Always null
        expirationTimestamp:
          type: string
          nullable: true
          format: date-time
          deprecated: true
          description: Deprecated, always null
        autoSuspendAfterSeconds:
          type: integer
          description: Auto-suspend timeout in seconds (defaults to 3600)
        expirationAfterHours:
          type: integer
          deprecated: true
          description: Deprecated, use autoSuspendAfterSeconds
        user:
          type: string
          nullable: true
          deprecated: true
          description: Always null
        url:
          type: string
          nullable: true
        password:
          type: string
          nullable: true
        autosaveTokenId:
          type: string
          nullable: true
          deprecated: true
          description: Always null
        host:
          type: string
          nullable: true
          deprecated: true
          description: Deprecated, always null
        imageVersion:
          type: string
          nullable: true
        packages:
          type: array
          nullable: true
          items:
            type: string
        sizeParameters:
          nullable: true
          deprecated: true
          description: Deprecated, always null
        stagingWorkspaceId:
          nullable: true
          deprecated: true
          description: Deprecated, always null
        stagingWorkspaceType:
          nullable: true
          deprecated: true
          description: Deprecated, always null
        workspaceDetails:
          nullable: true
          deprecated: true
          description: Deprecated, always null
        databricks:
          nullable: true
          deprecated: true
          description: Deprecated, always null
        credentials:
          nullable: true
          deprecated: true
          description: Deprecated, always null
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-StorageApi-Token