Skip to main content

ArborXR CLI

Project description

ArborXR CLI

This CLI tool provides commands for managing apps and files via the ArborXR API. The tool is organized into command groups: apps and files. Each group has several subcommands to perform specific operations through the command line.

Prerequisites

Before using the CLI tool, you must perform the following:

  • Python 3 installed on your system.
  • An API Token for authentication
    • Login to your ArborXR Account
    • Navigate to Settings > Access Tokens
    • Create an API Access Token for your organization
  • Setting the API token
    • The environment variable ABXR_API_TOKEN (or the alternative ARBORXR_ACCESS_TOKEN), or
    • The command line option --token.

Setup

ArborXR CLI is available through PyPI. If you have pip installed, you can get the latest version by installing via:

pip install abxrcli

Global Options

The CLI tool accepts the following global options:

-u, --url

-t, --token

  • Description: API Token for authentication
  • Default: Value of ABXR_API_TOKEN (or ARBORXR_ACCESS_TOKEN)

-f, --format

  • Description: Data output format
  • Choices: json or yaml
  • Default: yaml

-v, --version

  • Description: Show the CLI tool version and exit

-s, --silent

  • Description: Disable any terminal printing of progress bars for longer operations, like file uploads.

Command Groups

The CLI tool is divided into multiple groups including apps, app_bundles, files, and devices. Each group has its own set of subcommands.

Apps Commands

These commands manage app-related operations.

Subcommands

list
  • Usage: abxr-cli apps list
  • Description: List all available apps.
details
  • Usage: abxr-cli apps details app_id
  • Positional Argument:
    • app_id: The unique identifier of the app.
  • Description: Retrieve detailed information about a specific app.
versions
  • Usage: abxr-cli apps versions app_id
  • Positional Argument:
    • app_id: The unique identifier of the app.
  • Description: List all versions available for a specific app.
release_channels
  • Usage: abxr-cli apps release_channels app_id
  • Positional Argument:
    • app_id: The unique identifier of the app.
  • Description: List all release channels associated with a specific app.
release_channel_details
  • Usage: abxr-cli apps release_channel_details app_id [--release_channel_id RELEASE_CHANNEL_ID]
  • Positional Argument:
    • app_id: The unique identifier of the app.
  • Optional Argument:
    • --release_channel_id: The identifier for a specific release channel.
  • Description: Get details for a release channel of an app.
release_channel_set_version
  • Usage: abxr-cli apps release_channel_set_version app_id [--release_channel_id RELEASE_CHANNEL_ID] [--version_id VERSION_ID]
  • Positional Argument:
    • app_id: The unique identifier of the app.
  • Optional Arguments:
    • --release_channel_id: The identifier for the release channel.
    • --version_id: The version identifier to set for the channel.
  • Description: Assign a specific version to a release channel.
upload
  • Usage: abxr-cli apps upload app_id filename [--version VERSION] [--notes NOTES]
  • Positional Arguments:
    • app_id: The unique identifier of the app.
    • filename: Local path of the APK/ZIP (apk+obb) file to upload.
  • Optional Arguments:
    • -v, --version: Version number (note that the Uploaded APK itself can override this value).
    • -n, --notes: Release notes for the new version.
  • Description: Upload a new version of an app (APK/ZIP only). To upload an app bundle with associated files, use the app_bundles upload command.
share
  • Usage: abxr-cli apps share app_id --release_channel_id RELEASE_CHANNEL_ID --organization_slug ORGANIZATION_SLUG
  • Positional Argument:
    • app_id: The unique identifier of the app.
  • Required Options:
    • --release_channel_id: The release channel to be shared.
    • --organization_slug: The organization slug with which the app is to be shared.
  • Description: Share an app with a specific organization and release channel.
revoke
  • Usage: abxr-cli apps revoke app_id --release_channel_id RELEASE_CHANNEL_ID --organization_slug ORGANIZATION_SLUG
  • Positional Argument:
    • app_id: The unique identifier of the app.
  • Required Options:
    • --release_channel_id: The release channel from which to revoke sharing.
    • --organization_slug: The organization slug from which the app sharing should be revoked.
  • Description: Revoke sharing of an app from a specific organization and release channel.

App Bundles Commands

App bundles combine an app version with associated files that should be deployed together. These commands manage the creation, upload, and management of app bundles.

