Use the top-level settings object when generating a configuration. For a saved Client API configuration, change these settings in the panel; the resource sync endpoint does not edit them.
Start with defaults
Omit settings to use an enabled configuration with no password, hardware lock, or expiration. Editing permissions, shared/custom resources, and banner hiding default to false. Access defaults to restricted, which allows you to add locks and restrictions later.
A small example that permits credential editing:
{
"settings": {
"permissions": {
"edit": {"credentials": true}
}
}
}
This is a fragment to add to your generation request. Enabling credential editing also sets the server permission flag, but the apps interpret this combination as credential-only editing; it does not unlock the endpoint or full profile.
Access and updates
Paths below are relative to settings.
| Field | Values | Behavior |
|---|---|---|
enabled |
boolean | Defaults to true; false is preserved in the generated export |
updates.mode |
none, url |
Defaults to none; generated configurations cannot use cloud updates |
updates.url |
URL string, max 255 | Required only when updates.mode is url; use an HTTP(S) URL serving a same-key app export |
access.mode |
restricted, open |
Defaults to restricted; open access cannot carry locks or restrictions |
access.password.mode |
none, local |
Defaults to none; cloud mode is unavailable for generation |
access.password.verifier |
string | Required only for local password mode |
access.hwid.mode |
none, local |
Defaults to none; cloud mode is unavailable for generation |
access.hwid.allowed |
array of strings | Required only for local HWID mode; 1–1,000 distinct values, each at most 128 characters, without whitespace or semicolons |
For Business generation, access.password.verifier accepts a plaintext password up to 100 characters; the server transforms it into the app's verifier. A lowercase 64-character hexadecimal value is treated as an already prepared verifier. Do not assume an arbitrary SHA-256 digest will match the app's password hashing contract.
{
"settings": {
"access": {
"password": {"mode": "local", "verifier": "ReplaceThisPassword"}
}
}
}
Every supplied updates, password, or HWID object needs an explicit mode. Do not include a mode-specific value when that mode is disabled.
Restrictions
| Field | Type | Meaning |
|---|---|---|
restrictions.expires_at |
UTC string or null | YYYY-MM-DDTHH:MM:SSZ; null means no expiration |
restrictions.mobile_only |
boolean | Restrict to mobile connectivity |
restrictions.block_root |
boolean | Block rooted devices |
restrictions.require_store_install |
boolean | Require store installation where supported by the app |
restrictions.blocked_apps |
string array | Up to 1,000 distinct app names or package IDs; max 255 characters each |
restrictions.allowed_carrier_codes |
string array | Up to 128 distinct carrier codes, each 5–6 digits |
{
"settings": {
"restrictions": {
"expires_at": "2027-01-01T00:00:00Z",
"block_root": true,
"allowed_carrier_codes": ["51502", "51503"]
}
}
}
Use actual JSON booleans (true / false), not quoted strings. List fields are JSON arrays. Carrier codes are strings so leading zeroes survive.
Editing and display
All these fields are booleans and default to false:
| Field | Allows or controls |
|---|---|
permissions.edit.server |
Editing server connection details when credentials is false; retains the authored identity and tunnel selection |
permissions.edit.credentials |
Credential-only editing; sets the server flag too, while keeping endpoint/profile fields locked |
permissions.edit.payload |
Editing tweak payload, SNI/TLS, DNS carrier values, and protocol tuning exposed by the app |
permissions.edit.proxy |
Editing proxy values where the selected tunnel/carrier supports proxy methods |
permissions.resources.use_shared |
Makes this configuration a source of shared servers and tweaks for other imported configurations |
permissions.resources.show_shared |
Includes resources from other imported configurations that enable use_shared |
permissions.resources.add_custom |
Allows local custom servers and tweaks in the recipient app |
display.hide_banner |
Hiding the configuration banner |
Shared resources retain their source configuration. Its access checks still apply when a recipient uses one of those resources. These flags do not publish resources to the panel's public server catalog. Local custom resources and permitted local edits do not write changes back through the Client API.
For access.mode: "open", the generator clears individual edit permissions and add_custom along with locks and restrictions. Open access corresponds to the panel's Unlock All behavior: the apps can transfer the imported copy to the recipient as owner. Use restricted access with explicit permissions when you want recipients to make only selected edits; restricted access can still have no password or device lock.
Android and iOS restrictions
| Restriction | Android | iOS |
|---|---|---|
| Local password, device lock, expiration | Enforced for ordinary recipients | Enforced for ordinary recipients |
mobile_only |
Requires mobile connectivity | Requires cellular connectivity |
block_root |
Root checks | Jailbreak checks |
require_store_install |
Store-install checks | App Store-install checks |
blocked_apps |
Checks blocked applications | Preserved in the document; not enforced |
allowed_carrier_codes |
Provider Lock checks | Preserved in the document; not enforced |
Test access as an ordinary recipient. Verified configuration owners can bypass recipient restrictions, so importing as the owner is not a sufficient lock test. The app's displayed device ID is the value to use for device locks; it is different from an API key and from a raw device-registration identifier.
Sharing and owner metadata
These fields belong beside settings at the top level of a Business request:
{
"sharing": {"allow_reshare": false},
"owner": {"device_hwid": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}
}
sharing.allow_reshare defaults to false. The optional owner device identifier is at most 32 characters. Owner username is derived from the authenticated Business account and cannot be supplied.