Skip to main content

Zealot API (v1.3)

Download OpenAPI specification:Download

This documentation doesn't provide a way to test our API. In order to facilitate testing, we recommend the following tools:

  • cURL (recommended, command-line)
  • Bruno
  • Postman
  • Your web browser, if you don't need to send headers or a request body

Once you have a working client, you can test that it works by making a GET request to {host}/version:

{
  "version": "5.3.6",
  "vcs_ref": "effe99c25b79fd55d3e1959ea3af0bcb6b75ba1d",
  "build_date": "2024-05-23T06:04:48.989Z"
}

Authentication

This API only accepts one options for authentication: Personal access tokens. All tokens are tied to a Zealot user and use the token query of the request.

Example:

https://tryzealot.ews.im/api/users?token={token}

Personal access tokens

Personal access tokens (PATs) can be found in from the user settings.

Apps

List Apps

Lists all apps, paginated and sorted by created date (newest first)

Authorizations:
token
query Parameters
page
integer <int32> >= 1
Default: 1

Pagination page

per_page
integer <int32> [ 1 .. 100 ]
Default: 25

Page size

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create an App

Create an App

Authorizations:
token
Request Body schema: multipart/form-data
name
required
string

App name

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "First App",
  • "schemes": [
    ],
  • "collaborators": [
    ]
}

Check version build exists

Allows you to check the Release exists by given query, query accepts two combo group:

  • bundle_id, release_version and build_verion
  • bundle_id and git_commit
query Parameters
channel_key
required
string

Channel key

bundle_id
required
string

bundle_id for iOS, package_name for Android

git_commit
string

Git Commit SHA

release_version
string

Release version

build_version
string

Build version

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "First App",
  • "schemes": [
    ],
  • "collaborators": [
    ]
}

Get version builds

Query the list of uploaded versions of the single channel and the version list downwards

query Parameters
channel_key
required
string

Channel key

page
integer <int32> >= 1
Default: 1

Pagination page

per_page
integer <int32> [ 1 .. 100 ]
Default: 25

Page size

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "app_name": "First App",
  • "bundle_id": "*",
  • "app": {
    },
  • "scheme": {
    },
  • "releases": []
}

Get the latest builds

Query a list of latest versions of the single channel of the application and reverse the upload date

query Parameters
channel_key
required
string

Channel key

bundle_id
string
release_version
required
string
build_version
required
string

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "app_name": "First App",
  • "bundle_id": "*",
  • "app": {
    },
  • "scheme": {
    },
  • "releases": []
}

Upload build of App

Upload a iOS, Android, macOS, Windows or Linux App

Authorizations:
token
Request Body schema: multipart/form-data
channel_key
required
string

Channel key, keep it empty to create a new App

file
required
file

The location of upload App binary file

name
string

the name of App. Use app name from parsed metadata in given file if leave it empty

password
string

visit password, clear it if leave it empty

release_type
string

Release type, for example, debug, beta, adhoc, release, enterprise etc

source
string

the source of upload (default is api)

Array of objects (ReleaseChangelog)

Change log, accept plain text or JSON formatted data

branch
string

a branch name from source control tool

git_commit
string

Git Commit SHA value

ci_url
string

the build url of a CI service

Array of objects (ReleaseCustomField)

JSON formatted custom fields, icon only accepts fontawesome.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "First App",
  • "schemes": [
    ],
  • "collaborators": [
    ]
}

Get an App

Get an App detail

Authorizations:
token
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "First App",
  • "schemes": [
    ],
  • "collaborators": [
    ]
}

Update an App

Rename the App's name

Authorizations:
token
path Parameters
id
required
string
Request Body schema: multipart/form-data
name
required
string

App name

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "First App",
  • "schemes": [
    ],
  • "collaborators": [
    ]
}

Destroy an App

Destroy an App all data by ID, include schemes, channel, builds, debug files and the other related resources.

