adjust-icon

App endpoint

Use the /app endpoint to create new apps, update existing apps, and retrieve app information. This is the primary endpoint for automating app management at scale.

The retrieve operations—get app by token, get app by store ID, and list all apps—return only apps that were created or updated via this API. To work with any app in your account (including those created in the dashboard), use the App Settings endpoint.

Create or update app via template

Create or update an app for Android, iOS, or both using settings from a template app.

How it works

  1. The API looks for an existing app using the requested platforms and their default store IDs.
  2. It creates an app if none exists, or adds missing platforms to the existing app.
  3. If you provide stores, additional Android stores are added or updated.
  4. A background job is queued to copy settings from your template app when migration is needed.
  5. The response includes a ticket_token to track the operation.

A background job is triggered when any of the following conditions are met:

  • The app or a requested platform is newly created or first imported into App Automation
  • channel_setup, override_settings, editors, or ios_pv_shared_secret fields are updated
  • force_update is set to true
  • The previous migration failed

Changing stores alone doesn’t trigger a background migration for an app already managed through the API. Other settings changes and force_update still determine whether a migration is needed. Store changes are applied before any migration job starts. To also copy updated template settings, set force_update to true.

API protocol

Endpoint: https://automate.adjust.com/app-automation/app

Method: POST

Request body: Create/Update App Payload

Response: App Migration Response

Parameters

ParameterData typeRequiredDescription
nameStringYesDisplay name of the app.
platformsObjectYesandroid, ios, or both, each containing platform settings.
default_platformStringNoDefault platform for a new app. Defaults to android when included in platforms, otherwise ios. Must be included in platforms. Existing apps keep their default platform.
template_app_tokenStringNoApp token to copy settings from. Defaults to the template configured for your account.
sectionsArray[String]NoApp sections to migrate. If omitted or empty, all sections are migrated.
force_updateBooleanNoSet to true to copy updated template settings even if the app hasn’t changed. Default: false.
override_settingsObjectNoSettings to override for the app. Applies to all requested platforms.
currencyStringNoCurrency code, such as EUR or GBP. Defaults to the template’s currency. Can only be set when creating the app.
editorsArray[String]NoEmail addresses of custom users who need app access. Admins, editors, and readers already have access.
ios_pv_shared_secretStringNoiOS Purchase Verification shared secret.
verificationBooleanNoVerify the iOS app when verification is enabled for your account. Default: false.

Platforms

Each entry in platforms contains these fields:

ParameterData typeRequiredDescription
store_idStringYesDefault store ID: numeric iTunes Store ID for iOS, or the ID in the default Android store, such as a Google Play bundle ID or Huawei app ID.
bundle_idStringYesBundle ID of this platform’s app.
channel_setupObjectNoPartner configuration for this platform.
storesObjectNoAdditional Android stores. Android only.

The template must have every requested platform configured. If a platform is missing from the template, the request fails before any app changes.

To add a platform to an existing app, include the existing platform’s identifiers and the new platform’s settings in the same request.

To migrate only one platform of an existing multi-platform app, include only that platform in platforms. Other platform configurations and the app’s default platform are preserved. Platform IDs belonging to different apps can’t be combined into one app.

Legacy requests

Legacy requests with top-level platform, store_id, and bundle_id keep the original flat response. Optional channel_setup and stores also stay at the top level. Use either this format or platforms in a request. See legacy examples.

Additional Android stores

Use platforms.android.stores to add another Android store or update an existing non-default store ID. Legacy requests and POST /app/{app_token} accept top-level stores. If you omit this field, additional stores are unchanged.

The default store is the store marked default_store: true in the app’s platform settings. This is separate from the default platform.

Each key is a Dashboard store name, such as huawei, amazon, or galaxy. Each value contains only a required, non-blank store_id:

{
"stores": {
"huawei": { "store_id": "C123456789" },
"galaxy": { "store_id": "com.example.myapp.galaxy" }
}
}
  • stores must contain at least one entry and is supported only for Android apps. Unsupported store names are rejected.
  • Missing stores are added as non-default stores. Existing non-default store IDs are updated.
  • Stores you omit, redirect URLs, and the default store selection are preserved. This field doesn’t remove stores or change the default store ID.
  • The app’s default store ID and bundle_id are unchanged. To change the default store ID, use the top-level store_id in POST /app/{app_token} without stores.
  • Additional stores aren’t copied from the template app. stores isn’t a migration section or an override_settings field.