Folder Structure and Device Paths: The APK file and bundle folder are provided separately. Files in your bundle folder are automatically mapped to device paths under /sdcard/. The folder structure is preserved:

  • Files in the root folder → /sdcard/
  • Files in subfolders → /sdcard/{subfolder_path}/

You can optionally specify a custom base path using --device-path to map files under a subdirectory of /sdcard/.

Example (default mapping):

bundle-folder/
  config.json                → /sdcard/config.json
  data/
    user.json                → /sdcard/data/user.json
    cache/
      temp.dat               → /sdcard/data/cache/temp.dat

Example (with --device-path myapp/config):

bundle-folder/
  config.json                → /sdcard/myapp/config/config.json
  data/
    user.json                → /sdcard/myapp/config/data/user.json

Hash-Based Deduplication: The CLI automatically detects and reuses existing builds and files based on their content hash (SHA-256 for builds, SHA-512 for files). This means:

  • Uploading the same APK multiple times only stores it once
  • Files that haven't changed are reused across bundles
  • Only new or modified files are uploaded, saving time and bandwidth

Subcommands

upload
  • Usage: abxr-cli app_bundles upload <app_id> <apk_path> <bundle_folder> [--version-number VERSION] [-n NOTES] [--device-path PATH]
  • Positional Arguments:
    • <app_id>: The unique identifier of the app.
    • <apk_path>: Path to APK file.
    • <bundle_folder>: Path to folder containing bundle files.
  • Optional Arguments:
    • --version-number: Version number (APK can override this value, only used for new builds).
    • -n, --notes: Release notes for the bundle.
    • --device-path: Optional device path relative to /sdcard for bundle files (e.g., "myapp/config").
  • Description: Upload an APK and all bundle files from a folder, then finalize the bundle. Bundle labels are auto-generated by the system. Automatically reuses existing builds and files based on hash matching for faster uploads.
list
  • Usage: abxr-cli app_bundles list <app_id> [--status STATUS]
  • Positional Argument:
    • <app_id>: The unique identifier of the app.
  • Optional Arguments:
    • --status: Filter by status (pending, processing, failed, available).
  • Description: List all app bundles for a specific app.
details
  • Usage: abxr-cli app_bundles details <app_bundle_id>
  • Positional Argument:
    • <app_bundle_id>: The unique identifier of the app bundle.
  • Description: Get detailed information about a specific app bundle.
resume
  • Usage: abxr-cli app_bundles resume <bundle_id> <apk_path> <folder_path> [--device-path PATH]
  • Positional Arguments:
    • <bundle_id>: The unique identifier of the bundle to resume.
    • <apk_path>: Path to APK file (must match original).
    • <folder_path>: Path to folder containing the original bundle files.
  • Optional Arguments:
    • --device-path: Device path relative to /sdcard (must match original upload if used).
  • Description: Resume a failed or interrupted bundle upload. Validates that the APK, folder structure, and device path match the original bundle, then uploads any missing files and finalizes the bundle.
update_label
  • Usage: abxr-cli app_bundles update_label <app_bundle_id> {--label LABEL | --clear}
  • Positional Argument:
    • <app_bundle_id>: The unique identifier of the app bundle.
  • Required Options (mutually exclusive):
    • --label: New label for the bundle (max 60 characters).
    • --clear: Remove the label from the bundle.
  • Description: Update or remove an app bundle's label. Labels help identify different bundles for the same app. Use --label to set a new label or --clear to remove the existing label.

Files Commands

These commands are used for file-related operations.

Subcommands

list
  • Usage: abxr-cli files list
  • Description: List all files available.
details
  • Usage: abxr-cli files details file_id
  • Positional Argument:
    • file_id: The unique identifier of the file.
  • Description: Get detailed information for a specific file.

Devices Commands

These commands are used for device-related operations

Subcommands

list
  • Usage: abxr-cli devices list
  • Description: List all devices
details
  • Usage: abxr-cli devices details device_id
  • Positional Argument:
    • device_id: The unique identifier for the device.
  • Description: Get detailed information about a device.
launch
  • Usage: abxr-cli devices launch device_id --app_id=app_id
  • Positional Argument:
    • device_id: The unique identifier for the device.
  • Required Options:
    • --app_id: The unique identifier of the application you want to launch
  • Description: Launch an application immediately on a device.
