Keboola App API

App (component) management for a vendor.

Business capability
Partner App Programme Management BC-4270.60

Operations 12

POST /vendors/{vendor}/apps Create app #
GET /vendors/{vendor}/apps List all vendor apps #
PATCH /vendors/{vendor}/apps/{app} Update app #
DELETE /vendors/{vendor}/apps/{app} Delete app #
GET /vendors/{vendor}/apps/{app} Get app detail #
POST /vendors/{vendor}/apps/{app}/deprecate Deprecate app #
POST /vendors/{vendor}/apps/{app}/icon Generate link for icon upload #
POST /vendors/{vendor}/apps/{app}/publish Request publishing #
GET /vendors/{vendor}/apps/{app}/versions List versions #
GET /vendors/{vendor}/apps/{app}/versions/{version} Get version detail #
POST /vendors/{vendor}/apps/{app}/versions/{version}/rollback Rollback version #
GET /vendors/{vendor}/apps/{app}/repository Get ECR repository credentials #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/keboola-app-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

keboola-app-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Keboola Developer Portal App API
  description: API for the Keboola Developer Portal — vendor, app (component) and user management for Keboola Connection. Most calls authenticate with a JWT token returned by `POST /auth/login`, passed verbatim in the `Authorization` header (valid for 1 hour; refresh with `GET /auth/token`).
  version: 1.0.0
servers:
- url: https://apps-api.keboola.com
  description: Production
security:
- bearerAuth: []
tags:
- name: App
  description: App (component) management for a vendor.