For POST /app, platforms.android.store_id (or legacy top-level store_id) identifies the app in its default store. New Android apps use the template app’s default Android store. Existing apps keep their default store.

All store changes in a request are sent in one platform update. Repeating a request with the same store IDs doesn’t create duplicate stores. Response store_id fields still contain the default store ID; use the App Settings endpoint with sections=app_info to retrieve the configured stores.

Sections

Use the sections parameter to migrate only specific settings:

{
"sections": ["partners", "events", "fraud_prevention_settings"]
}

For requests with both platforms, sections run as follows:

SectionsPlatform
partners, purchase_verificationEach requested platform
signatureAndroid
skad_network_v4, attribution_privacy_modeliOS
All other sectionsOnce for the app

For a complete list of available sections, see App sections. The app_info section is read-only. You can retrieve it with the App Settings endpoint, but the API rejects it in sections with a validation_error.

Override settings

Use override_settings to customize specific settings for an app instead of using the template app values. Override settings are saved and applied to subsequent migrations automatically.

There are three operations you can perform with override settings:

OperationHow
ViewUse GET /app/{app_token}/settings to view current app settings. Use GET /app/{app_token} to view saved override payload in additional_info.overrides.
Create / UpdateSend override_settings to either POST /app or POST /app/{app_token}. New values are merged into saved overrides, so you can send only fields you want to change.
ClearCall POST /app/{app_token} with "override_settings": null to remove all saved overrides for the app.

For partners overrides:

  • Use the partners array shape from GET /app/{app_token}/settings.
  • Partners are matched by name.
  • Supported forwarding flags: revenue_forwarding, session_forwarding, parameter_forwarding, cost_forwarding, attributed_only, uninstall_forwarding, ad_revenue_forwarding, limited_data_use, inactive_user_definition.
  • channel_setup is a flat key-value map of partner-specific fields. Keys not supported by the partner may be ignored by Dashboard API.
  • events_linking is a map from app event name to partner event name. See Event linking.
  • Overrides apply to a single app per request. To apply them to many apps, save them as overrides and migrate, or repeat the request for each app.
  • app_info is a read-only section and is not supported in override_settings.
  • Values in platforms.<platform>.channel_setup (or legacy top-level channel_setup) have highest priority.
  • Missing values fall back to the channel setup saved for that platform.
  • override_settings.partners[].channel_setup is used as an additional fallback source.

For s2s overrides:

  • Use the shape returned by GET /app/{app_token}/settings.
  • s2s_authentication_scope sets the endpoints that require S2S authentication on the target app.
  • s2s_session_tracking_enabled sets session endpoint access. This is a separate app setting, so you enable it independently of s2s_authentication_scope.
  • Tokens are matched by label. The token value of an override is ignored, and inactive tokens of the template app aren’t migrated.
  • If the target app has no token with the given label, a token is created with the scope you provide. The supported scope keys are event, session, ad_revenue, and gdpr.
  • For a token that already exists, only the active flag is aligned. Its scope isn’t changed.
S2S override settings example
{
"override_settings": {
"s2s": {
"s2s_authentication_scope": ["install", "session"],
"s2s_session_tracking_enabled": true,
"tokens": [
{
"label": "main",
"active": true,
"scope": {
"event": true,
"session": true,
"ad_revenue": true,
"gdpr": true
}
}
]
}
}
}
Override settings example
{
"override_settings": {
"partners": [
{
"name": "facebook",
"revenue_forwarding": false,
"session_forwarding": false,
"parameter_forwarding": false,
"cost_forwarding": false,
"attributed_only": false,
"uninstall_forwarding": false,
"ad_revenue_forwarding": false,
"limited_data_use": true,
"inactive_user_definition": false,
"channel_setup": {
"app_id": "651107451918933"
},
"events_linking": {
"purchase_inapp": "fb_mobile_purchase"
}
},
{
"name": "snapchat",
"limited_data_use": false,
"channel_setup": {
"app_id": "1404426295"
}
}
]
}
}

Examples

