Skip to main content

/i/apps/update

Endpoint

/i/apps/update

Overview

Update app metadata fields such as name, type, country, timezone, key, lock status, and checksum salt alias.

Authentication

  • API Key (parameter): api_key=YOUR_API_KEY
  • Auth Token (parameter): auth_token=YOUR_AUTH_TOKEN
  • Auth Token (header): countly-token: YOUR_AUTH_TOKEN

Permissions

  • Global admin can always call this endpoint.
  • App admins can call this endpoint when app context is provided for app-level authorization.

Request Parameters

ParameterTypeRequiredDescription
api_keyStringYes (or use auth_token)Dashboard API authentication key.
auth_tokenStringYes (or use api_key)Dashboard auth token.
app_idStringConditionallyTop-level app context used by route-level app-admin authorization flow.
argsJSON String (Object)YesApp update payload.

args Object Structure

FieldTypeRequiredDescription
app_idStringYesTarget app ID.
nameStringNoNew app name. Empty string is rejected.
typeStringNoNew app type. Must be valid and enabled.
categoryStringNoNew category (1 to 20).
keyStringNoNew app key. Must be unique and non-empty when provided.
timezoneStringNoNew IANA timezone.
countryStringNoNew ISO country code.
saltStringNoChecksum salt alias field.
lockedBooleanNoApp lock state.

Response

Success Response

Update applied:

{
"name": "Updated App",
"timezone": "Europe/Berlin",
"edited_at": 1717600100
}

No-op update:

{
"result": "Nothing changed"
}

Response Fields

FieldTypeDescription
(root)ObjectRaw update object that was persisted when update succeeds.
edited_atNumberUpdate timestamp (seconds).
resultStringPresent for no-op update branch (Nothing changed).

Error Responses

Status Code: 400 Bad Request

{
"result": "Error: Validation error details"
}

Status Code: 400 Bad Request

{
"result": "Invalid app name"
}

Status Code: 400 Bad Request

{
"result": "Invalid app key"
}

Status Code: 400 Bad Request

{
"result": "Invalid props: country,timezone"
}

Status Code: 400 Bad Request

{
"result": "App key already in use"
}

Status Code: 401 Unauthorized

{
"result": "User does not have admin rights for this app"
}

Status Code: 404 Not Found

{
"result": "App not found"
}

Behavior/Processing

Behavior Modes

ModeTriggerProcessing PathResponse Shape
Normal updateAt least one valid update field is providedValidates fields, checks key uniqueness when needed, updates app document, dispatches update integrations.Raw object (updated fields + edited_at).
No-opNo effective update fields providedSkips database write.Wrapped string { "result": "Nothing changed" }.

Impact on Other Data

  • Dispatches app-update integration hooks so feature modules can react to app metadata changes.
  • If app image is uploaded in the same request context, updates app image file.

Database Collections

CollectionUsed forData touched by this endpoint
countly.membersAuthentication/authorizationReads caller permissions and app-admin access rights.
countly.appsApp metadata update targetReads existing app and updates selected app fields.
countly_fsApp image storageOverwrites app image when an image file is supplied.

Examples

Example 1: Update timezone and country

/i/apps/update?api_key=YOUR_API_KEY&app_id=64b0ac10c2c3ce0012dd1001&args={"app_id":"64b0ac10c2c3ce0012dd1001","timezone":"Europe/Berlin","country":"DE"}

Example 2: Lock app

/i/apps/update?api_key=YOUR_API_KEY&app_id=64b0ac10c2c3ce0012dd1001&args={"app_id":"64b0ac10c2c3ce0012dd1001","locked":true}

Limitations

  • args.app_id is mandatory in payload.
  • Invalid type, country, timezone, or category values are rejected.

Last Updated

2026-02-17