Tool Name: airdroid_business_policy_kiosk_configuration_get
Risk Level: 🟢 Low Risk
Execution Mode: âš¡ Synchronous
Category: Policy & Kiosk Configuration
Quick Start (Copy & Use)
Summary: Retrieve the full settings of a single Policy or Kiosk configuration by its numeric Id, including policy rules, app whitelists/blacklists, screen settings, browser settings, and brand customization.
Prerequisites: A positive integer Id (obtain via List Policy and Kiosk Configurations) + a valid OAuth2 AccessToken configured in the GI node Credential.
Success Criteria: StatusCode == 200 and ErrorMessage == ""; Config is a non-empty object. Config may be an empty object {} when no matching configuration is found (check ErrorMessage/Hint).
What to Do Next: Inspect the Config sections (base_setting, policy_config_file_setting, app_whitelist_setting, etc.). Use Get Config File Deployment Status if you need per-device deployment status instead.
Minimal Request Example (recommended to copy directly):
{
"Id": 10023
}
Minimal Response Example:
{
"Config": {
"base_setting": {
"config_id": 10023,
"account_id": 8001234,
"config_name": "Retail Kiosk EU",
"config_remark": "Kiosk config for EU retail tablets",
"status": "On",
"type": "Kiosk",
"platform_type": "Android",
"create_time": "2025-11-03 09:12:45",
"update_time": "2026-05-20 14:30:02"
}
},
"Hint": "",
"Retryable": false,
"OriginalStatusCode": 200,
"StatusCode": 200,
"ErrorMessage": ""
}
> A real success response contains many more sections inside Config (see Section 3). The example above only shows base_setting for brevity; the JSON itself is complete and valid.
Recipes (Common Recipes)
Recipe 1: Get a Configuration by Known Id
When to use: You already have the configuration Id (e.g. from a previous list call or the admin dashboard).
{
"Id": 10023
}
Recipe 2: Resolve the Id First, Then Get Details
When to use: You only know the configuration name.
Step 1 — call List Policy and Kiosk Configurations:
{
"PageIndex": 1,
"PageSize": 50,
"Name": "Retail Kiosk",
"Order": "update_time",
"Ascending": false
}
Step 2 — take Configs[0].base_setting.config_id and call this tool:
{
"Id": 10023
}
Recipe 3: Audit Kiosk App and Website Whitelists
When to use: You need to verify which apps and websites a Kiosk configuration allows.
{
"Id": 10023
}
Then read Config.app_whitelist_setting[] (allowed apps: pkg_id, app_name, visible, sort) and Config.website_whitelist_setting[] (allowed websites: url, is_destop_shortcut, is_homepage).
1. Overview
1.1 Description
Get detailed settings for a single Policy or Kiosk configuration by ID. The returned Config object is composed of sections: base metadata, policy/restriction settings, app whitelist/blacklist, website whitelist, screen mode settings, notification settings, browser settings (Android and Windows), and brand customization.
1.2 When to Use
- Inspect configuration details: View policy rules, app whitelist/blacklist, screen settings, or brand customization for a specific configuration
- Troubleshoot device behavior: Verify what configuration settings are actually applied
- Prepare replication: Review settings before replicating a configuration to another group
Don't use when:
- You don't have the configuration Id — call List Policy and Kiosk Configurations first
- You need deployment status (which devices have the configuration applied) — use Get Config File Deployment Status
1.3 Execution Mode and Response
This operation is synchronous and returns:
- Config: Full configuration detail object (empty object {} when not found or on error)
- StatusCode / ErrorMessage / Hint / Retryable / OriginalStatusCode: Call status and error information
1.4 Prerequisites
| Condition | Description | How to Check |
|---|---|---|
| Valid credential | A valid OAuth2 AccessToken is required | Configure AirDroid Business OAuth2 credential in the GI node |
| Configuration Id known | A positive integer configuration Id must be provided | Query via List Policy and Kiosk Configurations |
1.5 Prerequisite Tools
| Dependency Tool | Purpose | Necessity |
|---|---|---|
| List Policy and Kiosk Configurations | Obtain the configuration config_id (used as Id here) | If you don't have the Id |
1.6 Differences from Similar Tools
| Tool | Use Case | Key Difference |
|---|---|---|
| Get a Configuration | Full settings of one configuration | Returns the complete settings object by Id |
| List Policy and Kiosk Configurations | Browse/search configurations | Returns a paginated list with base_setting summaries |
| Get Config File Deployment Status | Per-device deployment status | Returns rollout progress per device, not settings |
2. Inputs
2.1 Parameter List
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Id | number | Yes | - | The unique configuration ID. Must be a positive integer (≥ 1) |
2.2 Parameter Details
`Id`
- Type: number
- Required: Yes
- Format: Positive integer (≥ 1). 0, negative numbers, and non-integers are rejected locally with StatusCode = -1
- Source:
- List Policy and Kiosk Configurations → Configs[].base_setting.config_id
- AirDroid Business admin dashboard, under the Policy/Kiosk configuration pages
- How to fill in GI node:
- Constant: Enter the numeric Id directly, e.g. 10023
- Upstream reference: Map from the upstream list node's Configs[].base_setting.config_id output (must be a number)
- Example:
10023
> Id must be a positive integer (Id ≥ 1). 0 is invalid and returns a parameter error before any API request is sent.
2.3 Parameter Combination Logic
- Id is the only input; there are no filters or column selectors. The tool always returns the full configuration object.
3. Outputs
3.1 Response Example
Success response (Kiosk configuration):
{
"Config": {
"base_setting": {
"config_id": 10023,
"account_id": 8001234,
"config_name": "Retail Kiosk EU",
"config_remark": "Kiosk config for EU retail tablets",
"status": "On",
"type": "Kiosk",
"platform_type": "Android",
"create_time": "2025-11-03 09:12:45",
"update_time": "2026-05-20 14:30:02"
},
"policy_config_file_setting": {
"allow_ctl_alarm_area": 1,
"allow_ctl_alarm_volume": 1,
"kiosk_about_hide_trigger_time": 5,
"marquee_offset": 10,
"marquee_speed": 3
},
"brand_setting": {
"brand_id": 501,
"brand_name": "Contoso Retail",
"brand_logo": "https://cdn.example.com/brand/501/logo.png",
"brand_logo_hash": "9f2c1e7a",
"brand_logo_size": 20480,
"wallpaper": "https://cdn.example.com/brand/501/wallpaper.jpg",
"wallpaper_hash": "4b8d2f31",
"wallpaper_size": 512000,
"lock_screen_wallpaper": "https://cdn.example.com/brand/501/lock.jpg",
"lock_screen_wallpaper_hash": "77aa19c2",
"title": "Contoso Store",
"title_color": "#FFFFFF",
"text_color": "#333333",
"top_bar_color": "#0055AA",
"phone_top_bar_color": "#0055AA",
"screen_lock_message": "This device is managed by Contoso IT",
"app_name_state": 1,
"device_name_state": 1,
"app_icon_format": 60,
"is_hide_top_title": 0,
"is_use_our_lock_screen": 1,
"is_show_device_info": 1,
"is_show_device_note": 0,
"is_show_snid": 0
},
"app_whitelist_setting": [
{
"pkg_id": "com.contoso.pos",
"app_name": "Contoso POS",
"icon": "https://cdn.example.com/apps/pos.png",
"app_type": 1,
"visible": 1,
"sort": 1,
"create_time": "2025-11-03 09:12:45",
"update_time": "2026-05-20 14:30:02",
"app_relative_id": 3301,
"select_app_id": 220045,
"account_id": 8001234
}
],
"website_whitelist_setting": [
{
"website_id": 91,
"website_relative_id": 88,
"select_website_id": 91,
"url": "https://support.contoso.com",
"icon": "https://cdn.example.com/web/support.png",
"sort": 1,
"is_destop_shortcut": "Yes",
"is_homepage": "No",
"has_bind_config": 1
}
],
"screen_main_setting": {
"screen_main_id": 77,
"native_status_bar": 0,
"native_nav_bar": 0,
"fullscreen": 1,
"exit_option": 1,
"hide_navbar_interval": 5,
"clean_app_data": 0,
"switch_apps": 1,
"create_time": "2025-11-03 09:12:45",
"update_time": "2026-05-20 14:30:02",
"account_id": 8001234
},
"screen_single_setting": {
"screen_single_id": 42,
"pkg_id": "com.contoso.pos",
"app_always_run": 1,
"app_restart_interval": 30,
"app_browser_refresh_interval": 0,
"app_browser_start_url": "",
"app_browser_start_url_from_whitelist": 0,
"create_time": "2025-11-03 09:12:45",
"update_time": "2026-05-20 14:30:02",
"account_id": 8001234
},
"screen_notify_setting": {
"screen_notify_id": 15,
"notify_status": 1,
"allow_change_direction": 1,
"allow_flashlight": 0,
"switch_app": 1,
"terminate_app": 0,
"usb_notify": 1,
"slide_type": 1,
"create_time": "2025-11-03 09:12:45",
"update_time": "2026-05-20 14:30:02",
"account_id": 8001234
},
"browser_setting": {
"browser_setting_id": 33,
"show_address": 1,
"allow_multiple_tag": 0,
"open_stealth_mode": 0,
"adjust_page_by_device": 1,
"disable_sys_back_btn": 0,
"show_pc_mode_btn": 0,
"auto_remove_cache": 1,
"auto_remove_cache_interval": 60,
"open_print_btn": 0,
"allow_auto_complete": 1,
"disable_pull_to_refresh": 0,
"create_time": "2025-11-03 09:12:45",
"update_time": "2026-05-20 14:30:02",
"account_id": 8001234
},
"app_blacklist_setting": [],
"policy_app_whitelist_setting": []
},
"Hint": "",
"Retryable": false,
"OriginalStatusCode": 200,
"StatusCode": 200,
"ErrorMessage": ""
}
Error response (configuration not found):
{
"Config": {},
"Hint": "Configuration file was not found; obtain id via 'List Policy and Kiosk Configurations' and retry.",
"Retryable": false,
"OriginalStatusCode": 200,
"StatusCode": 200,
"ErrorMessage": "config file not exist"
}
Error response (invalid Id, request never sent):
{
"Config": {},
"Hint": "Obtain id via 'List Policy and Kiosk Configurations', then provide a positive integer id and retry.",
"Retryable": false,
"OriginalStatusCode": 0,
"StatusCode": -1,
"ErrorMessage": "Invalid id. Must be a positive integer."
}
3.2 Field Descriptions
Config is composed of the following sections. Which sections appear depends on the configuration type (Policy vs Kiosk) and platform (Android vs Windows).
| Field Path | Type | Description |
|---|---|---|
| Config | object | Full configuration object. Empty object {} when no matching configuration is found or on error |
| Config.base_setting | object | Base metadata: config_id, account_id, config_name, config_remark, status, type, platform_type, create_time, update_time |
| Config.policy_config_file_setting | object | Policy/restriction settings (large object; structure depends on platform_type). See semantics below |
| Config.brand_setting | object | Branding / lock-screen / wallpaper settings. See semantics below |
| Config.app_whitelist_setting | array | Kiosk allowed apps. Android items: pkg_id, app_name, icon, app_type, visible, sort, create_time, update_time, app_relative_id, select_app_id, account_id. Windows items may also contain: id, type, is_system_app, is_store_app, path, origin, version, aum_id |
| Config.website_whitelist_setting | array | Kiosk allowed websites/shortcuts: website_id, website_relative_id, select_website_id, url, icon, sort, is_destop_shortcut, is_homepage, has_bind_config |
| Config.screen_main_setting | object | Main screen mode: screen_main_id, native_status_bar, native_nav_bar, fullscreen, exit_option, hide_navbar_interval, clean_app_data, switch_apps |
| Config.screen_single_setting | object | Single-app mode: screen_single_id, pkg_id, app_always_run, app_restart_interval, app_browser_refresh_interval, app_browser_start_url, app_browser_start_url_from_whitelist. On Windows, this section may instead be a Windows app object (id, pkg_id, app_name, type, is_system_app, is_store_app, icon, path, origin, version, aum_id) |
| Config.screen_notify_setting | object | Notification center / quick actions: screen_notify_id, notify_status, allow_change_direction, allow_flashlight, switch_app, terminate_app, usb_notify, slide_type |
| Config.browser_setting | object | Android kiosk browser: browser_setting_id, show_address, allow_multiple_tag, open_stealth_mode, adjust_page_by_device, disable_sys_back_btn, show_pc_mode_btn, auto_remove_cache, auto_remove_cache_interval, open_print_btn, allow_auto_complete, disable_pull_to_refresh |
| Config.windows_browser_setting | object | Windows browser: windows_browser_setting_id, allow_dev_tools, cookie_policy, allow_javascript, allow_open_window, allow_store_new_password, allow_clear_history, login_rule, allow_geolocation, search_suggest, default_browser, allow_print, allow_incognito_mode, allow_auto_complete |
| Config.app_blacklist_setting | array | Policy blocked apps. Android items: pkg_id, app_name, icon, blacklist_app_relative_id, select_blacklist_app_id. Windows items may instead be Windows app objects (same shape as whitelist Windows items) |
| Config.policy_app_whitelist_setting | array | Policy allowed apps: pkg_id, app_name, icon, whitelist_app_relative_id, select_whitelist_app_id (plus Windows app object fields on Windows) |
| StatusCode | number | 200 = completed (check ErrorMessage), -1 = parameter validation error, 500 = network exception |
| ErrorMessage | string | Empty string on success; failure reason otherwise |
| Hint | string | Next-action guidance on error; empty on success |
| Retryable | boolean | true = transient error (same params may succeed on retry); false = persistent error or bad params |
| OriginalStatusCode | number | Upstream HTTP status code; 0 = no upstream request was made |
3.3 Tricky Field Semantics (Enums and Switches)
| Field | Type | Meaning | |
|---|---|---|---|
| screen_notify_setting.slide_type | int enum | Slide-out position of the notification/quick-action panel: 1 = right, 2 = left, 3 = bottom | |
| brand_setting.app_icon_format | int | Kiosk desktop app icon SIZE, not an image format or shape. Common values: 40 = small, 60 = medium, 80 = large; a larger number means a bigger icon | |
| website_whitelist_setting[].is_destop_shortcut | string enum | "Yes" \ | "No" — whether a desktop shortcut is created for the website. The field name is a legacy misspelling of "desktop" kept for compatibility — use the misspelled name as-is |
| policy_config_file_setting.* (fields prefixed allow_ / enable_ / is_) | int switch | 0 = off/not allowed, 1 = on/allowed. E.g. allow_ctl_alarm_area / allow_ctl_alarm_volume = whether the device user may adjust the alarm-volume section (not a geographic area) | |
| policy_config_file_setting.kiosk_about_hide_trigger_time, marquee_offset, marquee_speed | number | Mirror the Admin Console setting; their units are defined by the device client — treat as opaque numbers, do not guess units |
> base_setting uses the same readable enum values as List Policy and Kiosk Configurations: status is On or Off; type is Policy, Kiosk, or Windows Policy; platform_type is Android or Windows.
4. Examples
4.1 Basic Example: Get a Configuration by Id
Request Parameters:
{
"Id": 10023
}
Response: See the full success response in Section 3.1.
4.2 Advanced Example: Verify Single-App Kiosk Setup
Scenario: Confirm which app a single-app Kiosk configuration launches and whether it always runs.
Request Parameters:
{
"Id": 10023
}
What to read in the response: Config.screen_single_setting.pkg_id (the pinned app package), app_always_run (1 = keep the app running), app_restart_interval (restart interval; unit defined by device client).
4.3 Error Example: Configuration Does Not Exist
Request Parameters:
{
"Id": 999999
}
Response:
{
"Config": {},
"Hint": "Configuration file was not found; obtain id via 'List Policy and Kiosk Configurations' and retry.",
"Retryable": false,
"OriginalStatusCode": 200,
"StatusCode": 200,
"ErrorMessage": "config file not exist"
}
Note: A not-found configuration returns StatusCode = 200 with Config: {}, non-empty ErrorMessage, and a recovery Hint — not -1 or 500.
4.4 Error Example: Invalid Id
Request Parameters (error — Id is 0):
{
"Id": 0
}
Response:
{
"Config": {},
"Hint": "Obtain id via 'List Policy and Kiosk Configurations', then provide a positive integer id and retry.",
"Retryable": false,
"OriginalStatusCode": 0,
"StatusCode": -1,
"ErrorMessage": "Invalid id. Must be a positive integer."
}
5. Error Handling
5.1 AB Three-Layer Error Codes
| StatusCode | Meaning | Use Case | Agent Response |
|---|---|---|---|
| -1 | Parameter validation error | Id not a positive integer, or empty access_token (no request sent; OriginalStatusCode = 0) | Do not retry; fix parameters and call again |
| 200 | Business success or business error | HTTP request succeeded; check ErrorMessage | Empty ErrorMessage = success; non-empty = business error (read Hint) |
| 500 | Network/request exception | Timeout (60s), connection failure, HTTP non-200 (including 429 rate limit) | Retry only when Retryable == true (max 2 times, 5-second interval) |
This Action's StatusCode semantics:
- HTTP 429 → StatusCode = 500, Retryable = true (wait 10-30 seconds and retry once)
- Other HTTP non-200 → StatusCode = 500; Retryable = true only for HTTP 500/502/503/504
- Business errors (code != 1 in the upstream body) → StatusCode = 200 with non-empty ErrorMessage and Config: {}; read Hint for recovery guidance:
- Auth-related failures → Hint typically asks to refresh the OAuth2 access token (Retryable = false)
- Rate-limit failures → Hint typically asks to wait 10-30 seconds and retry (Retryable = true)
- Configuration not found → ErrorMessage such as config file not exist; obtain a valid Id via List Policy and Kiosk Configurations
- Server-side failures → Hint may suggest retry later or contact support
5.2 Common Errors
| StatusCode | ErrorMessage Example | Cause | Fix |
|---|---|---|---|
| -1 | Invalid id. Must be a positive integer. | Id is 0, negative, or not an integer | Provide a positive integer Id |
| -1 | access_token is required and cannot be empty. | Credential not configured | Configure AirDroid Business OAuth2 Credential in the GI node |
| 200 | config file not exist | Configuration Id does not exist or is not visible to this account | Obtain a valid Id via List Policy and Kiosk Configurations |
| 500 | Rate limited. Please retry after a few seconds. | HTTP 429 | Wait 10-30 seconds, retry once |
| 500 | Request timeout after 60 seconds. | Request timeout | Retry once; if it persists, retry later |
5.3 Agent Self-Healing Decision Table
| Condition | Handling Strategy |
|---|---|
| StatusCode == 200 and ErrorMessage == "" | Success; read Config sections |
| StatusCode == 200 and ErrorMessage != "" | Business error; follow Hint (e.g. refresh token, fix Id) |
| StatusCode == -1 | Fix input parameters or Credential; do not retry as-is |
| StatusCode == 500 and Retryable == true | Retry up to 2 times (5-second interval) |
| StatusCode == 500 and Retryable == false | Do not retry; collect ErrorMessage + OriginalStatusCode and escalate |
6. Best Practices
6.1 Performance Optimization
- The full Config object can be large (policy settings have many keys). Extract only the sections you need in downstream nodes instead of passing the whole object along.
- Cache the Id → settings mapping within a workflow run; the operation is read-only and safe to call repeatedly, but avoid redundant calls.
6.2 Security Considerations
🟢 Read operation: No destructive side effects.
- brand_setting may contain URLs and display text; policy_config_file_setting reflects security restrictions — treat the output as internal configuration data.
6.3 Idempotency
Idempotency: Naturally idempotent. Read-only; multiple calls with the same Id return the same result unless the configuration was modified in between.
7. Related Tools
7.1 Prerequisite Tools
| Tool Name | Purpose |
|---|---|
| List Policy and Kiosk Configurations | Obtain config_id (used as Id here); search by name |
7.2 Follow-up Tools
| Tool Name | Purpose |
|---|---|
| Get Config File Deployment Status | Check per-device deployment status of this configuration (use the same Id as ConfigId) |
7.3 Similar Tool Comparison
| Tool Name | Use Case | Difference |
|---|---|---|
| Get a Configuration | Full settings of one configuration | Complete settings object by Id |
| List Policy and Kiosk Configurations | Browse/search configurations | Paginated summaries; no full policy detail |
| Get Config File Deployment Status | Rollout verification | Per-device progress/failure records, not settings |
8. Tool Chains
8.1 Audit a Configuration by Name
Scenario: Review the full settings of a configuration when you only know its name.
Tool Chain:
List Policy and Kiosk Configurations → Get a Configuration
Steps:
- Call List Policy and Kiosk Configurations with Name = "Retail Kiosk"
- Take Configs[0].base_setting.config_id
- Call Get a Configuration with that Id and inspect the returned sections
8.2 Verify Settings, Then Check Rollout
Scenario: Confirm a configuration's settings are correct, then verify it deployed successfully to devices.
Tool Chain:
Get a Configuration → Get Config File Deployment Status
Steps:
- Call Get a Configuration with the configuration Id; verify Config sections match expectations
- Call Get Config File Deployment Status with the same Id as ConfigId
- Iterate ApplyInfo.open_status[] and check each device's progress is Success
Appendix Reference:
- Field Reference: ./Field Reference.md
- Error Code Quick Reference: ./Error Codes.md
Leave a Reply.