API: Apps

This Developer API for apps lets you list all apps in your account, and upload, create, or delete an app. All endpoints require authentication with an API token.

List Apps

List all apps for the logged user, including owned apps, developer apps, member apps, and tester apps.

GET /api/2/apps

Example:

curl \
  -H "X-HockeyAppToken: 4567abcd8901ef234567abcd8901ef23" \
  https://rink.hockeyapp.net/api/2/apps

Response:

Status: 200
Body:
{
    "apps": [
        {
            "title": "HockeyTest",
            "bundle_identifier": "de.codenauts.hockeytest.beta",
            "public_identifier": "1234567890abcdef1234567890abcdef",
            "device_family": "iPhone/iPod",
            "minimum_os_version": "4.0",
            "release_type": 0,
            "status": 2,
            "platform": "iOS"
        },
        {
            "title": "HockeyTest",
            "bundle_identifier": "de.codenauts.hockeytest",
            "public_identifier": "34567890abcdef1234567890abcdef12",
            "release_type": 1,
            "platform": "iOS"
        }
    ],
    "status": "success"
}

Upload App

Upload an .ipa, .apk, or .zip file to create a new app. If an app with the same bundle identifier or package name and the same release type already exists, the uploaded file is assigned to this existing app.

POST /api/2/apps/upload

Parameters:

  • ipa - required, file data of the .ipa for iOS, .app.zip for OS X, or .apk file for Android

  • dsym - optional, file data of the .dSYM.zip file (iOS and OS X) or mapping.txt (Android); note that the extension has to be .dsym.zip (case-insensitive) for iOS and OS X and the file name has to be mapping.txt for Android.

  • notes - optional, release notes as Textile or Markdown (after 5k characters note are truncated)

  • notes_type - optional, type of release notes:

    • 0 for Textile
    • 1 for Markdown
  • notify - optional, notify testers (can only be set with full-access tokens):

    • 0 to not notify testers
    • 1 to notify all testers that can install this app
    • 2 - Notify all testers
  • status - optional, download status (can only be set with full-access tokens):

    • 1 to not allow users to download the version
    • 2 to make the version available for download
  • strategy - optional, replace or add build with same build number

    • add to add the build as a new build to even if it has the same build number (default)
    • replace to replace to a build with the same build number
  • tags - optional, restrict download to comma-separated list of tags

  • teams - optional, restrict download to comma-separated list of team IDs; example:

    • 12,23,42 with 12, 23, and 42 being the database IDs of your teams
  • users - optional, restrict download to comma-separated list of user IDs; example:

    • 1224,5678 with 1224 and 5678 being the database IDs of your users
  • mandatory - optional, set version as mandatory:

    • 0 for not mandatory
    • 1 for mandatory
  • release_type - optional, set the release type of the app:

    • 2 for alpha
    • 0 for beta [default]
    • 1 for store
    • 3 for enterprise
  • private - optional, set to true to enable the private download page (default is true)

  • owner_id - optional, set to the ID of your organization

  • commit_sha - optional, set to the git commit sha for this build

  • build_server_url - optional, set to the URL of the build job on your build server

  • repository_url - optional, set to your source repository

Example:

curl \
  -F "status=2" \
  -F "notify=1" \
  -F "notes=Some new features and fixed bugs." \
  -F "notes_type=0" \
  -F "ipa=@hockeyapp.ipa" \
  -F "dsym=@hockeyapp.dSYM.zip" \
  -H "X-HockeyAppToken: 4567abcd8901ef234567abcd8901ef23" \
  https://rink.hockeyapp.net/api/2/apps/upload

Response:

Status: 201
Body:
{
    "title": "HockeyTest",
    "bundle_identifier": "de.codenauts.hockeytest",
    "public_identifier": "1234567890abcdef1234567890abcdef",
    "device_family": "iPhone/iPod",
    "minimum_os_version": "4.0",
    "release_type": 0,
    "platform": "iOS"
    "status": 2,
    "config_url": "https://rink.hockeyapp.net/manage/apps/123",
    "public_url": "https://rink.hockeyapp.net/apps/1234567890abcdef1234567890abcdef",
}

Create App

Create a new app without uploading a file.

POST /api/2/apps/new

Parameters:

  • title - required, the app's name

  • bundle_identifier - required, the bundle identifier on iOS or Mac OS X, the package name on Android, or the namespace on Windows Phone

  • platform - optional, the app's platform:

    • iOS [default]
    • Android
    • Mac OS
    • Windows Phone
    • Custom
  • release_type - optional, set the release type of the app:

    • 2 for alpha
    • 0 for beta [default]
    • 1 for store
    • 3 for enterprise
  • custom_release_type - optional, set to the custom release type string

  • icon - optional, icon file with content type image/png, image/jpeg, or image image/gif

  • private - optional, set to true to enable the private download page (default is true)

  • owner_id - optional, set to the ID of your organization

Example:

curl \
  -F "title=My App" \
  -F "bundle_identifier=de.codenauts.myapp" \
  -F "platform=iOS" \
  -F "release_type=1" \
  -H "X-HockeyAppToken: 4567abcd8901ef234567abcd8901ef23" \
  https://rink.hockeyapp.net/api/2/apps/new

Response:

Status: 201
Body:
{
    "title": "HockeyTest",
    "bundle_identifier": "de.codenauts.hockeytest",
    "public_identifier": "1234567890abcdef1234567890abcdef",
    "release_type": 0,
    "platform": "iOS"
}

Delete App

Delete the app with the given App ID.

DELETE /api/2/apps/APP_ID

Example:

curl \
  -X DELETE \
  -H "X-HockeyAppToken: 4567abcd8901ef234567abcd8901ef23" \
  https://rink.hockeyapp.net/api/2/apps/1234567890abcdef1234567890abcdef

Response:

Status: 200

Configure App

Configure settings of the app, including feedback feature, Release Notes / Release Notes & Restore Button and Public/Private download page.

PUT /api/2/apps/APP_ID/meta

Parameters:

  • feedback - optional, enables or disables the feedback feature

    • enabled [default]
    • disabled
  • restore_allowed - optional, enables or disables the Restore button for old versions

    • enabled
    • disabled [default]
  • visibility - optional, sets the download page to public or private

    • public
    • private [default]

Example:

curl -v -X PUT "https://rink.hockeyapp.net/api/2/apps/1234567890abcdef1234567890abcdef/meta" \
        -H "X-HockeyAppToken: 4567abcd8901ef234567abcd8901ef23" \
        -F "feedback=disabled" \
        -F "restore_allowed=enabled" \
        -F "visibility=public"

Response:

Status: 200
Body:
{
    "status" : "success",
    "app" : {
       "id" : 366168,
       "status" : 2,
       "custom_release_type" : "",
       "created_at" : "2016-07-26T09:54:51Z",
       "featured" : false,
       "minimum_os_version" : "8.2",
       "integrated_at" : "2016-10-21T02:17:35Z",
       "company" : "Microsoft",
       "role" : 0,
       "device_family" : "iPhone/iPod/iPad",
       "owner_token" : "001d15cabe0738a462c851c5d88d09443c123456",
       "release_type" : 0,
       "updated_at" : "2016-12-07T02:14:12Z",
       "title" : "HockeyAppDemo",
       "internal" : true,
       "platform" : "iOS",
       "owner" : "Kevin Li",
       "visibility" : "public",
       "public_identifier" : "1234567890abcdef1234567890abcdef",
       "bundle_identifier" : "net.hockeywx.HockeyAppDemo"
    }
}