{ "info": { "_postman_id": "c1015dc7-f3fc-4a81-bf01-a9ba56f16e90", "name": "ThingsBoard Admin admin-controller mobile-app-bundle-controller API", "description": "ThingsBoard Admin API \u2014 subset of the ThingsBoard REST API (open-source IoT platform). Covers: Admin, Audit Log, Event, Usage Info, Queue, Queue Stats, Mail Config Template, Qr Code Settings, Job.\n\nContact Support:\n Name: ThingsBoard team\n Email: info@thingsboard.io", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "lastUpdatedBy": "35240", "uid": "35240-c1015dc7-f3fc-4a81-bf01-a9ba56f16e90" }, "item": [ { "name": "api", "item": [ { "name": "mobile", "item": [ { "name": "bundle", "item": [ { "name": "{id}", "item": [ { "name": "oauth2Clients", "item": [ { "name": "Update Oauth2 Clients (updateOauth2Clients)", "id": "c6064020-5996-4be4-9d62-59edae6577cc", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "PUT", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "[\n \"\",\n \"\"\n]", "options": { "raw": { "headerFamily": "json", "language": "json" } } }, "url": { "raw": "{{baseUrl}}/api/mobile/bundle/:id/oauth2Clients", "host": [ "{{baseUrl}}" ], "path": [ "api", "mobile", "bundle", ":id", "oauth2Clients" ], "variable": [ { "id": "d6f0d85b-b885-4a5e-ac42-16f7cbd31ad6", "key": "id", "value": "", "description": "(Required) " } ] }, "description": "Update oauth2 clients of the specified mobile app bundle.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority." }, "response": [ { "id": "30c0995b-f6b2-4efc-842b-c0784a022137", "name": "OK", "originalRequest": { "method": "PUT", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "[\n \"\",\n \"\"\n]", "options": { "raw": { "headerFamily": "json", "language": "json" } } }, "url": { "raw": "{{baseUrl}}/api/mobile/bundle/:id/oauth2Clients", "host": [ "{{baseUrl}}" ], "path": [ "api", "mobile", "bundle", ":id", "oauth2Clients" ], "variable": [ { "key": "id" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "text", "header": [], "cookie": [], "responseTime": null, "body": null, "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-30c0995b-f6b2-4efc-842b-c0784a022137" } ], "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-c6064020-5996-4be4-9d62-59edae6577cc" } ], "id": "220defee-34d9-4935-bf02-afd609491133", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-220defee-34d9-4935-bf02-afd609491133" }, { "name": "Delete Mobile App Bundle by ID (deleteMobileAppBundle)", "id": "5d30eacd-bc5a-4e11-b23f-5e3e02b86455", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "DELETE", "header": [], "url": { "raw": "{{baseUrl}}/api/mobile/bundle/:id", "host": [ "{{baseUrl}}" ], "path": [ "api", "mobile", "bundle", ":id" ], "variable": [ { "id": "c0a4a674-80d5-4a91-aaf9-0de83e1b4860", "key": "id", "value": "", "description": "(Required) " } ] }, "description": "Deletes Mobile App Bundle by ID. Referencing non-existing mobile app bundle Id will cause an error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority." }, "response": [ { "id": "8e364da9-0c55-48c6-9fcd-bdba777d4eaa", "name": "OK", "originalRequest": { "method": "DELETE", "header": [], "url": { "raw": "{{baseUrl}}/api/mobile/bundle/:id", "host": [ "{{baseUrl}}" ], "path": [ "api", "mobile", "bundle", ":id" ], "variable": [ { "key": "id" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "text", "header": [], "cookie": [], "responseTime": null, "body": null, "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-8e364da9-0c55-48c6-9fcd-bdba777d4eaa" } ], "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-5d30eacd-bc5a-4e11-b23f-5e3e02b86455" } ], "id": "6b77aea1-e653-42c1-8dfe-8725562b2fb6", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-6b77aea1-e653-42c1-8dfe-8725562b2fb6" }, { "name": "infos", "item": [ { "name": "Get Mobile App Bundle Infos (getTenantMobileAppBundleInfos)", "id": "9dd4db87-af16-4cb4-8aa2-4272718fe834", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/api/mobile/bundle/infos?pageSize=&page=&textSearch=&sortProperty=&sortOrder=", "host": [ "{{baseUrl}}" ], "path": [ "api", "mobile", "bundle", "infos" ], "query": [ { "description": "(Required) Maximum amount of entities in a one page", "key": "pageSize", "value": "" }, { "description": "(Required) Sequence number of page starting from 0", "key": "page", "value": "" }, { "description": "Case-insensitive 'substring' filter based on app's name", "key": "textSearch", "value": "" }, { "description": "Property of entity to sort by", "key": "sortProperty", "value": "" }, { "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "key": "sortOrder", "value": "" } ] }, "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority." }, "response": [ { "id": "99f53cce-2a73-482a-9eb7-2d6f21265830", "name": "OK", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/api/mobile/bundle/infos?pageSize=&page=&textSearch=&sortProperty=&sortOrder=", "host": [ "{{baseUrl}}" ], "path": [ "api", "mobile", "bundle", "infos" ], "query": [ { "description": "(Required) Maximum amount of entities in a one page", "key": "pageSize", "value": "" }, { "description": "(Required) Sequence number of page starting from 0", "key": "page", "value": "" }, { "description": "Case-insensitive 'substring' filter based on app's name", "key": "textSearch", "value": "" }, { "description": "Property of entity to sort by", "key": "sortProperty", "value": "" }, { "description": "Sort order. ASC (ASCENDING) or DESC (DESCENDING)", "key": "sortOrder", "value": "" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"data\": [\n {\n \"title\": \"\",\n \"id\": {\n \"entityType\": \"JOB\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"tenantId\": {\n \"entityType\": \"TENANT\",\n \"id\": \"\"\n },\n \"description\": \"\",\n \"androidAppId\": {\n \"entityType\": \"ALARM\",\n \"id\": \"\"\n },\n \"iosAppId\": {\n \"entityType\": \"NOTIFICATION_TARGET\",\n \"id\": \"\"\n },\n \"layoutConfig\": {\n \"pages\": [\n {\n \"visible\": \"\",\n \"type\": \"WEB_VIEW\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n },\n {\n \"visible\": \"\",\n \"type\": \"DASHBOARD\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n }\n ]\n },\n \"oauth2Enabled\": \"\",\n \"androidPkgName\": \"\",\n \"iosPkgName\": \"\",\n \"oauth2ClientInfos\": [\n {\n \"id\": {\n \"entityType\": \"ASSET\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"title\": \"\",\n \"providerName\": \"\",\n \"platforms\": [\n \"WEB\",\n \"WEB\"\n ],\n \"name\": \"\"\n },\n {\n \"id\": {\n \"entityType\": \"RULE_CHAIN\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"title\": \"\",\n \"providerName\": \"\",\n \"platforms\": [\n \"ANDROID\",\n \"IOS\"\n ],\n \"name\": \"\"\n }\n ],\n \"qrCodeEnabled\": \"\",\n \"name\": \"\"\n },\n {\n \"title\": \"\",\n \"id\": {\n \"entityType\": \"TENANT\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"tenantId\": {\n \"entityType\": \"TENANT\",\n \"id\": \"\"\n },\n \"description\": \"\",\n \"androidAppId\": {\n \"entityType\": \"WIDGETS_BUNDLE\",\n \"id\": \"\"\n },\n \"iosAppId\": {\n \"entityType\": \"AI_MODEL\",\n \"id\": \"\"\n },\n \"layoutConfig\": {\n \"pages\": [\n {\n \"visible\": \"\",\n \"type\": \"WEB_VIEW\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n },\n {\n \"visible\": \"\",\n \"type\": \"CUSTOM\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n }\n ]\n },\n \"oauth2Enabled\": \"\",\n \"androidPkgName\": \"\",\n \"iosPkgName\": \"\",\n \"oauth2ClientInfos\": [\n {\n \"id\": {\n \"entityType\": \"RULE_CHAIN\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"title\": \"\",\n \"providerName\": \"\",\n \"platforms\": [\n \"ANDROID\",\n \"ANDROID\"\n ],\n \"name\": \"\"\n },\n {\n \"id\": {\n \"entityType\": \"DASHBOARD\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"title\": \"\",\n \"providerName\": \"\",\n \"platforms\": [\n \"IOS\",\n \"IOS\"\n ],\n \"name\": \"\"\n }\n ],\n \"qrCodeEnabled\": \"\",\n \"name\": \"\"\n }\n ],\n \"totalPages\": \"\",\n \"totalElements\": \"\",\n \"hasNext\": \"\"\n}", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-99f53cce-2a73-482a-9eb7-2d6f21265830" } ], "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-9dd4db87-af16-4cb4-8aa2-4272718fe834" } ], "id": "f6f70204-26aa-4415-ab19-64d099a3dda7", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-f6f70204-26aa-4415-ab19-64d099a3dda7" }, { "name": "info", "item": [ { "name": "{id}", "item": [ { "name": "Get Mobile App Bundle Info by Id (getMobileAppBundleInfoById)", "id": "3dd8def2-4e5f-46aa-a7d3-63a53fed2772", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/api/mobile/bundle/info/:id", "host": [ "{{baseUrl}}" ], "path": [ "api", "mobile", "bundle", "info", ":id" ], "variable": [ { "id": "9252546f-bfa7-4541-ad46-8815fde725ab", "key": "id", "value": "", "description": "(Required) " } ] }, "description": "\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority." }, "response": [ { "id": "fd808dc2-38ff-414b-a86b-4056d184ad33", "name": "OK", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/api/mobile/bundle/info/:id", "host": [ "{{baseUrl}}" ], "path": [ "api", "mobile", "bundle", "info", ":id" ], "variable": [ { "key": "id" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"title\": \"\",\n \"id\": {\n \"entityType\": \"RPC\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"tenantId\": {\n \"entityType\": \"TENANT\",\n \"id\": \"\"\n },\n \"description\": \"\",\n \"androidAppId\": {\n \"entityType\": \"CUSTOMER\",\n \"id\": \"\"\n },\n \"iosAppId\": {\n \"entityType\": \"ASSET\",\n \"id\": \"\"\n },\n \"layoutConfig\": {\n \"pages\": [\n {\n \"visible\": \"\",\n \"type\": \"DEFAULT\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n },\n {\n \"visible\": \"\",\n \"type\": \"CUSTOM\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n }\n ]\n },\n \"oauth2Enabled\": \"\",\n \"androidPkgName\": \"\",\n \"iosPkgName\": \"\",\n \"oauth2ClientInfos\": [\n {\n \"id\": {\n \"entityType\": \"WIDGETS_BUNDLE\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"title\": \"\",\n \"providerName\": \"\",\n \"platforms\": [\n \"ANDROID\",\n \"WEB\"\n ],\n \"name\": \"\"\n },\n {\n \"id\": {\n \"entityType\": \"DEVICE_PROFILE\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"title\": \"\",\n \"providerName\": \"\",\n \"platforms\": [\n \"WEB\",\n \"ANDROID\"\n ],\n \"name\": \"\"\n }\n ],\n \"qrCodeEnabled\": \"\",\n \"name\": \"\"\n}", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-fd808dc2-38ff-414b-a86b-4056d184ad33" } ], "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-3dd8def2-4e5f-46aa-a7d3-63a53fed2772" } ], "id": "f1a64841-324c-4d8f-887c-fc6c9ec7fdc9", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-f1a64841-324c-4d8f-887c-fc6c9ec7fdc9" } ], "id": "462d3d1a-9cc2-4295-a71e-93b979f9655b", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-462d3d1a-9cc2-4295-a71e-93b979f9655b" }, { "name": "Save or Update Mobile App Bundle (saveMobileAppBundle)", "id": "4030bfaf-218e-47ff-b7a4-92fa83edc5c1", "protocolProfileBehavior": { "disableBodyPruning": true }, "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"title\": \"\",\n \"id\": {\n \"entityType\": \"CALCULATED_FIELD\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"tenantId\": {\n \"entityType\": \"TENANT\",\n \"id\": \"\"\n },\n \"description\": \"\",\n \"androidAppId\": {\n \"entityType\": \"OAUTH2_CLIENT\",\n \"id\": \"\"\n },\n \"iosAppId\": {\n \"entityType\": \"RULE_NODE\",\n \"id\": \"\"\n },\n \"layoutConfig\": {\n \"pages\": [\n {\n \"visible\": \"\",\n \"type\": \"DASHBOARD\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n },\n {\n \"visible\": \"\",\n \"type\": \"DASHBOARD\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n }\n ]\n },\n \"oauth2Enabled\": \"\",\n \"name\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } }, "url": { "raw": "{{baseUrl}}/api/mobile/bundle?oauth2ClientIds=&oauth2ClientIds=", "host": [ "{{baseUrl}}" ], "path": [ "api", "mobile", "bundle" ], "query": [ { "description": "A list of oauth2 client ids, separated by comma ','", "key": "oauth2ClientIds", "value": "" }, { "description": "A list of oauth2 client ids, separated by comma ','", "key": "oauth2ClientIds", "value": "" } ] }, "description": "Create or update the Mobile app bundle that represents tha pair of ANDROID and IOS app and mobile settings like oauth2 clients, self-registration and layout configuration.When creating mobile app bundle, platform generates Mobile App Bundle Id as [time-based UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_1_(date-time_and_MAC_address)). The newly created Mobile App Bundle Id will be present in the response. Referencing non-existing Mobile App Bundle Id will cause 'Not Found' error.\n\nAvailable for users with 'SYS_ADMIN' or 'TENANT_ADMIN' authority." }, "response": [ { "id": "21b6b891-1372-4888-be95-74f2baae0509", "name": "OK", "originalRequest": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" }, { "key": "Accept", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"title\": \"\",\n \"id\": {\n \"entityType\": \"CALCULATED_FIELD\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"tenantId\": {\n \"entityType\": \"TENANT\",\n \"id\": \"\"\n },\n \"description\": \"\",\n \"androidAppId\": {\n \"entityType\": \"OAUTH2_CLIENT\",\n \"id\": \"\"\n },\n \"iosAppId\": {\n \"entityType\": \"RULE_NODE\",\n \"id\": \"\"\n },\n \"layoutConfig\": {\n \"pages\": [\n {\n \"visible\": \"\",\n \"type\": \"DASHBOARD\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n },\n {\n \"visible\": \"\",\n \"type\": \"DASHBOARD\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n }\n ]\n },\n \"oauth2Enabled\": \"\",\n \"name\": \"\"\n}", "options": { "raw": { "headerFamily": "json", "language": "json" } } }, "url": { "raw": "{{baseUrl}}/api/mobile/bundle?oauth2ClientIds=", "host": [ "{{baseUrl}}" ], "path": [ "api", "mobile", "bundle" ], "query": [ { "description": "A list of oauth2 client ids, separated by comma ','", "key": "oauth2ClientIds", "value": "" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "responseTime": null, "body": "{\n \"title\": \"\",\n \"id\": {\n \"entityType\": \"CALCULATED_FIELD\",\n \"id\": \"\"\n },\n \"createdTime\": \"\",\n \"tenantId\": {\n \"entityType\": \"TENANT\",\n \"id\": \"\"\n },\n \"description\": \"\",\n \"androidAppId\": {\n \"entityType\": \"OAUTH2_CLIENT\",\n \"id\": \"\"\n },\n \"iosAppId\": {\n \"entityType\": \"RULE_NODE\",\n \"id\": \"\"\n },\n \"layoutConfig\": {\n \"pages\": [\n {\n \"visible\": \"\",\n \"type\": \"DASHBOARD\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n },\n {\n \"visible\": \"\",\n \"type\": \"DASHBOARD\",\n \"path\": \"\",\n \"label\": \"\",\n \"icon\": \"\"\n }\n ]\n },\n \"oauth2Enabled\": \"\",\n \"name\": \"\"\n}", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-21b6b891-1372-4888-be95-74f2baae0509" } ], "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-4030bfaf-218e-47ff-b7a4-92fa83edc5c1" } ], "id": "a5da608f-9316-4009-b79d-3b7ce0d70867", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-a5da608f-9316-4009-b79d-3b7ce0d70867" } ], "id": "570b31a8-385f-47b6-b145-84042b5b8067", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-570b31a8-385f-47b6-b145-84042b5b8067" } ], "id": "bd4b5d89-e4ef-4a17-828d-2a8ec698fb3a", "createdAt": "2026-07-28T03:12:50.000Z", "updatedAt": "2026-07-28T03:12:50.000Z", "uid": "35240-bd4b5d89-e4ef-4a17-828d-2a8ec698fb3a" } ], "variable": [ { "key": "baseUrl", "value": "https://demo.thingsboard.io" } ] }