reboot
  • Usage: abxr-cli devices reboot device_id
  • Positional Argument:
    • device_id: The unique identifier for the device.
  • Description: Reboot a device immediately.

CLI Usage Examples

These examples assume you have set the ABXR_API_TOKEN in your environment.

Listing all apps

abxr-cli apps list

Getting details of a specific app

abxr-cli apps details 123e4567-e89b-12d3-a456-426614174000

Listing versions of an app

abxr-cli apps versions 123e4567-e89b-12d3-a456-426614174000

Uploading a new version of an app

abxr-cli apps upload 123e4567-e89b-12d3-a456-426614174000 /path/to/app.apk --version 1.2.3 --notes "Bug fixes and performance improvements"

Sharing an app with an organization

abxr-cli apps share 123e4567-e89b-12d3-a456-426614174000 --release_channel_id 6789 --organization_slug myorg

Listing all files

abxr-cli files list

Uploading an app bundle with files

Upload an APK and associated files from a folder:

abxr-cli app_bundles upload 123e4567-e89b-12d3-a456-426614174000 /path/to/app.apk /path/to/bundle-folder

With version number and release notes:

abxr-cli app_bundles upload 123e4567-e89b-12d3-a456-426614174000 /path/to/app.apk /path/to/bundle-folder --version-number "1.0.0" --notes "Initial production release"

With a custom device path (files will be placed under /sdcard/myapp/config/):

abxr-cli app_bundles upload 123e4567-e89b-12d3-a456-426614174000 /path/to/app.apk /path/to/bundle-folder --device-path myapp/config

Listing app bundles

List all bundles for an app:

abxr-cli app_bundles list 123e4567-e89b-12d3-a456-426614174000

List only pending bundles:

abxr-cli app_bundles list 123e4567-e89b-12d3-a456-426614174000 --status pending

Getting app bundle details

abxr-cli app_bundles details 789e1234-e89b-12d3-a456-426614174000

Resuming a failed bundle upload

If an upload fails or is interrupted, you can resume it:

abxr-cli app_bundles resume 789e1234-e89b-12d3-a456-426614174000 /path/to/app.apk /path/to/bundle-folder

If the original upload used a custom device path, you must provide it when resuming:

abxr-cli app_bundles resume 789e1234-e89b-12d3-a456-426614174000 /path/to/app.apk /path/to/bundle-folder --device-path myapp/config

Updating an app bundle's label

Set a custom label for a bundle:

abxr-cli app_bundles update_label 789e1234-e89b-12d3-a456-426614174000 --label "Production Release v2.0"

Remove a label from a bundle:

abxr-cli app_bundles update_label 789e1234-e89b-12d3-a456-426614174000 --clear

Error Handling

  • If the API token is missing (not provided via --token or environment variables), the tool will print:

API Token is required. Please set the ABXR_API_TOKEN environment variable or use the --token command line param

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abxrcli-0.13.0.tar.gz (27.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abxrcli-0.13.0-py3-none-any.whl (33.4 kB view details)

Uploaded Python 3

File details

Details for the file abxrcli-0.13.0.tar.gz.

File metadata

  • Download URL: abxrcli-0.13.0.tar.gz
  • Upload date:
  • Size: 27.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for abxrcli-0.13.0.tar.gz
Algorithm Hash digest
SHA256 1e882da4b117880b0842b781d0cb634198fc18a684f3a9e2c28c7b308e9d6121
MD5 e9a10e807a56c9c221a4daff47467bb3
BLAKE2b-256 9e4984a89e8623541c2fa05b8cc3019fbc91bf1f67615ca84f9ce0f719d79cc5

See more details on using hashes here.

File details

Details for the file abxrcli-0.13.0-py3-none-any.whl.

File metadata

  • Download URL: abxrcli-0.13.0-py3-none-any.whl
  • Upload date:
  • Size: 33.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for abxrcli-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9097afd997373386931d1a1dd71027d9b51fb073b1c0502c01f5d18e39df72bd
MD5 deacf9759be26fcdb8bc6b1b75fcf28d
BLAKE2b-256 f2a3c4097a850d08a6ee8061b0068837427fd967e5cd34ebdece01d89fffa72b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page