Create, upload and manage private apps owned by the selected customer. All operations require OWNER access.
The customerId selector is available to callers permitted to manage that customer; these operations cannot
transfer an app to another customer. Available app types depend on the server version.
POST /api/customApp/myApps. Supply a nonempty name; type defaults to WIDGET
and widgetCategory to CUSTOM_APPS. The new app is disabled and private, with automatic repository updates disabled.POST /api/customApp/myApps/{id}/upload using the multipart field file.PUT /api/customApp/myApps/{id} and {"enabled":true}.| Type | ZIP requirements |
|---|---|
WIDGET |
config.json with nonempty name and version, each at most 255 characters; these determine package identity/version |
HTML_BUNDLE |
index.html at the ZIP root; the server generates the manifest and identity |
Uploading replaces the package. Identity conflicts in the customer's effective catalog return 409. Invalid names or packages return 400. Downloading an app before its first package upload fails.
List the customer's own apps with GET /api/customApp/myApps; this is not the combined platform/customer catalog.
Updates accept name, description, enabled and widgetCategory. Ownership, app type and repository-update
settings cannot be changed through these operations. Use returned appRootPath, entryPoint and iconPath
values when available instead of constructing storage URLs.
Minimum role: OWNER.
| customerId | integer <int64> Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint. |
| page | integer >= 0 Default: 0 Page index (0-based) |
| size | integer >= 1 Default: 20 Requested page size; server limits and endpoint overrides apply. |
| sort | string Example: sort=name,asc Sort expression. Format:
|
| search | string WBQL filter expression. Operators: |
| select | string Field projection. |
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 0,
- "name": "string",
- "appId": "string",
- "description": "string",
- "enabled": true,
- "version": "string",
- "ownershipType": "PLATFORM",
- "customerId": 0,
- "sizeBytes": 0,
- "lastUpdated": 0,
- "type": "WIDGET",
- "widgetCategory": "CUSTOM_APPS",
- "config": null,
- "appRootPath": "string",
- "entryPoint": "string",
- "iconPath": "string",
- "resourceList": [
- "string"
]
}
]
}Minimum role: OWNER.
| customerId | integer <int64> Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint. |
| name required | string non-empty |
| description | string |
| type | string Default: "WIDGET" Enum: "WIDGET" "HTML_BUNDLE" |
| widgetCategory | string Default: "CUSTOM_APPS" Enum: "CUSTOM_APPS" "BASIC" "MEDIA" "CHARTS" "INTERACTIONS" |
{- "name": "string",
- "description": "string",
- "type": "WIDGET",
- "widgetCategory": "CUSTOM_APPS"
}{- "id": 0,
- "name": "string",
- "appId": "string",
- "description": "string",
- "enabled": true,
- "version": "string",
- "ownershipType": "PLATFORM",
- "customerId": 0,
- "sizeBytes": 0,
- "lastUpdated": 0,
- "type": "WIDGET",
- "widgetCategory": "CUSTOM_APPS",
- "config": null,
- "appRootPath": "string",
- "entryPoint": "string",
- "iconPath": "string",
- "resourceList": [
- "string"
]
}Minimum role: OWNER.
| id required | integer <int64> |
| customerId | integer <int64> Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint. |
| name | string |
| enabled | boolean |
| description | string |
| widgetCategory | string Enum: "CUSTOM_APPS" "BASIC" "MEDIA" "CHARTS" "INTERACTIONS" |
{- "name": "string",
- "enabled": true,
- "description": "string",
- "widgetCategory": "CUSTOM_APPS"
}Minimum role: OWNER.
| id required | integer <int64> |
| customerId | integer <int64> Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint. |
Multipart field file, Content-Type application/zip or application/x-zip-compressed. WIDGET packages require config.json; HTML_BUNDLE packages require root index.html.
Minimum role: OWNER.
| id required | integer <int64> |
| customerId | integer <int64> Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint. |
| file required | string <binary> |
Minimum role: OWNER.
| id required | integer <int64> |
| customerId | integer <int64> Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint. |