---
title: "Update asset permissions"
method: PUT
path: "/api/v1/permissions/{assetId}"
tags: ["Permissions"]
---

# Update asset permissions

`PUT /api/v1/permissions/{assetId}`

Replaces all permissions for a specific asset. If the asset is currently inheriting permissions, inheritance will be automatically broken. Only admin users can access this endpoint. Use cascade=true to trigger an async job that removes individual permissions from descendant assets.

## Path parameters

- `assetId` string, required

## Query parameters

- `cascade` boolean

## Request body

- UpdateAssetPermissionsForm
  - `permissions` RolePermissionForm[], required — List of role permission entries. Each entry defines permissions for a specific role on the asset.
    - `roleId` string, required — Role identifier. Can be role ID or role key.
    - `individual` string[] — Individual permission levels for this asset. Valid values: READ, WRITE, PUBLISH, EDIT_PERMISSIONS, CAN_ADD_CHILDREN
    - `inheritable` object — Inheritable permissions by scope for child assets. Keys are permission scopes (FOLDER, CONTENT, PAGE, etc.), values are sets of permission levels.

## Response `200`

Permissions updated successfully

- ResponseEntityUpdatePermissionsView
  - `errors` ErrorEntity[]
    - `errorCode` string
    - `message` string
    - `fieldName` string
  - `entity` UpdateAssetPermissionsView
    - `message` string, required — Success message describing the operation result
    - `permissionCount` integer, required — Number of permission entries saved during this operation
    - `inheritanceBroken` boolean, required — Whether permission inheritance was broken during this operation. True if the asset was previously inheriting permissions from its parent.
    - `asset` AssetPermissionsView, required — The updated asset with its new permission assignments
      - `assetId` string, required — Asset identifier
      - `assetType` 'INDIVIDUAL' | 'HOST' | 'FOLDER' | 'CONTAINER' | 'TEMPLATE' | 'TEMPLATE_LAYOUT' | 'LINK' | 'CONTENT' | 'PAGE' | 'CONTENT_TYPE' | 'STRUCTURE' | 'CATEGORY' | 'RULE', required — Asset type
      - `inheritanceMode` 'INHERITED' | 'INDIVIDUAL', required — Permission inheritance mode
      - `canEditPermissions` boolean, required — Whether the requesting user can edit permissions on this asset
      - `canEdit` boolean, required — Whether the requesting user can edit this asset
      - `parentAssetId` string — Parent asset identifier (null if no parent or at root level)
      - `permissions` RolePermissionView[], required — Paginated list of role permissions assigned to this asset
        - `roleId` string, required — Role identifier
        - `roleName` string, required — Role display name
        - `inherited` boolean, required — Whether permissions are inherited from a parent asset
        - `individual` string[], required — Individual permission levels assigned directly to this role on the asset
        - `inheritable` object — Inheritable permissions by scope (only for parent permissionables). Keys are permission scopes (HOST, FOLDER, CONTENT, etc.), values are permission types
          - `empty` boolean
      - `isParentPermissionable` boolean, required — Whether this asset can have child permissionables (e.g., hosts and folders)
    - `cascadeWarnings` string[] — Warnings from cascade operations that partially failed. Present only when cascade was requested and some role cascades failed.
  - `messages` MessageEntity[]
    - `message` string
  - `i18nMessagesMap` object
  - `permissions` string[]
  - `pagination` Pagination
    - `currentPage` integer
    - `perPage` integer
    - `totalEntries` integer

## Other responses

- `400` — Bad request - invalid request body or role IDs
- `401` — Unauthorized - authentication required
- `403` — Forbidden - user is not admin or lacks EDIT_PERMISSIONS on asset
- `404` — Asset not found
- `500` — Failed to update permissions

---

[API](https://skmtc.dev/jostens/apis/dotcms-rest-api.md) · [All operations](https://skmtc.dev/jostens/apis/dotcms-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/jostens/dotcms-rest-api/revisions/a088fe9f515c/schema)