Authorizations:
token
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "message": "OK"
}

Channel

Get a channel

Get a channel

Authorizations:
token
path Parameters
scheme_id
required
string

Responses

Response samples

Content type
application/json
[]

Create a channel

Create a scheme's channel

Authorizations:
token
path Parameters
scheme_id
required
string
Request Body schema: multipart/form-data
name
required
string

Channel name

device_type
required
string
Enum: "ios" "android" "macos" "windows" "linux"

Device type

slug
string

The slug of Channel, random it if not given

bundle_id
string

identifier valid check, set * skip (bundle_id for iOS, package name for Android)

git_url
string

Git repository URL

password
string

Enable password visit

Responses

Response samples

Content type
application/json
{}

Update a channel

Update a channel

Authorizations:
token
path Parameters
id
required
string
Request Body schema: multipart/form-data
name
required
string

Channel name

device_type
required
string
Enum: "ios" "android" "macos" "windows" "linux"

Device type

slug
string

The slug of Channel, random it if not given

bundle_id
string

identifier valid check, set * skip (bundle_id for iOS, package name for Android)

git_url
string

Git repository URL

password
string

Enable password visit

Responses

Response samples

Content type
application/json
{}

Destroy a channel

Destroy a scheme's channel

Authorizations:
token
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "message": "OK"
}

Collaborators

Get a collaborator

Get a collaborator metadata

Authorizations:
token
path Parameters
app_id
required
string
user_id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": 2,
  • "username": "foo",
  • "email": "foo@example.com",
  • "role": "developer"
}

Add a collaborator to an App

Add a collaborator to an App

Authorizations:
token
path Parameters
app_id
required
string
user_id
required
string
Request Body schema: multipart/form-data
role
required
string
Enum: "member" "developer" "admin"

Role name

Responses

Response samples

Content type
application/json
{
  • "id": 2,
  • "username": "foo",
  • "email": "foo@example.com",
  • "role": "developer"
}

Update a collaborator's role

Update a Collaborator's role

Authorizations:
token
path Parameters
app_id
required
string
user_id
required
string
Request Body schema: multipart/form-data
role
required
string
Enum: "member" "developer" "admin"

Role name

Responses

Response samples

Content type
application/json
{
  • "id": 2,
  • "username": "foo",
  • "email": "foo@example.com",
  • "role": "developer"
}

Remove a collaborator from an App

Remove a collaborator from an App

Authorizations:
token
path Parameters
app_id
required
string
user_id
required
string

Responses

Response samples

Content type
application/json
{
  • "message": "OK"
}

Debug files

List debug files

List debug files by an App's channel key.

query Parameters
channel_key
required
string

Channel key

page
integer <int32> >= 1
Default: 1

Pagination page

per_page
integer <int32> [ 1 .. 100 ]
Default: 25

Page size

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Download debug file

Download a single iOS or Android debug file.

To query based on channel_key and release_version as necessary conditions, without passing the build_version parameter, you can use order to get the first debug file address that meets the sorting criteria. The sorting methods are:

  • version: latest version
  • upload_date: last uploaded date
query Parameters
channel_key
required
string

Channel key

release_version
required
string

Release version

build_version
string

Build version

order
string

Sort by order / Supported values in version, upload_date

Responses

Get a debug file

Get a debug file

Authorizations:
token
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": 31,
  • "app_name": "First App",
  • "device_type": "iOS",
  • "release_version": "3.2.1",
  • "build_version": "8621",
  • "metadata": [
    ]
}

Destroy a debug file

Destroy a debug file ID and all data, include dSYM or Proguard files.

Authorizations:
token
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "message": "OK"
}

Upload a debug file

Upload a dSYM or Proguard file which it was archived with zip formatted whit it accepts:

  • iOS: a Zipped dSYM file
  • Android: a Zipped file includes mapping.txt, R.txt or AndroidManifest.xml files.
