API reference
installResourcePack() — Application Service
Install an authorized resource pack into a target tenant and track its job.
Installs a built resource pack into an authorized target tenant. The verified transport is POST /api/app/installResourcePack; the request is asynchronous when runAsync is true.
Request
{
"skipUserModified": true,
"sourceTenant": "dev1",
"templateName": "erp",
"runAsync": true,
"tenantCode": "customer-workspace"
}
| Field | Type | Description |
|---|---|---|
skipUserModified |
boolean | Preserves supported user-modified assets when true. The action sets this to the inverse of Overwrite My Changes. |
sourceTenant |
string | Authorized tenant that owns the built pack. |
packId |
string | Optional exact built GsbResourcePack id. |
templateId |
string | Optional GsbResourcePackTmpl id used for latest-pack resolution. |
templateName |
string | Optional GsbResourcePackTmpl.name used for latest-pack resolution. |
runAsync |
boolean | Returns a job id instead of waiting for installation. |
tenantCode |
string | Authorized installation target. |
Select one source artifact. packId pins an exact built pack. When packId is absent, templateId or templateName resolves the latest pack built from that template. Do not send both template selectors. Use packId whenever reproducibility requires an exact artifact rather than the latest build.
Preserve or overwrite target edits
Choose skipUserModified: true to preserve resources the installer recognizes as user-modified, or false to allow packaged changes to overwrite target customizations. Overwrite My Changes is the inverse of this flag. This is an installation-level choice, not a per-column policy map. Schema and column/property preservation must be checked against the backend's supported behavior with isolated edited-resource fixtures. Overwrite does not imply deletion of resources absent from the pack, atomic replacement, or automatic rollback.
Preservation can leave the target different from the artifact. Review skipped resources and verify dependencies; do not silently retry with overwrite. See CI/CD, deployment, and seeds for approval, selective data, and post-install checks.
Response and status
An accepted asynchronous request returns a jobId. Poll getJobStatus until the task reaches a terminal state. Treat installation as a privileged mutation: the server must authorize the source and target tenants; a browser-supplied tenant code is never authority.
Entity actions
The live GsbResourcePack.actionsStr decodes to Install Pack, which opens widget 07dc76f9-cd99-4b2b-9f87-13ff51d9f3c8. Its nested Start Install action defines apiEndPoint: "/app/installResourcePack", sends the request above, then polls /api/task/getJobStatus every five seconds until Succeeded, Failed, or Deleted.
Pikbase verified platform contract