View roles associated with a specified principal, and add or remove a role associated with a principal.
- listRoles - Get a principal's roles
- updateRoles - Assign roles to a principal
- inspect - Inspect
- inspectMultiple - Inspect multiple
Retrieve all roles associated with a specific principal.
package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.*;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.GetPrincipalRolesRequest;
import com.cloudinary.account.provisioning.models.operations.GetPrincipalRolesResponse;
import java.lang.Exception;
import java.util.List;
public class Application {
public static void main(String[] args) throws PermissionsErrorResponse, Exception {
CldProvisioning sdk = CldProvisioning.builder()
.accountId("<id>")
.security(Security.builder()
.provisioningApiKey("CLOUDINARY_PROVISIONING_API_KEY")
.provisioningApiSecret("CLOUDINARY_PROVISIONING_API_SECRET")
.build())
.build();
GetPrincipalRolesRequest req = GetPrincipalRolesRequest.builder()
.principalType(PrincipalTypeEnum.USER)
.principalId("<id>")
.permissionType(PermissionTypeEnum.GLOBAL)
.managementType(ManagementTypeEnum.SYSTEM)
.scopeType(ScopeTypeEnum.PRODENV)
.paramKey(List.of(
"folder_id"))
.paramValue(List.of(
"asdfjkl12347890"))
.build();
GetPrincipalRolesResponse res = sdk.principals().listRoles()
.request(req)
.call();
if (res.principalRolesResponse().isPresent()) {
System.out.println(res.principalRolesResponse().get());
}
}
}package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.*;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.GetPrincipalRolesRequest;
import com.cloudinary.account.provisioning.models.operations.GetPrincipalRolesResponse;
import java.lang.Exception;
import java.util.List;
public class Application {
public static void main(String[] args) throws PermissionsErrorResponse, Exception {
CldProvisioning sdk = CldProvisioning.builder()
.accountId("<id>")
.security(Security.builder()
.provisioningApiKey("CLOUDINARY_PROVISIONING_API_KEY")
.provisioningApiSecret("CLOUDINARY_PROVISIONING_API_SECRET")
.build())
.build();
GetPrincipalRolesRequest req = GetPrincipalRolesRequest.builder()
.principalType(PrincipalTypeEnum.USER)
.principalId("<id>")
.permissionType(PermissionTypeEnum.GLOBAL)
.managementType(ManagementTypeEnum.SYSTEM)
.scopeType(ScopeTypeEnum.PRODENV)
.paramKey(List.of(
"folder_id"))
.paramValue(List.of(
"asdfjkl12347890"))
.build();
GetPrincipalRolesResponse res = sdk.principals().listRoles()
.request(req)
.call();
if (res.principalRolesResponse().isPresent()) {
System.out.println(res.principalRolesResponse().get());
}
}
}| Parameter | Type | Required | Description |
|---|---|---|---|
request |
GetPrincipalRolesRequest | ✔️ | The request object to use for the request. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models/errors/PermissionsErrorResponse | 400, 401, 404 | application/json |
| models/errors/PermissionsErrorResponse | 500 | application/json |
| models/errors/SDKException | 4XX, 5XX | */* |
Add or remove roles associated with a principal.
package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.*;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.UpdatePrincipalRolesResponse;
import java.lang.Exception;
import java.util.List;
public class Application {
public static void main(String[] args) throws PermissionsErrorResponse, Exception {
CldProvisioning sdk = CldProvisioning.builder()
.accountId("<id>")
.security(Security.builder()
.provisioningApiKey("CLOUDINARY_PROVISIONING_API_KEY")
.provisioningApiSecret("CLOUDINARY_PROVISIONING_API_SECRET")
.build())
.build();
UpdatePrincipalRolesRequest req = UpdatePrincipalRolesRequest.builder()
.operation(OperationEnum.ADD)
.principal(Principal.builder()
.type(PrincipalTypeEnum.USER)
.id("1234abc")
.build())
.roles(List.of(
RoleToManage.builder()
.id("marketing_content_contributor_1357fhe")
.scopeId("975l29lz02jt0836fhwi")
.policyParameters(RoleToManagePolicyParameters.builder()
.build())
.build()))
.build();
UpdatePrincipalRolesResponse res = sdk.principals().updateRoles()
.request(req)
.call();
// handle response
}
}package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.*;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.UpdatePrincipalRolesResponse;
import java.lang.Exception;
import java.util.List;
public class Application {
public static void main(String[] args) throws PermissionsErrorResponse, Exception {
CldProvisioning sdk = CldProvisioning.builder()
.accountId("<id>")
.security(Security.builder()
.provisioningApiKey("CLOUDINARY_PROVISIONING_API_KEY")
.provisioningApiSecret("CLOUDINARY_PROVISIONING_API_SECRET")
.build())
.build();
UpdatePrincipalRolesRequest req = UpdatePrincipalRolesRequest.builder()
.operation(OperationEnum.ADD)
.principal(Principal.builder()
.type(PrincipalTypeEnum.USER)
.id("1234abc")
.build())
.roles(List.of(
RoleToManage.builder()
.id("marketing_content_contributor_1357fhe")
.scopeId("975l29lz02jt0836fhwi")
.policyParameters(RoleToManagePolicyParameters.builder()
.build())
.build()))
.build();
UpdatePrincipalRolesResponse res = sdk.principals().updateRoles()
.request(req)
.call();
// handle response
}
}| Parameter | Type | Required | Description |
|---|---|---|---|
request |
UpdatePrincipalRolesRequest | ✔️ | The request object to use for the request. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models/errors/PermissionsErrorResponse | 400, 401, 403, 404 | application/json |
| models/errors/SDKException | 4XX, 5XX | */* |
Retrieves principals and their assigned roles within a specified scope, based on query filters.
Use this endpoint to determine which users, groups, API keys, or account API keys have roles applied at:
- A specific
scope_type("account" or "prodenv") - A specific
scope_id(for product environments) - Optional content filters (such as
folder_id,collection_id, orparam_key/param_value) - Optional
principal_type(andprincipal_id)
The response includes all principals that match the specified filters, along with the roles applied to them within that context.
This endpoint is useful when you want to:
- Audit who has access within a given scope
- Identify all principals assigned to roles for a specific folder, collection, asset, or product environment
- Retrieve role assignments dynamically based on filtering criteria
package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.*;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.InspectRequest;
import com.cloudinary.account.provisioning.models.operations.InspectResponse;
import java.lang.Exception;
import java.util.List;
public class Application {
public static void main(String[] args) throws PermissionsErrorResponse, Exception {
CldProvisioning sdk = CldProvisioning.builder()
.accountId("<id>")
.security(Security.builder()
.provisioningApiKey("CLOUDINARY_PROVISIONING_API_KEY")
.provisioningApiSecret("CLOUDINARY_PROVISIONING_API_SECRET")
.build())
.build();
InspectRequest req = InspectRequest.builder()
.scopeType(ScopeTypeEnum.PRODENV)
.principalType(PrincipalTypeEnum.USER)
.paramKey(List.of(
"folder_id"))
.paramValue(List.of(
"asdfjkl12347890"))
.build();
InspectResponse res = sdk.principals().inspect()
.request(req)
.call();
if (res.principalRolesInspectResponse().isPresent()) {
System.out.println(res.principalRolesInspectResponse().get());
}
}
}package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.*;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.InspectRequest;
import com.cloudinary.account.provisioning.models.operations.InspectResponse;
import java.lang.Exception;
import java.util.List;
public class Application {
public static void main(String[] args) throws PermissionsErrorResponse, Exception {
CldProvisioning sdk = CldProvisioning.builder()
.accountId("<id>")
.security(Security.builder()
.provisioningApiKey("CLOUDINARY_PROVISIONING_API_KEY")
.provisioningApiSecret("CLOUDINARY_PROVISIONING_API_SECRET")
.build())
.build();
InspectRequest req = InspectRequest.builder()
.scopeType(ScopeTypeEnum.PRODENV)
.principalType(PrincipalTypeEnum.USER)
.paramKey(List.of(
"folder_id"))
.paramValue(List.of(
"asdfjkl12347890"))
.build();
InspectResponse res = sdk.principals().inspect()
.request(req)
.call();
if (res.principalRolesInspectResponse().isPresent()) {
System.out.println(res.principalRolesInspectResponse().get());
}
}
}package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.*;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.InspectRequest;
import com.cloudinary.account.provisioning.models.operations.InspectResponse;
import java.lang.Exception;
import java.util.List;
public class Application {
public static void main(String[] args) throws PermissionsErrorResponse, Exception {
CldProvisioning sdk = CldProvisioning.builder()
.accountId("<id>")
.security(Security.builder()
.provisioningApiKey("CLOUDINARY_PROVISIONING_API_KEY")
.provisioningApiSecret("CLOUDINARY_PROVISIONING_API_SECRET")
.build())
.build();
InspectRequest req = InspectRequest.builder()
.scopeType(ScopeTypeEnum.PRODENV)
.principalType(PrincipalTypeEnum.USER)
.paramKey(List.of(
"folder_id"))
.paramValue(List.of(
"asdfjkl12347890"))
.build();
InspectResponse res = sdk.principals().inspect()
.request(req)
.call();
if (res.principalRolesInspectResponse().isPresent()) {
System.out.println(res.principalRolesInspectResponse().get());
}
}
}| Parameter | Type | Required | Description |
|---|---|---|---|
request |
InspectRequest | ✔️ | The request object to use for the request. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models/errors/PermissionsErrorResponse | 400, 401, 404 | application/json |
| models/errors/PermissionsErrorResponse | 500 | application/json |
| models/errors/SDKException | 4XX, 5XX | */* |
Retrieves role assignments for a specified list of principals within a shared scope and optional policy parameters.
Use this endpoint when you already know which principals you want to evaluate and want to check their role assignments in a single request.
In this request:
- You explicitly provide the
principalsarray in the request body. - All principals are evaluated against the same
scope_type, optionalscope_id, and optionalpolicy_parameters. - Unlike
Inspect, this endpoint doesn't search for matching principals. It evaluates only the principals you provide.
This endpoint is useful for:
- Verify role assignments for multiple specified principals at once
- Comparing role assignments across specific users, groups, or keys
- Reducing multiple per-principal
Inspectcalls into a single request
package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.*;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.InspectMultipleResponse;
import java.lang.Exception;
import java.util.List;
public class Application {
public static void main(String[] args) throws PermissionsErrorResponse, Exception {
CldProvisioning sdk = CldProvisioning.builder()
.accountId("<id>")
.security(Security.builder()
.provisioningApiKey("CLOUDINARY_PROVISIONING_API_KEY")
.provisioningApiSecret("CLOUDINARY_PROVISIONING_API_SECRET")
.build())
.build();
InspectRequest req = InspectRequest.builder()
.scopeType(ScopeTypeEnum.PRODENV)
.principals(List.of(
Principal.builder()
.type(PrincipalTypeEnum.USER)
.id("1234abc")
.build(),
Principal.builder()
.type(PrincipalTypeEnum.USER)
.id("4567xyz")
.build(),
Principal.builder()
.type(PrincipalTypeEnum.API_KEY)
.id("a382ltieo893jhioqpg8urp")
.build()))
.scopeId("975l29lz02jt0836fhwi")
.policyParameters(InspectRequestPolicyParameters.builder()
.build())
.build();
InspectMultipleResponse res = sdk.principals().inspectMultiple()
.request(req)
.call();
if (res.principalRolesInspectResponse().isPresent()) {
System.out.println(res.principalRolesInspectResponse().get());
}
}
}package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.*;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.InspectMultipleResponse;
import java.lang.Exception;
import java.util.List;
public class Application {
public static void main(String[] args) throws PermissionsErrorResponse, Exception {
CldProvisioning sdk = CldProvisioning.builder()
.accountId("<id>")
.security(Security.builder()
.provisioningApiKey("CLOUDINARY_PROVISIONING_API_KEY")
.provisioningApiSecret("CLOUDINARY_PROVISIONING_API_SECRET")
.build())
.build();
InspectRequest req = InspectRequest.builder()
.scopeType(ScopeTypeEnum.PRODENV)
.principals(List.of(
Principal.builder()
.type(PrincipalTypeEnum.USER)
.id("1234abc")
.build()))
.build();
InspectMultipleResponse res = sdk.principals().inspectMultiple()
.request(req)
.call();
if (res.principalRolesInspectResponse().isPresent()) {
System.out.println(res.principalRolesInspectResponse().get());
}
}
}| Parameter | Type | Required | Description |
|---|---|---|---|
request |
InspectRequest | ✔️ | The request object to use for the request. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models/errors/PermissionsErrorResponse | 400, 401, 404 | application/json |
| models/errors/PermissionsErrorResponse | 500 | application/json |
| models/errors/SDKException | 4XX, 5XX | */* |