Opkey Generic API

The Generic API from Opkey — 30 operation(s) for generic.

OpenAPI Specification

opkey-generic-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: pCloudy Device Cloud Generic API
  version: v2
  summary: Public REST API for the pCloudy real-device cloud, an Opkey product.
  description: 'The pCloudy REST API is the machine-readable surface of the pCloudy real-device testing cloud operated by Opkey (Smart Software Testing Solutions Inc.). It covers authentication, device booking and session lifecycle, app upload/install/control, device interaction, performance capture, session media and logs, network simulation, APK instrumentation, app resigning, App Center integration, and Appium/XCTest automation orchestration. All methods default to POST except authentication, and requests set Content-Type: application/json.


    PROVENANCE: this document was generated by API Evangelist from the operations, parameters and examples published in Opkey''s own public pCloudy API Reference at https://content.pcloudy.com/apidocs/ . Opkey does not publish an OpenAPI document; every path, method, parameter and description here is transcribed from that published reference and nothing has been invented. It is a third-party transcription, not a provider artifact.'
  contact:
    name: Opkey
    url: https://www.opkey.com/
  x-generated-by: API Evangelist enrichment pipeline
  x-source: https://content.pcloudy.com/apidocs/
servers:
- url: https://{cloud}.pcloudy.com
  description: pCloudy cloud instance
  variables:
    cloud:
      default: device
      enum:
      - device
      - demo
      - aus
      description: pCloudy cloud host prefix; the docs refer to this as <Cloud URL>.
