- list - Get custom policies
- create - Create custom policy
- get - Get custom policy
- update - Update custom policy
- delete - Delete custom policy
Retrieve all custom permission policies defined for a specific scope. The scope can be at the account level or within a specific product environment.
Notes:
-
If
scope_typeisn't specified asprodenv, the account-level policies will be returned. -
If
scope_typeis specified asprodenv,scope_idis required.
package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.ScopeTypeEnum;
import com.cloudinary.account.provisioning.models.components.Security;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.GetCustomPoliciesRequest;
import com.cloudinary.account.provisioning.models.operations.GetCustomPoliciesResponse;
import java.lang.Exception;
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();
GetCustomPoliciesRequest req = GetCustomPoliciesRequest.builder()
.scopeType(ScopeTypeEnum.PRODENV)
.build();
GetCustomPoliciesResponse res = sdk.customPolicies().list()
.request(req)
.call();
if (res.customPoliciesResponse().isPresent()) {
System.out.println(res.customPoliciesResponse().get());
}
}
}| Parameter | Type | Required | Description |
|---|---|---|---|
request |
GetCustomPoliciesRequest | ✔️ | The request object to use for the request. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models/errors/PermissionsErrorResponse | 401, 403 | application/json |
| models/errors/PermissionsErrorResponse | 500 | application/json |
| models/errors/SDKException | 4XX, 5XX | */* |
Create a new custom policy with a statement defined in Cedar. This policy specifies permissions for a principal, allowing a specific action on a designated resource, within a particular scope.
Learn more about creating a new custom policy https://cloudinary.com/documentation/permissions_api_guide#create_a_policy_statement
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.CreateCustomPolicyResponse;
import java.lang.Exception;
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();
CustomPolicy req = CustomPolicy.builder()
.policyStatement("permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n")
.scopeType(ScopeTypeEnum.PRODENV)
.name("Read access to Clothing folder")
.description("Permit read access to the Clothing folder with external ID asdfjkl12347890.")
.scopeId("975l29lz02jt0836fhwi")
.build();
CreateCustomPolicyResponse res = sdk.customPolicies().create()
.request(req)
.call();
if (res.customPolicyResponse().isPresent()) {
System.out.println(res.customPolicyResponse().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.CreateCustomPolicyResponse;
import java.lang.Exception;
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();
CustomPolicy req = CustomPolicy.builder()
.policyStatement("permit(principal == Cloudinary::APIKey::\"1234\",action==Cloudinary::Action::\"read\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\"asdfjkl12347890\")} ;")
.scopeType(ScopeTypeEnum.PRODENV)
.name("Read access to Clothing folder")
.description("Permit read access to the Clothing folder with external ID asdfjkl12347890.")
.scopeId("975l29lz02jt0836fhwi")
.build();
CreateCustomPolicyResponse res = sdk.customPolicies().create()
.request(req)
.call();
if (res.customPolicyResponse().isPresent()) {
System.out.println(res.customPolicyResponse().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.CreateCustomPolicyResponse;
import java.lang.Exception;
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();
CustomPolicy req = CustomPolicy.builder()
.policyStatement("permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n")
.scopeType(ScopeTypeEnum.PRODENV)
.name("Read access to Clothing folder")
.description("Permit read access to the Clothing folder with external ID asdfjkl12347890.")
.scopeId("975l29lz02jt0836fhwi")
.build();
CreateCustomPolicyResponse res = sdk.customPolicies().create()
.request(req)
.call();
if (res.customPolicyResponse().isPresent()) {
System.out.println(res.customPolicyResponse().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.CreateCustomPolicyResponse;
import java.lang.Exception;
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();
CustomPolicy req = CustomPolicy.builder()
.policyStatement("permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n")
.scopeType(ScopeTypeEnum.PRODENV)
.name("Read access to Clothing folder")
.description("Permit read access to the Clothing folder with external ID asdfjkl12347890.")
.scopeId("975l29lz02jt0836fhwi")
.build();
CreateCustomPolicyResponse res = sdk.customPolicies().create()
.request(req)
.call();
if (res.customPolicyResponse().isPresent()) {
System.out.println(res.customPolicyResponse().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.CreateCustomPolicyResponse;
import java.lang.Exception;
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();
CustomPolicy req = CustomPolicy.builder()
.policyStatement("permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n")
.scopeType(ScopeTypeEnum.PRODENV)
.name("Read access to Clothing folder")
.description("Permit read access to the Clothing folder with external ID asdfjkl12347890.")
.scopeId("975l29lz02jt0836fhwi")
.build();
CreateCustomPolicyResponse res = sdk.customPolicies().create()
.request(req)
.call();
if (res.customPolicyResponse().isPresent()) {
System.out.println(res.customPolicyResponse().get());
}
}
}| Parameter | Type | Required | Description |
|---|---|---|---|
request |
CustomPolicy | ✔️ | The request object to use for the request. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models/errors/PermissionsErrorResponse | 400, 401, 403, 409 | application/json |
| models/errors/PermissionsErrorResponse | 500 | application/json |
| models/errors/SDKException | 4XX, 5XX | */* |
Get a specific custom policy.
package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.Security;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.GetCustomPolicyResponse;
import java.lang.Exception;
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();
GetCustomPolicyResponse res = sdk.customPolicies().get()
.policyId("<id>")
.call();
if (res.customPolicyResponse().isPresent()) {
System.out.println(res.customPolicyResponse().get());
}
}
}| Parameter | Type | Required | Description |
|---|---|---|---|
policyId |
String | ✔️ | A unique identifier for the custom permission policy. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models/errors/PermissionsErrorResponse | 401, 403, 404 | application/json |
| models/errors/SDKException | 4XX, 5XX | */* |
Update a specific custom policy by providing the entire policy entity in the request body. Ensure the new policy_statement includes modifications. Existing permissions will be replaced with the new data.
Note: Updating a policy with an identical policy_statement will trigger a 409 error.
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.UpdateCustomPolicyRequest;
import com.cloudinary.account.provisioning.models.operations.UpdateCustomPolicyResponse;
import java.lang.Exception;
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();
UpdateCustomPolicyRequest req = UpdateCustomPolicyRequest.builder()
.policyId("<id>")
.updateCustomPolicy(UpdateCustomPolicy.builder()
.policyStatement("permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n")
.scopeType(ScopeTypeEnum.PRODENV)
.name("Read access to Clothing folder")
.description("Permit read access to the Clothing folder with external ID asdfjkl12347890.")
.scopeId("975l29lz02jt0836fhwi")
.build())
.build();
UpdateCustomPolicyResponse res = sdk.customPolicies().update()
.request(req)
.call();
if (res.customPolicyResponse().isPresent()) {
System.out.println(res.customPolicyResponse().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.UpdateCustomPolicyRequest;
import com.cloudinary.account.provisioning.models.operations.UpdateCustomPolicyResponse;
import java.lang.Exception;
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();
UpdateCustomPolicyRequest req = UpdateCustomPolicyRequest.builder()
.policyId("<id>")
.updateCustomPolicy(UpdateCustomPolicy.builder()
.policyStatement("permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n")
.scopeType(ScopeTypeEnum.PRODENV)
.name("Read access to Clothing folder")
.description("Permit read access to the Clothing folder with external ID asdfjkl12347890.")
.scopeId("975l29lz02jt0836fhwi")
.build())
.build();
UpdateCustomPolicyResponse res = sdk.customPolicies().update()
.request(req)
.call();
if (res.customPolicyResponse().isPresent()) {
System.out.println(res.customPolicyResponse().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.UpdateCustomPolicyRequest;
import com.cloudinary.account.provisioning.models.operations.UpdateCustomPolicyResponse;
import java.lang.Exception;
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();
UpdateCustomPolicyRequest req = UpdateCustomPolicyRequest.builder()
.policyId("<id>")
.updateCustomPolicy(UpdateCustomPolicy.builder()
.policyStatement("permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n")
.scopeType(ScopeTypeEnum.PRODENV)
.name("Read access to Clothing folder")
.description("Permit read access to the Clothing folder with external ID asdfjkl12347890.")
.scopeId("975l29lz02jt0836fhwi")
.build())
.build();
UpdateCustomPolicyResponse res = sdk.customPolicies().update()
.request(req)
.call();
if (res.customPolicyResponse().isPresent()) {
System.out.println(res.customPolicyResponse().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.UpdateCustomPolicyRequest;
import com.cloudinary.account.provisioning.models.operations.UpdateCustomPolicyResponse;
import java.lang.Exception;
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();
UpdateCustomPolicyRequest req = UpdateCustomPolicyRequest.builder()
.policyId("<id>")
.updateCustomPolicy(UpdateCustomPolicy.builder()
.policyStatement("permit(principal == Cloudinary::APIKey::\"1234\",action==Cloudinary::Action::\"read\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\"asdfjkl12347890\")} ;")
.scopeType(ScopeTypeEnum.PRODENV)
.name("Read access to Accessories folder")
.description("Permit read access to the Accessories folder with external ID asdfjkl12347890.")
.scopeId("975l29lz02jt0836fhwi")
.build())
.build();
UpdateCustomPolicyResponse res = sdk.customPolicies().update()
.request(req)
.call();
if (res.customPolicyResponse().isPresent()) {
System.out.println(res.customPolicyResponse().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.UpdateCustomPolicyRequest;
import com.cloudinary.account.provisioning.models.operations.UpdateCustomPolicyResponse;
import java.lang.Exception;
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();
UpdateCustomPolicyRequest req = UpdateCustomPolicyRequest.builder()
.policyId("<id>")
.updateCustomPolicy(UpdateCustomPolicy.builder()
.policyStatement("permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n")
.scopeType(ScopeTypeEnum.PRODENV)
.name("Read access to Clothing folder")
.description("Permit read access to the Clothing folder with external ID asdfjkl12347890.")
.scopeId("975l29lz02jt0836fhwi")
.build())
.build();
UpdateCustomPolicyResponse res = sdk.customPolicies().update()
.request(req)
.call();
if (res.customPolicyResponse().isPresent()) {
System.out.println(res.customPolicyResponse().get());
}
}
}| Parameter | Type | Required | Description |
|---|---|---|---|
request |
UpdateCustomPolicyRequest | ✔️ | The request object to use for the request. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models/errors/PermissionsErrorResponse | 400, 401, 403, 404, 409 | application/json |
| models/errors/PermissionsErrorResponse | 500 | application/json |
| models/errors/SDKException | 4XX, 5XX | */* |
Delete a specific custom policy.
package hello.world;
import com.cloudinary.account.provisioning.CldProvisioning;
import com.cloudinary.account.provisioning.models.components.Security;
import com.cloudinary.account.provisioning.models.errors.PermissionsErrorResponse;
import com.cloudinary.account.provisioning.models.operations.DeleteCustomPolicyResponse;
import java.lang.Exception;
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();
DeleteCustomPolicyResponse res = sdk.customPolicies().delete()
.policyId("<id>")
.call();
// handle response
}
}| Parameter | Type | Required | Description |
|---|---|---|---|
policyId |
String | ✔️ | A unique identifier for the custom permission policy. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models/errors/PermissionsErrorResponse | 401, 403, 404 | application/json |
| models/errors/SDKException | 4XX, 5XX | */* |