Create or update an Android and iOS app

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My App",
"default_platform": "android",
"platforms": {
"android": {
"store_id": "com.example.myapp",
"bundle_id": "com.example.myapp"
},
"ios": {
"store_id": "123456789",
"bundle_id": "com.example.myapp.ios"
}
}
}'
Response
{
"adjust_app_token": "abc123xyz",
"name": "My App",
"default_platform": "android",
"platforms": {
"android": {
"store_id": "com.example.myapp",
"bundle_id": "com.example.myapp"
},
"ios": {
"store_id": "123456789",
"bundle_id": "com.example.myapp.ios"
}
},
"ticket_token": "e5b07bb3-b5f3-40a8-8a2d-197d30b6beff",
"sk_app_id": null
}

Both platforms share one adjust_app_token and one ticket_token. Use the status endpoint to track the migration.

Migrate only iOS on an existing multi-platform app

Send this body to POST /app with the existing iOS identifiers. The partner settings below apply to iOS. force_update also runs the migration if the supplied settings haven’t changed.

Request body
{
"name": "My App",
"platforms": {
"ios": {
"store_id": "123456789",
"bundle_id": "com.example.myapp.ios",
"channel_setup": {
"facebook": { "app_id": "987654321" }
}
}
},
"sections": ["partners"],
"force_update": true
}

Legacy examples

These examples use the supported flat request and response format.

Create a new Android app

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android"
}'
Response
{
"adjust_app_token": "abc123xyz",
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"ticket_token": "e5b07bb3-b5f3-40a8-8a2d-197d30b6beff",
"sk_app_id": null
}

Create or update an Android app with additional stores

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android",
"stores": {
"huawei": { "store_id": "C123456789" },
"galaxy": { "store_id": "com.example.myapp.galaxy" }
}
}'

This example assumes Google Play is the default store. You can use the same request for an existing app with this default store ID to add or update its additional stores.

Create an iOS app with channel setup

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My iOS App",
"bundle_id": "com.example.myiosapp",
"store_id": "123456789",
"platform": "ios",
"channel_setup": {
"facebook": { "app_id": "987654321" },
"google": { "link_id": "google_link_123" }
}
}'
Response
{
"adjust_app_token": "xyz789abc",
"name": "My iOS App",
"bundle_id": "com.example.myiosapp",
"store_id": "123456789",
"ticket_token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"sk_app_id": "86372991152"
}

Migrate only specific sections

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My App",
"bundle_id": "com.example.app",
"store_id": "com.example.app",
"platform": "android",
"sections": ["events", "partners", "callbacks"]
}'

Force update an existing app

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My App",
"bundle_id": "com.example.app",
"store_id": "com.example.app",
"platform": "android",
"force_update": true
}'

SDK signature configuration

If you use the Adjust Signature library to secure your Android app traffic, you can use the App Automation API to enforce signature validation and manage your app’s certificate fingerprints (android_fingerprints).

How it works

Signature-related settings can be managed in two ways:

  • Template app migration via POST /app. Use this flow to migrate Android certificate fingerprints (android_fingerprints) from the template app and to apply saved override_settings.signature during migration.
  • Direct app-level updates via PATCH /app/{app_token}/signature. Use this flow to update the app-level signature settings enforce_signature, enforce_signature_post_install_activities, and enforce_signature_post_install_activities_mode for a single app without running a migration.

When you use template app migration:

  • All active certificate fingerprints (android_fingerprints) from your template app are copied to the target app.
  • Both signature toggles are inherited from your template app: enforce_signature and post-install signature validation.
  • Saved override_settings.signature values are applied on top of the migrated template settings.
  • No action from an Account Manager is required. This workflow is available immediately.

For instructions on adding certificate fingerprints to your template app and enabling signature validation, see the SDK signature setup guide.

Override signature settings

Use override_settings.signature to override signature-related settings for template app migration:

  • To override only the Android certificate fingerprints, specify android_fingerprints, an array of objects with a fingerprint field.
  • To override only the install-signing enforcement setting, specify enforce_signature.
  • To control post-install signature validation, specify strict_signature_checking_enabled and strict_signing. Set the status of strict_signing to live, test, or paused.
  • To override multiple signature settings, include them together in override_settings.signature.

If you do not provide signature overrides, both toggles are inherited from the template app.

If you need to update signature settings for a single app without running a template migration, use the Signature endpoint.

Update signature settings

Use the PATCH /app/{app_token}/signature endpoint to update signature settings for a single app without running a template migration. The change is applied immediately and the response returns the resulting settings.

Endpoint: https://automate.adjust.com/app-automation/app/{app_token}/signature