Authorizations:
token
Request Body schema: multipart/form-data
channel_key
required
string

Channel key

file
required
file

Zip arichved file (dSYM or Proguard)

release_version
string

Release version (requires if Android's Proguard file)

build_version
string

Build version (requires if Android's Proguard file)

Responses

Response samples

Content type
application/json
{
  • "id": 31,
  • "app_name": "First App",
  • "device_type": "iOS",
  • "release_version": "3.2.1",
  • "build_version": "8621",
  • "metadata": [
    ]
}

Schemes

Get a scheme

Get an App's scheme

Authorizations:
token
path Parameters
app_id
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create an App's scheme

Create an App's scheme

Authorizations:
token
path Parameters
app_id
required
string
Request Body schema: multipart/form-data
name
required
string

Scheme name

new_build_callout
boolean
Default: true

Whether to send a notification when a new build is available

retained_builds
integer <int32>
Default: 0

The number of builds to retain for this scheme, set 0 to disable it

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Production",
  • "new_build_callout": true,
  • "retained_builds": 0,
  • "channels": []
}

Update a scheme

Update an App's scheme

Authorizations:
token
path Parameters
id
required
string
Request Body schema: multipart/form-data
name
required
string

Scheme name

new_build_callout
boolean
Default: true

Whether to send a notification when a new build is available

retained_builds
integer <int32>
Default: 0

The number of builds to retain for this scheme, set 0 to disable it

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Production",
  • "new_build_callout": true,
  • "retained_builds": 0,
  • "channels": []
}

Destroy a scheme

Destroy a scheme from the App

Authorizations:
token
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "message": "OK"
}

Users

List users

List users without secreted value (password)

Authorizations:
token
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a user

Create an user

Authorizations:
token
Request Body schema: multipart/form-data
username
required
string

Username

email
required
string

Email

password
required
string

Password

locale
string
Enum: "zh-CN" "en"

Language

appearance
string
Enum: "light" "dark" "auto"

Appearance

timezone
string
Enum: "Etc/GMT+12" "Pacific/Pago_Pago" "Pacific/Midway" "Pacific/Honolulu" "America/Juneau" "America/Los_Angeles" "America/Tijuana" "America/Phoenix" "America/Mazatlan" "America/Denver" "America/Guatemala" "America/Chicago" "America/Chihuahua" "America/Mexico_City" "America/Monterrey" "America/Regina" "America/Bogota" "America/New_York" "America/Indiana/Indianapolis" "America/Lima" "America/Halifax" "America/Caracas" "America/Guyana" "America/La_Paz" "America/Puerto_Rico" "America/Santiago" "America/St_Johns" "America/Sao_Paulo" "America/Argentina/Buenos_Aires" "America/Montevideo" "America/Godthab" "Atlantic/South_Georgia" "Atlantic/Azores" "Atlantic/Cape_Verde" "Europe/London" "Europe/Lisbon" "Africa/Monrovia" "Etc/UTC" "Europe/Amsterdam" "Europe/Belgrade" "Europe/Berlin" "Europe/Zurich" "Europe/Bratislava" "Europe/Brussels" "Europe/Budapest" "Africa/Casablanca" "Europe/Copenhagen" "Europe/Dublin" "Europe/Ljubljana" "Europe/Madrid" "Europe/Paris" "Europe/Prague" "Europe/Rome" "Europe/Sarajevo" "Europe/Skopje" "Europe/Stockholm" "Europe/Vienna" "Europe/Warsaw" "Africa/Algiers" "Europe/Zagreb" "Europe/Athens" "Europe/Bucharest" "Africa/Cairo" "Africa/Harare" "Europe/Helsinki" "Asia/Jerusalem" "Europe/Kaliningrad" "Europe/Kiev" "Africa/Johannesburg" "Europe/Riga" "Europe/Sofia" "Europe/Tallinn" "Europe/Vilnius" "Asia/Baghdad" "Europe/Istanbul" "Asia/Kuwait" "Europe/Minsk" "Europe/Moscow" "Africa/Nairobi" "Asia/Riyadh" "Europe/Volgograd" "Asia/Tehran" "Asia/Muscat" "Asia/Baku" "Europe/Samara" "Asia/Tbilisi" "Asia/Yerevan" "Asia/Kabul" "Asia/Almaty" "Asia/Yekaterinburg" "Asia/Karachi" "Asia/Tashkent" "Asia/Kolkata" "Asia/Colombo" "Asia/Kathmandu" "Asia/Dhaka" "Asia/Urumqi" "Asia/Rangoon" "Asia/Bangkok" "Asia/Jakarta" "Asia/Krasnoyarsk" "Asia/Novosibirsk" "Asia/Shanghai" "Asia/Chongqing" "Asia/Hong_Kong" "Asia/Irkutsk" "Asia/Kuala_Lumpur" "Australia/Perth" "Asia/Singapore" "Asia/Taipei" "Asia/Ulaanbaatar" "Asia/Tokyo" "Asia/Seoul" "Asia/Yakutsk" "Australia/Adelaide" "Australia/Darwin" "Australia/Brisbane" "Australia/Canberra" "Pacific/Guam" "Australia/Hobart" "Australia/Melbourne" "Pacific/Port_Moresby" "Australia/Sydney" "Asia/Vladivostok" "Asia/Magadan" "Pacific/Noumea" "Pacific/Guadalcanal" "Asia/Srednekolymsk" "Pacific/Auckland" "Pacific/Fiji" "Asia/Kamchatka" "Pacific/Majuro" "Pacific/Chatham" "Pacific/Tongatapu" "Pacific/Apia" "Pacific/Fakaofo"

