Tool Name: airdroid_business_policy_kiosk_configuration_list
Risk Level: 🟢 Low Risk
Execution Mode: âš¡ Synchronous
Category: Policy & Kiosk Configuration
Quick Start (Copy & Use)
Summary: List Policy and Kiosk configurations in the account with pagination, optional name filtering (case-insensitive substring), and sorting. The list mixes Policy and Kiosk rows — distinguish them by base_setting.type.
Prerequisites: A valid OAuth2 AccessToken configured in the GI node Credential. All inputs are optional.
Success Criteria: StatusCode == 200 and ErrorMessage == "".
What to Do Next: Take Configs[].base_setting.config_id and pass it to Get a Configuration (full settings) or Get Config File Deployment Status (per-device deployment status).
Minimal Request Example (recommended to copy directly):
{
"PageIndex": 1,
"PageSize": 50,
"Name": "",
"Order": "create_time",
"Ascending": false
}
Minimal Response Example:
{
"Configs": [
{
"base_setting": {
"config_id": 10023,
"config_name": "Retail Kiosk EU",
"type": "Kiosk",
"platform_type": "Android",
"status": "On",
"limit_status": "Effective",
"config_password": "",
"relative_setting_id": 0,
"create_time": "2025-11-03 09:12:45",
"update_time": "2026-05-20 14:30:02"
}
}
],
"Pagination": {
"total": 1,
"page_size": 50,
"page_index": 1,
"last_page": 1
},
"Hint": "",
"Retryable": false,
"OriginalStatusCode": 200,
"StatusCode": 200,
"ErrorMessage": ""
}
Recipes (Common Recipes)
Recipe 1: List All Configurations (First Page)
When to use: Browse the account's configuration inventory.
{
"PageIndex": 1,
"PageSize": 50,
"Name": "",
"Order": "create_time",
"Ascending": false
}
Recipe 2: Search Configurations by Name Keyword
When to use: Resolve a configuration name to its config_id before calling Get a Configuration or apply flows. Matching is a case-insensitive substring match against base_setting.config_name.
{
"PageIndex": 1,
"PageSize": 50,
"Name": "Retail Kiosk",
"Order": "create_time",
"Ascending": false
}
Recipe 3: Most Recently Updated First
When to use: Audit which configurations changed recently.
{
"PageIndex": 1,
"PageSize": 20,
"Name": "",
"Order": "update_time",
"Ascending": false
}
Recipe 4: Paginate Through All Pages
When to use: Iterate the full inventory. After each call, if Pagination.page_index < Pagination.last_page, call again with PageIndex + 1.
{
"PageIndex": 2,
"PageSize": 50,
"Name": "",
"Order": "config_name",
"Ascending": true
}
1. Overview
1.1 Description
Retrieve a paginated list of Policy and Kiosk configurations with:
- Optional name keyword filtering (case-insensitive substring on base_setting.config_name)
- Sorting by config_name, create_time, or update_time in ascending or descending order
- Mixed list: Policy and Kiosk configurations are returned together. There is no input type filter — distinguish rows by the returned base_setting.type (Policy | Kiosk | Windows Policy)
1.2 When to Use
- Browse inventory: See what Policy/Kiosk configurations exist in the account
- Resolve name → config_id: Search by partial name before using a configuration Id elsewhere
- Audit changes: Sort by update_time descending to find recently modified configurations
- Prepare apply/update/replicate flows: List existing configurations first
Don't use when:
- You already have the configuration Id and need full settings — use Get a Configuration
- You need per-device deployment progress — use Get Config File Deployment Status
- You need to create or update a configuration — this tool is list-only
1.3 Execution Mode and Response
This operation is synchronous and returns:
- Configs: Array of configuration objects (each with base_setting and optional child settings)
- Pagination: Pagination metadata (total, page_size, page_index, last_page)
- 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 |
1.5 Differences from Similar Tools
| Tool | Use Case | Key Difference |
|---|---|---|
| List Policy and Kiosk Configurations | Browse/search configuration inventory | Paginated list, name filter, sorting |
| Get a Configuration | Full settings of one configuration | Requires exact Id; returns the complete settings object |
| Get Config File Deployment Status | Per-device deployment status | Returns rollout progress per device, not the configuration list |
2. Inputs
2.1 Parameter List
| Parameter | Type | Required | Default | Description | ||
|---|---|---|---|---|---|---|
| PageIndex | number | No | 1 | Page index, starting from 1 | ||
| PageSize | number | No | 50 (GI node default) | Records per page, range 1-50 | ||
| Name | string | No | "" | Configuration name keyword (case-insensitive substring match); empty = no filter | ||
| Order | string | No | "create_time" | Sort field: config_name \ | create_time \ | update_time |
| Ascending | bool | No | false | Sort direction: true = ascending, false = descending |
2.2 Parameter Details
`PageIndex`
- Type: number
- Format: Positive integer starting from 1. Values < 1 return StatusCode = -1
- Example: 1
`PageSize`
- Type: number
- Format: Integer 1-50. Values outside this range return StatusCode = -1 (Invalid page_size. Must be between 1 and 50.)
- Example: 50
- Why recommended: Set explicitly to control response size; each config row can include large nested settings objects.
> The GI node prefills 50. The accepted runtime range is 1-50; values above 50 return StatusCode = -1.
`Name`
- Type: string
- Format: Keyword up to 200 characters (longer returns StatusCode = -1). Performs a case-insensitive substring match against base_setting.config_name. Empty string = no filter
- Example: "Retail Kiosk"
- Why recommended: Narrow the result set before paginating; there is no type filter, so a good name convention plus this keyword is the main way to scope results.
`Order`
- Type: string
- Allowed values (whitelist; any other value returns StatusCode = -1):
- config_name — sort alphabetically by configuration name
- create_time — sort by configuration creation time
- update_time — sort by last update time
- Default: create_time
- Example: "update_time"
`Ascending`
- Type: bool
- Values: true = ascending (A to Z, 0 to 9, oldest to newest); false = descending (Z to A, 9 to 0, newest to oldest)
- Default: false
- Example: false
> Use Order (field name) and Ascending (boolean) for sorting. Sort and SortType are not valid inputs.
2.3 Parameter Combination Logic
- All parameters are optional and combine as AND: the name filter is applied first, then sorting, then pagination.
- Pagination.total reflects the count after the Name filter.
3. Outputs
3.1 Response Example
Success response:
{
"Configs": [
{
"base_setting": {
"config_id": 10023,
"account_id": 8001234,
"config_name": "Retail Kiosk EU",
"config_remark": "Kiosk config for EU retail tablets",
"type": "Kiosk",
"platform_type": "Android",
"status": "On",
"limit_status": "Effective",
"config_password": "2580",
"relative_setting_id": 0,
"create_time": "2025-11-03 09:12:45",
"update_time": "2026-05-20 14:30:02"
},
"brand_setting": {
"brand_id": 501,
"brand_name": "Contoso Retail"
}
},
{
"base_setting": {
"config_id": 10031,
"account_id": 8001234,
"config_name": "Warehouse Policy",
"config_remark": "",
"type": "Policy",
"platform_type": "Android",
"status": "On",
"limit_status": "Effective",
"config_password": "",
"relative_setting_id": 0,
"create_time": "2026-01-12 11:05:00",
"update_time": "2026-04-02 16:44:10"
},
"policy_config_file_setting": {
"allow_ctl_alarm_volume": 1
}
}
],
"Pagination": {
"total": 2,
"page_size": 50,
"page_index": 1,
"last_page": 1
},
"Hint": "",
"Retryable": false,
"OriginalStatusCode": 200,
"StatusCode": 200,
"ErrorMessage": ""
}
Error response (invalid Order):
{
"Configs": [],
"Pagination": {},
"Hint": "Set Order to config_name, create_time, or update_time, then retry.",
"Retryable": false,
"OriginalStatusCode": 0,
"StatusCode": -1,
"ErrorMessage": "Invalid Order. Allowed values: config_name, create_time, update_time."
}
3.2 Field Descriptions
| Field Path | Type | Description | ||
|---|---|---|---|---|
| Configs | object-array | Configuration list for the current page. Mixed Policy and Kiosk rows | ||
| Configs[].base_setting.config_id | number | Unique configuration Id — use as Id in Get a Configuration and ConfigId in Get Config File Deployment Status | ||
| Configs[].base_setting.config_name | string | Administrator-defined name | ||
| Configs[].base_setting.type | string | Configuration type: Policy \ | Kiosk \ | Windows Policy |
| Configs[].base_setting.platform_type | string | Platform: Android \ | Windows | |
| Configs[].base_setting.status | string | Configuration switch: On \ | Off. Do not confuse with limit_status | |
| Configs[].base_setting.limit_status | string | Quota/slot effectiveness: Effective \ | Ineffective. A config is generally usable for Get/apply when status is On and limit_status is Effective; Ineffective configs may be blocked by Get a Configuration | |
| Configs[].base_setting.config_password | string | Kiosk exit / settings access password for this configuration (not an account login password). Treat as sensitive | ||
| Configs[].base_setting.relative_setting_id | number | Internal legacy relative-settings association Id. Often 0 on newer configs; it is not a config_id — Agents can ignore it | ||
| Configs[].base_setting.create_time | string | Creation timestamp | ||
| Configs[].base_setting.update_time | string | Last update timestamp | ||
| Configs[].base_setting.account_id | number | Business account Id (optional) | ||
| Configs[].base_setting.config_remark | string | Remark/description (optional) | ||
| Configs[].brand_setting | object | Brand display settings (optional; present when configured) | ||
| Configs[].policy_config_file_setting | object | Policy settings (optional; present when the configuration contains policy data) | ||
| Pagination.total | number | Total configurations matching the query across all pages | ||
| Pagination.page_size | number | Records per page as requested | ||
| Pagination.page_index | number | Current page number (1-indexed) | ||
| Pagination.last_page | number | Last page number | ||
| 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; false = persistent error or bad params | ||
| OriginalStatusCode | number | Upstream HTTP status code; 0 = no upstream request was made |
3.3 Status Code / Enum Value Mapping
| Field | Value | Meaning |
|---|---|---|
| base_setting.type | "Policy" | Android policy configuration |
| base_setting.type | "Kiosk" | Kiosk (locked-down launcher) configuration |
| base_setting.type | "Windows Policy" | Windows policy configuration |
| base_setting.platform_type | "Android" / "Windows" | Target platform |
| base_setting.status | "On" / "Off" | Configuration switch on/off |
| base_setting.limit_status | "Effective" / "Ineffective" | Whether the configuration counts as effective under the account quota/slots |
3.4 Pagination
| Field | Description |
|---|---|
| Pagination.page_index | Current page index (starts at 1) |
| Pagination.page_size | Records per page |
| Pagination.total | Total records matching the query (after Name filter) |
| Pagination.last_page | Last page number |
Paging strategy:
- When page_index < last_page, call again with PageIndex + 1
- Use Name to narrow the result set before paginating
- PageSize range is 1-50
4. Examples
4.1 Basic Example: List All Configurations
Request Parameters:
{
"PageIndex": 1,
"PageSize": 50,
"Name": "",
"Order": "create_time",
"Ascending": false
}
Response: See the success response in Section 3.1.
4.2 Advanced Example: Find a Kiosk Configuration by Name, Sorted A→Z
Request Parameters:
{
"PageIndex": 1,
"PageSize": 20,
"Name": "kiosk",
"Order": "config_name",
"Ascending": true
}
Then filter the returned Configs[] client-side by base_setting.type == "Kiosk" (there is no server-side type filter).
4.3 Error Example: PageSize Out of Range
Request Parameters (error — PageSize is 100):
{
"PageIndex": 1,
"PageSize": 100,
"Name": "",
"Order": "create_time",
"Ascending": false
}
Response:
{
"Configs": [],
"Pagination": {},
"Hint": "Set page_size to an integer between 1 and 50, then retry.",
"Retryable": false,
"OriginalStatusCode": 0,
"StatusCode": -1,
"ErrorMessage": "Invalid page_size. Must be between 1 and 50."
}
5. Error Handling
5.1 AB Three-Layer Error Codes
| StatusCode | Meaning | Use Case | Agent Response |
|---|---|---|---|
| -1 | Parameter validation error | Invalid PageIndex/PageSize/Name/Order, or empty token (no request sent; OriginalStatusCode = 0) | Do not retry; fix parameters |
| 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, 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, non-empty ErrorMessage, Retryable = false
5.2 Common Errors
| StatusCode | ErrorMessage Example | Cause | Fix |
|---|---|---|---|
| -1 | Invalid page_index. Must be a positive integer (≥1). | PageIndex < 1 or not an integer | Set PageIndex to 1 or higher |
| -1 | Invalid page_size. Must be between 1 and 50. | PageSize out of range | Set PageSize to 1-50 |
| -1 | Invalid name. Length must not exceed 200 characters. | Name keyword too long | Shorten to ≤ 200 characters |
| -1 | Invalid Order. Allowed values: config_name, create_time, update_time. | Unsupported sort field | Use one of the three allowed values |
| -1 | access_token is required and cannot be empty. | Credential not configured | Configure AirDroid Business OAuth2 Credential |
| 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; reduce PageSize or filter scope if persistent |
5.3 Agent Self-Healing Decision Table
| Condition | Handling Strategy |
|---|---|
| StatusCode == 200 and ErrorMessage == "" | Success; read Configs and Pagination |
| StatusCode == 200 and ErrorMessage != "" | Business error; follow Hint |
| 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; escalate with ErrorMessage + OriginalStatusCode |
6. Best Practices
6.1 Performance Optimization
- Filter by Name before paginating: Reduces total pages and response size
- Keep PageSize modest (20-50): Config rows can carry large nested settings objects
- Sort by update_time descending when auditing recent changes, so page 1 contains what you need
6.2 Security Considerations
🟢 Read operation: No destructive side effects.
- base_setting.config_password (Kiosk exit/settings password) is returned in the list — treat it as sensitive; do not log it or expose it in user-facing summaries.
6.3 Idempotency
Idempotency: Naturally idempotent. Read-only; identical parameters return the same result unless configurations changed in between.
7. Related Tools
7.1 Follow-up Tools
| Tool Name | Purpose |
|---|---|
| Get a Configuration | Get full settings of a configuration (use base_setting.config_id as Id) |
| Get Config File Deployment Status | Check per-device deployment status (use base_setting.config_id as ConfigId) |
7.2 Similar Tool Comparison
| Tool Name | Use Case | Difference |
|---|---|---|
| List Policy and Kiosk Configurations | Browse/search inventory | Paginated summaries with name filter and sorting |
| Get a Configuration | Single configuration detail | Complete settings object; requires exact Id |
| Get Config File Deployment Status | Rollout verification | Per-device progress records for one configuration |
8. Tool Chains
8.1 Resolve Configuration Name to Full Settings
Scenario: You know a configuration by name and need its full settings.
Tool Chain:
List Policy and Kiosk Configurations → Get a Configuration
Steps:
- Call List Policy and Kiosk Configurations with Name = "Retail Kiosk"
- Pick the intended row from Configs[] (check base_setting.type and platform_type)
- Call Get a Configuration with Id = base_setting.config_id
8.2 Audit Deployment of Recently Updated Configurations
Scenario: Find recently changed configurations and verify their rollout status.
Tool Chain:
List Policy and Kiosk Configurations → Get Config File Deployment Status
Steps:
- Call List Policy and Kiosk Configurations with Order = "update_time", Ascending = false
- For each configuration of interest, call Get Config File Deployment Status with ConfigId = base_setting.config_id
- Check each device's progress in ApplyInfo.open_status[]
Appendix Reference:
- Field Reference: ./Field Reference.md
- Error Code Quick Reference: ./Error Codes.md
Leave a Reply.