security:
- accessToken: []
tags:
- name: Generic
paths:
  /api/v2/generic/kill-app:
    post:
      operationId: killApp
      summary: Kill App
      tags:
      - Generic
      description: Force-stops (kills) the specified application on the reserved device, immediately terminating its process and any background activity. Use it to reset an app to a clean state between test steps or to recover from a hung/unresponsive app without uninstalling it. The app stays installed and can be relaunched afterwards.
      parameters:
      - name: token
        in: header
        required: true
        description: API access token (from /api/access).
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - rid
              - packageName
              properties:
                rid:
                  type: integer
                  description: Device reservation ID (returned when the device is booked).
                packageName:
                  type: string
                  description: Android application package name.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                traceId: 0C7GnIt4TrS9xgS70lrqr
                requestId: O8WLCAFzLWW1HoBSKQFcU
                statusCode: 200
                status: success
                message: App killed successfully
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/v2/generic/uninstall-app:
    post:
      operationId: uninstallApp
      summary: Uninstall App(V2)
      tags:
      - Generic
      description: Uninstalls the specified application from the reserved device, removing the app binary together with its locally stored data and cache. Typically used during teardown or before installing a fresh build to guarantee a clean install. The app must be reinstalled before it can be used again.
      parameters:
      - name: token
        in: header
        required: true
        description: API access token (from /api/access).
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - rid
              - packageName
              properties:
                rid:
                  type: integer
                  description: Device reservation ID (returned when the device is booked).
                packageName:
                  type: string
                  description: Android application package name.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                traceId: oVaUsQXEa91HNWMNIaEOo
                requestId: Int9rwc7JSyWwUBA4hM8h
                statusCode: 200
                status: success
                message: App uninstalled successfully
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/v2/generic/geo-ip-location:
    post:
      operationId: geoIpLocation
      summary: Geo IP Location - Connect
      tags:
      - Generic
      description: Routes the reserved device's traffic through a selected Geo-IP location so the device appears to browse from another country/region. Used to validate geo-targeted behaviour such as localized content, currency, language, and geo-restrictions. Pair with the disconnect call to restore the default route.
      parameters:
      - name: token
        in: header
        required: true
        description: API access token (from /api/access).
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - rid
              - countryName
              - action
              properties:
                rid:
                  type: integer
                  description: Device reservation ID (returned when the device is booked).
                countryName:
                  type: string
                  description: Target country for Geo-IP simulation.
                action:
                  type: string
                  description: '"connect" or "disconnect".'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                traceId: moNs111FHexL1yJOGne
                requestId: CI17h3RIHl5zMP7npE6
                statusCode: 200
                status: success
                message: Geo Ip Location Changed Successfully
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/v2/generic/init-liveview:
    post:
      operationId: startStreamer
      summary: Start Streamer
      tags:
      - Generic
      description: Initializes the live-view video streamer for the reserved device, starting the real-time screen stream used to view and interact with the device remotely. Used at the start of an interactive session to begin streaming the device screen.
      parameters:
      - name: token
        in: header
        required: true
        description: API access token (from /api/access).
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - rid
              properties:
                rid:
                  type: integer
                  description: Device reservation ID (returned when the device is booked).
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                traceId: p6i8FFON1EaaSiRZ3te
                requestId: 3iKTFULPxb871bRmJE1
                statusCode: 200
                status: success
                message: started kickStartStreamer
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/v2/generic/set-location:
    post:
      operationId: setLocation
      summary: Set Mock GPS Location
      tags:
      - Generic
      description: Sets a mock GPS location on the device using the supplied latitude and longitude, overriding the real location. Used to test location-aware features such as maps, geofencing, and location-based content by placing the device at any coordinates.
      parameters:
      - name: token
        in: header
        required: true
        description: API access token (from /api/access).
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - rid
              - latitude
              - longitude
              properties:
                rid:
                  type: integer
                  description: Device reservation ID (returned when the device is booked).
                latitude:
                  type: number
                  description: GPS latitude of the mock location.
                longitude:
                  type: number
                  description: GPS longitude of the mock location.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                traceId: xCmEBrTYSnm1p0RFOVMT
                requestId: T700EF2wVlmFWwFNwX23
                statusCode: 200
                status: success
                message: Set location set successfully
                data:
                  isOk: true
                  statusCode: 200
                  data:
                    statusCode: 200
                    message: Location set successfully
                err: null
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/v2/generic/set-timezone:
    post:
      operationId: setTimezone
      summary: Set Time Zone (iOS)
      tags:
      - Generic
      description: Sets the device system timezone to the supplied value. Used to test time-zone-dependent behaviour such as schedules, timestamps, daylight-saving handling, and localized date/time formatting.
      parameters:
      - name: token
        in: header
        required: true
        description: API access token (from /api/access).
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - rid
              - timezone
              properties:
                rid:
                  type: integer
                  description: Device reservation ID (returned when the device is booked).
                timezone:
                  type: string
                  description: Timezone name (e.g., "Chennai").
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                traceId: QuuvW6Uk5Fu79ZExVMOX
                requestId: FA3GMyRn5G2qBaxBAC3P
                statusCode: 200
                status: success
                message: Set timezone successfully
                data:
                  isOk: true
                  statusCode: 200
                  data:
                    statusCode: 200
                    message: Timezone set successfully
                err: null
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/start_performance_data:
    post:
      operationId: startPerformance
      summary: Start Performance Data
      tags:
      - Generic
      description: This API helps to start the performance data of the app under testing. You will get battery, CPU, memory, internet and frame rendering data on Android device and for iOS you will get the CPU, memory and network packets under testing on that device. This data is stored in cloud drive.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - token
              - rid
              - pkg
              properties:
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                rid:
                  type: string
                  description: Reservation id (will get from book device api response)
                pkg:
                  type: string
                  description: App package name (will get from install and launch api response)
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/manual_access_files_list:
    post:
      operationId: performanceFileList
      summary: Performance Data File List
      tags:
      - Generic
      description: This API helps to get the performance data file names which are stored in cloud drive of a particular device. You will get battery, CPU, memory, internet and frame rendering data files.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - token
              - rid
              properties:
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                rid:
                  type: string
                  description: Reservation id (will get from book device api response)
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/download_manual_access_data:
    post:
      operationId: downloadPerformance
      summary: Download Performance Data
      tags:
      - Generic
      description: This api help to download the performance data file from cloud drive to your local system.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - token
              - rid
              - filename
              properties:
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                rid:
                  type: string
                  description: Reservation id (will get from book device api response)
                filename:
                  type: string
                  description: performance data file name (will get from performance data file list api response)
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/install_app:
    post:
      operationId: installLaunchApp
      summary: Install and Launch App
      tags:
      - Generic
      description: Install and launch API will install the app (apk/ipa) in the device and launch it on the device. App launch will work on Android devices, but on iOS devices the app will install but not launch.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - token
              - rid
              - filename
              - grant_all_permissions
              properties:
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                rid:
                  type: string
                  description: Reservation id (will get from book device api response)
                filename:
                  type: string
                  description: app name (Need to mention apk/ipa file name which is available in cloud drive)
                grant_all_permissions:
                  type: string
                  description: true/false (This is provide permissions for app). This is optional.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/pushFileToSwapBox:
    post:
      operationId: pushFile
      summary: Push File
      tags:
      - Generic
      description: This API pushes the file or apk from Cloud Drive to the device SwapBox. In Android device you can find SwapBox in Internal storage.
      parameters:
      - name: token
        in: header
        required: true
        description: Authtoken (this will get from authenticate response)
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - rid
              - pDriveFile
              properties:
                rid:
                  type: string
                  description: Reservation id (will get from book device api response)
                pDriveFile:
                  type: string
                  description: File name which you want to push.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/delete_file:
    post:
      operationId: deleteFileCloud
      summary: Delete File From Cloud
      tags:
      - Generic
      description: Using this REST API, you can delete a file from cloud drive.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - token
              - filename
              - dir
              - filter
              properties:
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                filename:
                  type: string
                  description: File name which you want to delete
                dir:
                  type: string
                  description: Directory name (data).
                filter:
                  type: string
                  description: File filter type (ALL).
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/devices:
    post:
      operationId: getDeviceList
      summary: Get Device List
      tags:
      - Generic
      description: This API helps to get the list of all available devices in pCloudy with all the relevant details (full_name, id, model, version, mobile number, dpi, etc.) about each device.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - token
              - duration
              - platform
              - available_now
              properties:
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                duration:
                  type: string
                  description: Duration in minutes (How many minutes you want to the device).
                platform:
                  type: string
                  description: Which platform devices (android or ios) you want to display.
                available_now:
                  type: string
                  description: true or false. True means display the available devices and false means display all devices (including busy and available).
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/book_device:
    post:
      operationId: bookDevice
      summary: Book Device
      tags:
      - Generic
      description: Book Device API books the device for your testing. For device booking you have to pass the authToken, how many minutes you want to book, and the device id. Every device has a different id.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - token
              - duration
              - id
              properties:
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                duration:
                  type: string
                  description: Duration in minutes (How many minutes you want to book the device).
                id:
                  type: string
                  description: Device id (will get from get devices api response).
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/release_device:
    post:
      operationId: releaseDeviceLegacy
      summary: Release Device
      tags:
      - Generic
      description: This api help you to release the device.
      parameters:
      - name: token
        in: header
        required: true
        description: Authtoken (this will get from authenticate response)
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - rid
              properties:
                rid:
                  type: string
                  description: Reservation id (will get from book device api response)
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/get_user_details:
    post:
      operationId: getUserDetails
      summary: Get User Details
      tags:
      - Generic
      description: Using this API, user will get all the account details like userId, email_id, username, account balance, etc.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - authToken
              properties:
                authToken:
                  type: string
                  description: Authtoken (this will get from authenticate response)
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/upload_file:
    post:
      operationId: uploadApp
      summary: Upload App
      tags:
      - Generic
      description: Using Upload API you can upload the apps to pCloudy cloud drive. Uploaded files/apps are available in MY App/Data section in pCloudy platform.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - file
              - source_type
              - token
              - filter
              properties:
                file:
                  type: string
                  description: Path of uploaded apk or ipa file
                source_type:
                  type: string
                  description: Mention raw type (raw)
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                filter:
                  type: string
                  description: You can filter the file like apk or ipa when uploading (all/apk/ipa)
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/drive:
    post:
      operationId: getAvailableApps
      summary: Get Available Apps
      tags:
      - Generic
      description: Get Available App API shows total files and apps that are uploaded in cloud drive.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - token
              - limit
              - filter
              properties:
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                limit:
                  type: string
                  description: How many files you want to display.
                filter:
                  type: string
                  description: It will filter the files and display based on filter option (all/apk/ipa).
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/download_file:
    post:
      operationId: downloadFileCloud
      summary: Download File From Cloud
      tags:
      - Generic
      description: Using this REST API, you can download any file from the cloud drive to your local system.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - token
              - filename
              - dir
              properties:
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                filename:
                  type: string
                  description: File name which you want to download
                dir:
                  type: string
                  description: Directory name (data).
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/get_devices_details:
    post:
      operationId: getSingleDevice
      summary: Get Single Device Details
      tags:
      - Generic
      description: This API helps to get single device details (full_name, id, model, version, mobile number, dpi, etc.).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - token
              - id
              - full_name
              - version
              - model
              - duration
              - platform
              - available_now
              properties:
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                id:
                  type: string
                  description: DeviceId (This will get from Get Device list api response)
                full_name:
                  type: string
                  description: Device Full Name (This will get from Get Device list api response)
                version:
                  type: string
                  description: Device version
                model:
                  type: string
                  description: Device Model (This will get from Get Device list api response)
                duration:
                  type: string
                  description: Duration in minutes (How many minutes you want to the device).
                platform:
                  type: string
                  description: Which platform devices (android or ios) you want to display.
                available_now:
                  type: string
                  description: true or false. True means display the available devices and false means display all devices (including busy and available).
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/get_device_url:
    post:
      operationId: getDevicePageUrl
      summary: Get Device Page URL
      tags:
      - Generic
      description: This will give you the URL using which you can open the booked device screen directly in the browser. This helps you to connect to the device directly by passing the authToken and rid.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - token
              - rid
              properties:
                token:
                  type: string
                  description: Authtoken (this will get from authenticate response)
                rid:
                  type: string
                  description: Reservation id (will get from book device api response).
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized - missing or invalid access token
      security:
      - accessToken: []
  /api/execute_adb:
    post:
      operationId: executeAdbLegacy
      summary: Execute ADB
      tags:
      - Generic
      description: This API helps to execute commands on the booked device.
      parameters:
      - name: token
        in: header
        required: true
        description: Authtoken (this will get from authenticate response)
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - rid
              - adbCommand
              properties:
                rid:
                  type: string
                  description: Reservation id (will get from book device api response)
                adbCommand:
                  type: string
                  description: adb command which you want to execute on device.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
              

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/opkey/refs/heads/main/openapi/opkey-generic-api-openapi.yml