Method: PATCH

ParameterData typeInRequiredDescription
app_tokenStringPathYesThe Adjust app token.
enforce_signatureBooleanBodyNoControls install signature enforcement.
enforce_signature_post_install_activitiesBooleanBodyNoControls post-install signature enforcement.
enforce_signature_post_install_activities_modeStringBodyNoPost-install signature mode. One of: production, monitoring. Default when post-install enforcement is enabled and no mode is set: production.
  • Send at least one field in the request body.
  • You can only send enforce_signature_post_install_activities_mode when enforce_signature_post_install_activities is true or omitted.
Request - cURL
curl --location --request PATCH 'https://automate.adjust.com/app-automation/app/abc123xyz/signature' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"enforce_signature": true,
"enforce_signature_post_install_activities": true,
"enforce_signature_post_install_activities_mode": "monitoring"
}'
Response
{
"enforce_signature": true,
"enforce_signature_post_install_activities": true,
"enforce_signature_post_install_activities_mode": "monitoring"
}

Examples

Migrate signatures from the template app

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android",
"sections": ["signature"],
"force_update": true
}'

Override only android_fingerprints

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android",
"sections": ["signature"],
"override_settings": {
"signature": {
"android_fingerprints": [
{ "fingerprint": "AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AB" }
]
}
}
}'

Override only enforce_signature

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android",
"sections": ["signature"],
"override_settings": {
"signature": {
"enforce_signature": true
}
},
"force_update": true
}'

Override both android_fingerprints and enforce_signature

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Android App",
"bundle_id": "com.example.myapp",
"store_id": "com.example.myapp",
"platform": "android",
"sections": ["signature"],
"override_settings": {
"signature": {
"android_fingerprints": [
{ "fingerprint": "AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AB" },
{ "fingerprint": "BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BB:BC" }
],
"enforce_signature": true
}
},
"force_update": true
}'

Update app settings

Update the name, default store ID, or bundle ID of an existing app. You can also manage saved override_settings for future migrations or add and update additional Android stores.

  • Without stores, provide name and at least one of store_id or bundle_id.
  • With stores, name and override_settings are optional. Don’t combine stores with top-level store_id or bundle_id.

API protocol

Endpoint: https://automate.adjust.com/app-automation/app/{app_token}

Method: POST

Response: Update App Response

Parameters

ParameterData typeInRequiredDescription
app_tokenStringPathYesThe Adjust app token.
nameStringBodyConditionalNew display name. Required when stores is omitted.
store_idStringBodyNoNew default store ID. iOS: iTunes Store ID. Android: ID in the app’s default store. Not allowed with stores.
bundle_idStringBodyNoNew iOS bundle ID. Not allowed with stores.
override_settingsObjectBodyNoUpdates saved override settings for future migrations. Set to null to clear all saved overrides.
storesObjectBodyNoAdditional Android stores to add or update. Preserves the default store ID and bundle ID.

Example

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app/abc123xyz' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Renamed App",
"store_id": "com.example.newapp"
}'
Response
{
"store_id": "com.example.newapp",
"name": "My Renamed App",
"ticket_token": "f1e2d3c4-b5a6-7890-1234-567890abcdef"
}

Add or update additional Android stores without a migration

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app/abc123xyz' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"stores": {
"huawei": { "store_id": "C123456789" },
"galaxy": { "store_id": "com.example.myapp.galaxy" }
}
}'
Response
{
"store_id": "com.example.myapp",
"name": "My Android App",
"ticket_token": "f1e2d3c4-b5a6-7890-1234-567890abcdef"
}

The update completes before the response is returned. The default store ID and bundle ID remain unchanged, and no template migration is queued.

Clear saved override settings

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app/abc123xyz' \
--header 'Authorization: Bearer {your-adjust-api-token}' \
--header 'Content-Type: application/json' \
--data '{
"name": "My Renamed App",
"store_id": "com.example.newapp",
"override_settings": null
}'

Get app by store ID

Retrieve app details using the default store ID and platform. This lookup doesn’t search IDs of additional stores supplied in stores.

Use the optional store filter when multiple apps have the same default store ID and platform. Without it, an ambiguous lookup returns an error. If the lookup is still ambiguous with store, get the app by token.

API protocol

Endpoint: https://automate.adjust.com/app-automation/app

Method: GET

