Kobiton Apps API

The app repository of builds under test.

OpenAPI Specification

kobiton-apps-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Kobiton REST Apps API
  description: 'The Kobiton REST API programmatically operates the Kobiton mobile device cloud and app testing platform. It exposes the real device cloud (list and filter available iOS/Android devices), test sessions and their captured commands, the app repository (upload and manage app builds), data-driven testing data sets, scriptless (no-code) test runs via revisit plans, and organization member administration. Scripted automation runs against the separate Appium/WebDriver hub at https://api.kobiton.com/wd/hub and is not modeled here. All REST requests authenticate with HTTP Basic auth using a Kobiton username (or email) as the user and an API key as the password; the pair is base64-encoded in the Authorization header.

    Endpoints for Devices, Apps, Data Sets, Scriptless Automation (revisit plans), and Organization are grounded in Kobiton''s published API docs and official samples. Session sub-resources (get session, get session commands) are grounded in Kobiton''s get-session-data sample. Request and response schemas below are modeled from the documentation and sample payloads and should be reconciled against the live api.kobiton.com/docs reference; a newer v2 API also exists at https://api.kobiton.com/v2.'
  version: '1.0'
  contact:
    name: Kobiton
    url: https://kobiton.com
servers:
- url: https://api.kobiton.com/v1
  description: Kobiton REST API v1
security:
- basicAuth: []
tags:
- name: Apps
  description: The app repository of builds under test.
paths:
  /apps/uploadUrl:
    post:
      operationId: createAppUploadUrl
      tags:
      - Apps
      summary: Generate a pre-signed app upload URL
      description: Returns a pre-signed S3 URL to which the app binary is uploaded with an HTTP PUT before the app or version is created.
      responses:
        '200':
          description: A pre-signed upload URL and app path.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppUploadUrl'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /apps:
    get:
      operationId: listApps
      tags:
      - Apps
      summary: List applications
      description: Lists the applications in the app repository.
      responses:
        '200':
          description: A list of applications.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createApp
      tags:
      - Apps
      summary: Create an application or version
      description: Registers a new application or a new version of an existing application from a previously uploaded binary.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAppRequest'
      responses:
        '200':
          description: The created application or version.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: deleteApps
      tags:
      - Apps
      summary: Delete multiple applications
      description: Deletes multiple applications by ID.
      responses:
        '204':
          description: The applications were deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /apps/{appId}:
    get:
      operationId: getApp
      tags:
      - Apps
      summary: Get an application
      parameters:
      - $ref: '#/components/parameters/AppId'
      responses:
        '200':
          description: The application details.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: deleteApp
      tags:
      - Apps
      summary: Delete an application
      parameters:
      - $ref: '#/components/parameters/AppId'
      responses:
        '204':
          description: The application was deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /apps/{appId}/private:
    put:
      operationId: makeAppPrivate
      tags:
      - Apps
      summary: Make an application private
      parameters:
      - $ref: '#/components/parameters/AppId'
      responses:
        '200':
          description: The application visibility was updated to private.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /apps/{appId}/public:
    put:
      operationId: makeAppPublic
      tags:
      - Apps
      summary: Make an application public
      parameters:
      - $ref: '#/components/parameters/AppId'
      responses:
        '200':
          description: The application visibility was updated to public.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /apps/{appId}/team/assign:
    post:
      operationId: assignAppToTeams
      tags:
      - Apps
      summary: Assign an application to teams
      parameters:
      - $ref: '#/components/parameters/AppId'
      responses:
        '200':
          description: The application was assigned to the specified teams.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /app/versions/{versionId}:
    get:
      operationId: getAppVersion
      tags:
      - Apps
      summary: Get an application version
      parameters:
      - $ref: '#/components/parameters/VersionId'
      responses:
        '200':
          description: The application version details.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: deleteAppVersion
      tags:
      - Apps
      summary: Delete an application version
      parameters:
      - $ref: '#/components/parameters/VersionId'
      responses:
        '204':
          description: The version was deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /app/versions/{versionId}/tag/{name}:
    post:
      operationId: addAppVersionTag
      tags:
      - Apps
      summary: Assign a tag to an app version
      parameters:
      - $ref: '#/components/parameters/VersionId'
      - $ref: '#/components/parameters/TagName'
      responses:
        '200':
          description: The tag was assigned to the version.
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: removeAppVersionTag
      tags:
      - Apps
      summary: Remove a tag from an app version
      parameters:
      - $ref: '#/components/parameters/VersionId'
      - $ref: '#/components/parameters/TagName'
      responses:
        '204':
          description: The tag was removed from the version.
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    AppUploadUrl:
      type: object
      properties:
        appPath:
          type: string
        url:
          type: string
          format: uri
    CreateAppRequest:
      type: object
      properties:
        filename:
          type: string
        appPath:
          type: string
  parameters:
    AppId:
      name: appId
      in: path
      required: true
      schema:
        type: integer
      description: The application ID.
    VersionId:
      name: versionId
      in: path
      required: true
      schema:
        type: integer
      description: The application version ID.
    TagName:
      name: name
      in: path
      required: true
      schema:
        type: string
      description: The tag name.
  responses:
    Unauthorized:
      description: Authentication failed or was not provided.
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic authentication. Use your Kobiton username (or email) as the username and your Kobiton API key as the password. Create and manage API keys in the Kobiton portal under API Keys settings.