Time zone

role
string
Default: "user"
Enum: "member" "developer" "admin"

User role

Responses

Response samples

Content type
application/json
{
  • "id": 101,
  • "username": "foo",
  • "email": "foo@example.com",
  • "locale": "zh-CN",
  • "appearance": "light",
  • "timezone": "Etc/GMT+12",
  • "role": "member"
}

Get a user

Get a user metadata, personal data and customize settings

Authorizations:
token
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": 101,
  • "username": "foo",
  • "email": "foo@example.com",
  • "locale": "zh-CN",
  • "appearance": "light",
  • "timezone": "Etc/GMT+12",
  • "role": "member"
}

Update a user

Update user personalized settings, password, etc.

Authorizations:
token
path Parameters
id
required
string
Request Body schema: multipart/form-data
username
required
string

Username

email
required
string

Email

password
required
string

Password

locale
string
Enum: "zh-CN" "en"

Language

appearance
string
Enum: "light" "dark" "auto"

Appearance

timezone
string
Enum: "Etc/GMT+12" "Pacific/Pago_Pago" "Pacific/Midway" "Pacific/Honolulu" "America/Juneau" "America/Los_Angeles" "America/Tijuana" "America/Phoenix" "America/Mazatlan" "America/Denver" "America/Guatemala" "America/Chicago" "America/Chihuahua" "America/Mexico_City" "America/Monterrey" "America/Regina" "America/Bogota" "America/New_York" "America/Indiana/Indianapolis" "America/Lima" "America/Halifax" "America/Caracas" "America/Guyana" "America/La_Paz" "America/Puerto_Rico" "America/Santiago" "America/St_Johns" "America/Sao_Paulo" "America/Argentina/Buenos_Aires" "America/Montevideo" "America/Godthab" "Atlantic/South_Georgia" "Atlantic/Azores" "Atlantic/Cape_Verde" "Europe/London" "Europe/Lisbon" "Africa/Monrovia" "Etc/UTC" "Europe/Amsterdam" "Europe/Belgrade" "Europe/Berlin" "Europe/Zurich" "Europe/Bratislava" "Europe/Brussels" "Europe/Budapest" "Africa/Casablanca" "Europe/Copenhagen" "Europe/Dublin" "Europe/Ljubljana" "Europe/Madrid" "Europe/Paris" "Europe/Prague" "Europe/Rome" "Europe/Sarajevo" "Europe/Skopje" "Europe/Stockholm" "Europe/Vienna" "Europe/Warsaw" "Africa/Algiers" "Europe/Zagreb" "Europe/Athens" "Europe/Bucharest" "Africa/Cairo" "Africa/Harare" "Europe/Helsinki" "Asia/Jerusalem" "Europe/Kaliningrad" "Europe/Kiev" "Africa/Johannesburg" "Europe/Riga" "Europe/Sofia" "Europe/Tallinn" "Europe/Vilnius" "Asia/Baghdad" "Europe/Istanbul" "Asia/Kuwait" "Europe/Minsk" "Europe/Moscow" "Africa/Nairobi" "Asia/Riyadh" "Europe/Volgograd" "Asia/Tehran" "Asia/Muscat" "Asia/Baku" "Europe/Samara" "Asia/Tbilisi" "Asia/Yerevan" "Asia/Kabul" "Asia/Almaty" "Asia/Yekaterinburg" "Asia/Karachi" "Asia/Tashkent" "Asia/Kolkata" "Asia/Colombo" "Asia/Kathmandu" "Asia/Dhaka" "Asia/Urumqi" "Asia/Rangoon" "Asia/Bangkok" "Asia/Jakarta" "Asia/Krasnoyarsk" "Asia/Novosibirsk" "Asia/Shanghai" "Asia/Chongqing" "Asia/Hong_Kong" "Asia/Irkutsk" "Asia/Kuala_Lumpur" "Australia/Perth" "Asia/Singapore" "Asia/Taipei" "Asia/Ulaanbaatar" "Asia/Tokyo" "Asia/Seoul" "Asia/Yakutsk" "Australia/Adelaide" "Australia/Darwin" "Australia/Brisbane" "Australia/Canberra" "Pacific/Guam" "Australia/Hobart" "Australia/Melbourne" "Pacific/Port_Moresby" "Australia/Sydney" "Asia/Vladivostok" "Asia/Magadan" "Pacific/Noumea" "Pacific/Guadalcanal" "Asia/Srednekolymsk" "Pacific/Auckland" "Pacific/Fiji" "Asia/Kamchatka" "Pacific/Majuro" "Pacific/Chatham" "Pacific/Tongatapu" "Pacific/Apia" "Pacific/Fakaofo"