Response: Get App Response

Parameters

ParameterData typeInRequiredDescription
store_idStringQueryYesDefault store ID. iOS: iTunes Store ID. Android: ID in the default store.
platformStringQueryYesTarget platform. One of: android, ios.
storeStringQueryNoDefault store filter, such as google, huawei, amazon, or galaxy. Use itunes for iOS.

For Google Play, the store filter value is google, not the Dashboard store name google_play used in stores.

Example

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app?store_id=com.example.myapp&platform=android' \
--header 'Authorization: Bearer {your-adjust-api-token}'
Response
{
"name": "My Android App",
"store_id": "com.example.myapp",
"platform": "android",
"adjust_app_token": "abc123xyz",
"additional_info": { "overrides": {} },
"channel_setup": {
"facebook": { "app_id": "123456789" },
"google": { "link_id": "adwords_link_id" }
},
"cross_promo_token": "hgj3li1"
}

Filter by default store

This example retrieves an app whose default store is Huawei:

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app?store_id=C123456789&platform=android&store=huawei' \
--header 'Authorization: Bearer {your-adjust-api-token}'

Get app by token

Retrieve app details using the Adjust app token.

The response contains one platform’s details. To select a specific platform, look up the app by store ID and platform.

API protocol

Endpoint: https://automate.adjust.com/app-automation/app/{app_token}

Method: GET

Response: Get App Response

Parameters

ParameterData typeInRequiredDescription
app_tokenStringPathYesThe Adjust app token.

Example

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/app/abc123xyz' \
--header 'Authorization: Bearer {your-adjust-api-token}'
Response
{
"name": "My Android App",
"store_id": "com.example.myapp",
"platform": "android",
"adjust_app_token": "abc123xyz",
"additional_info": { "overrides": {} },
"channel_setup": {
"facebook": { "app_id": "123456789" }
},
"cross_promo_token": "hgj3li1"
}

List all apps

Retrieve a list of all apps in your account. You can optionally filter by creation date.

API protocol

Endpoint: https://automate.adjust.com/app-automation/apps/list

Method: GET

Response: Array of App Name Token objects

Parameters

ParameterData typeInRequiredDescription
start_dateStringQueryNoFilter apps created on or after this date. ISO 8601 format (e.g., 2024-01-01T00:00:00Z).
end_dateStringQueryNoFilter apps created on or before this date. ISO 8601 format.

Example

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/apps/list' \
--header 'Authorization: Bearer {your-adjust-api-token}'
Response
[
{
"name": "My Android App",
"token": "abc123xyz"
},
{
"name": "My iOS App",
"token": "xyz789abc"
},
{
"name": "Another App",
"token": "def456uvw"
}
]

Filter by date range

Request - cURL
curl --location 'https://automate.adjust.com/app-automation/apps/list?start_date=2024-01-01T00:00:00Z&end_date=2024-06-30T23:59:59Z' \
--header 'Authorization: Bearer {your-adjust-api-token}'

Data models

Create/Update App Payload

See Parameters for app fields and Platforms for each platform’s settings. The legacy flat format remains supported.

Additional Store Update

Each entry in stores accepts only the following field:

ParameterData typeDescription
store_id*StringNon-blank app ID in this store.

App Migration Response

ParameterData typeDescription
adjust_app_token*StringApp token shared by all requested platforms.
name*StringDisplay name of the app.
default_platform*StringPlatform used for shared settings in this migration.
platforms*ObjectRequested platforms, each with store_id and bundle_id.
ticket_token*StringUUID for the status endpoint.
sk_app_idStringStoreKit app ID. null if not applicable.

Legacy requests return top-level store_id and bundle_id instead of platforms and default_platform.

Get App Response

ParameterData typeDescription
name*StringDisplay name of the app.
store_id*StringDefault store ID of the app.
platform*StringTarget platform: android or ios.
adjust_app_token*StringThe Adjust app token.
additional_info*ObjectAdditional app information including override settings.
channel_setupObjectPartner-specific configuration.
cross_promo_tokenStringCross-promotion link token.

Update App Response

ParameterData typeDescription
store_id*StringDefault store ID. Unchanged for updates using stores.
name*StringUpdated display name.
ticket_token*StringUUID to track the update job status.

App Name Token

ParameterData typeDescription
name*StringDisplay name of the app.
token*StringAdjust app token.