paths:
  /vendors/{vendor}/apps:
    post:
      tags:
      - App
      summary: Create app
      description: Create a new app under the vendor. After creation, the app id is prefixed by the vendor id (e.g. `keboola.ex-adwords`).
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              - name
              - type
              properties:
                id:
                  type: string
                  description: App identifier, 3–64 characters, lowercase letters, numbers and dashes only.
                  minLength: 3
                  maxLength: 64
                name:
                  type: string
                  maxLength: 128
                type:
                  type: string
                  enum:
                  - extractor
                  - application
                  - writer
                  - processor
                  - code-pattern
                  - other
                  - transformation
                  - data-app
                shortDescription:
                  type: string
                longDescription:
                  type: string
                repository:
                  type: object
                  additionalProperties: true
                  properties:
                    type:
                      type: string
                      enum:
                      - dockerhub
                      - quay
                      - builder
                      - ecr
                    uri:
                      type: string
                    tag:
                      type: string
            example:
              id: ex-adwords
              name: AdWords Reports
              shortDescription: Reads reports defined by awql queries
      responses:
        '201':
          description: App created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
      operationId: postVendorsByVendorApps
      x-operation-id-source: derived
    get:
      tags:
      - App
      summary: List all vendor apps
      description: List all apps for the vendor.
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          default: 0
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 1000
      responses:
        '200':
          description: List of apps
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/App'
      operationId: getVendorsByVendorApps
      x-operation-id-source: derived
  /vendors/{vendor}/apps/{app}:
    patch:
      tags:
      - App
      summary: Update app
      description: Update app details.
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      - name: app
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              properties:
                name:
                  type: string
                  maxLength: 128
                type:
                  type: string
                  enum:
                  - extractor
                  - application
                  - writer
                  - processor
                  - code-pattern
                  - other
                  - transformation
                  - data-app
                shortDescription:
                  type: string
                longDescription:
                  type: string
                repository:
                  type: object
                  additionalProperties: true
      responses:
        '200':
          description: App updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
      operationId: patchVendorsByVendorAppsByApp
      x-operation-id-source: derived
    delete:
      tags:
      - App
      summary: Delete app
      description: Delete an app.
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      - name: app
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: App deleted
      operationId: deleteVendorsByVendorAppsByApp
      x-operation-id-source: derived
    get:
      tags:
      - App
      summary: Get app detail
      description: Get full detail of an app.
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      - name: app
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: App detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
      operationId: getVendorsByVendorAppsByApp
      x-operation-id-source: derived
  /vendors/{vendor}/apps/{app}/deprecate:
    post:
      tags:
      - App
      summary: Deprecate app
      description: Sets `isDeprecated` flag to `true` and `isPublic` to `false`. The app is hidden from the list of new extractors/writers in the UI and a deprecation warning is shown within existing configurations.
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      - name: app
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                expiredOn:
                  type: string
                  format: date
                  description: Date when the app is expected to be shut down (YYYY-MM-DD).
                replacementApp:
                  type: string
                  maxLength: 128
                  description: ID of the app expected to replace this one.
            example:
              expiredOn: '2017-12-12'
      responses:
        '200':
          description: App deprecated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
      operationId: postVendorsByVendorAppsByAppDeprecate
      x-operation-id-source: derived
  /vendors/{vendor}/apps/{app}/icon:
    post:
      tags:
      - App
      summary: Generate link for icon upload
      description: Generates a pre-signed S3 URL for icon upload. The icon should be 128x128px PNG (will be resized if not).
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      - name: app
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Pre-signed upload link
          content:
            application/json:
              schema:
                type: object
                properties:
                  link:
                    type: string
                    format: uri
                  expiresIn:
                    type: string
      operationId: postVendorsByVendorAppsByAppIcon
      x-operation-id-source: derived
  /vendors/{vendor}/apps/{app}/publish:
    post:
      tags:
      - App
      summary: Request publishing
      description: Request for publishing the app to public listing. The component will undergo manual review before being approved.
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      - name: app
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Publishing requested
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/App'
      operationId: postVendorsByVendorAppsByAppPublish
      x-operation-id-source: derived
  /vendors/{vendor}/apps/{app}/versions:
    get:
      tags:
      - App
      summary: List versions
      description: List all versions of an app.
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      - name: app
        in: path
        required: true
        schema:
          type: string
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          default: 0
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 1000
      responses:
        '200':
          description: List of versions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Version'
      operationId: getVendorsByVendorAppsByAppVersions
      x-operation-id-source: derived
  /vendors/{vendor}/apps/{app}/versions/{version}:
    get:
      tags:
      - App
      summary: Get version detail
      description: Get a specific version of an app.
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      - name: app
        in: path
        required: true
        schema:
          type: string
      - name: version
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Version detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Version'
      operationId: getVendorsByVendorAppsByAppVersionsByVersion
      x-operation-id-source: derived
  /vendors/{vendor}/apps/{app}/versions/{version}/rollback:
    post:
      tags:
      - App
      summary: Rollback version
      description: Takes settings from the chosen version and creates a new version with those settings.
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      - name: app
        in: path
        required: true
        schema:
          type: string
      - name: version
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Rolled back to version
      operationId: postVendorsByVendorAppsByAppVersionsByVersionRollback
      x-operation-id-source: derived
  /vendors/{vendor}/apps/{app}/repository:
    get:
      tags:
      - App
      summary: Get ECR repository credentials
      description: Returns credentials for `docker` commands valid for 12 hours. Initiates the ECR repository if it does not exist.
      parameters:
      - name: vendor
        in: path
        required: true
        schema:
          type: string
      - name: app
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ECR repository credentials
          content:
            application/json:
              schema:
                type: object
                properties:
                  registry:
                    type: string
                  repository:
                    type: string
                  credentials:
                    type: object
                    properties:
                      username:
                        type: string
                      password:
                        type: string
      operationId: getVendorsByVendorAppsByAppRepository
      x-operation-id-source: derived
components:
  schemas:
    Version:
      type: object
      additionalProperties: true
      properties:
        version:
          type: integer
        createdBy:
          type: string
        createdOn:
          type: string
          format: date-time
    App:
      type: object
      additionalProperties: true
      properties:
        id:
          type: string
        vendor:
          type: string
        name:
          type: string
        type:
          type: string
          enum:
          - extractor
          - application
          - writer
          - processor
          - code-pattern
          - other
          - transformation
          - data-app
        shortDescription:
          type: string
        longDescription:
          type: string
        version:
          type: integer
        isPublic:
          type: boolean
        isApproved:
          type: boolean
        repository:
          type: object
          additionalProperties: true
          properties:
            type:
              type: string
            name:
              type: string
            uri:
              type: string
            tag:
              type: string
  securitySchemes:
    bearerAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'JWT token from `POST /auth/login`, passed verbatim (no "Bearer " prefix). Admin endpoints require a token belonging to an administrator.

        '