Time zone

role
string
Default: "user"
Enum: "member" "developer" "admin"

User role

Responses

Response samples

Content type
application/json
{
  • "id": 101,
  • "username": "foo",
  • "email": "foo@example.com",
  • "locale": "zh-CN",
  • "appearance": "light",
  • "timezone": "Etc/GMT+12",
  • "role": "member"
}

Destroy a user

Destroy a user

Authorizations:
token
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "message": "OK"
}

Search user

Search user by given an email address

Authorizations:
token
query Parameters
email
required
path

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Lock a user

Lock a user to stop log in

Authorizations:
token
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": 101,
  • "username": "foo",
  • "email": "foo@example.com",
  • "locale": "zh-CN",
  • "appearance": "light",
  • "timezone": "Etc/GMT+12",
  • "role": "member"
}

Unlock a user

Unlock a user to enable log in

Authorizations:
token
path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": 101,
  • "username": "foo",
  • "email": "foo@example.com",
  • "locale": "zh-CN",
  • "appearance": "light",
  • "timezone": "Etc/GMT+12",
  • "role": "member"
}

Version

Get version information

Responses

Response samples

Content type
application/json
{
  • "version": "5.3.6",
  • "vcs_ref": "effe99c25b79fd55d3e1959ea3af0bcb6b75ba1d",
  • "build_date": "2024-05-23T06:04:48.989Z"
}