- 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.
# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.list(scope_type=cloudinary_account_provisioning.ScopeTypeEnum.PRODENV)
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.list(scope_type=cloudinary_account_provisioning.ScopeTypeEnum.PRODENV)
# Handle response
print(res)
asyncio.run(main())| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
scope_type |
Optional[models.ScopeTypeEnum] | ➖ | Specifies the level for retrieving policies or roles, either at the account level or within product environments. | prodenv |
scope_id |
Optional[str] | ➖ | The ID of a specific product environment where the policy is applied. This parameter is only relevant if scope_type is "prodenv".- <product_environment_id> |
|
enabled |
OptionalNullable[bool] | ➖ | Filter policies by enabled status (true/false). | |
cursor |
Optional[str] | ➖ | A pagination cursor for fetching subsequent results. | |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models.PermissionsErrorResponse | 401, 403 | application/json |
| models.PermissionsErrorResponse | 500 | application/json |
| models.APIError | 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
# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.create(request={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.create(request={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)
asyncio.run(main())# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.create(request={
"policy_statement": "permit(principal == Cloudinary::APIKey::\"1234\",action==Cloudinary::Action::\"read\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\"asdfjkl12347890\")} ;",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.create(request={
"policy_statement": "permit(principal == Cloudinary::APIKey::\"1234\",action==Cloudinary::Action::\"read\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\"asdfjkl12347890\")} ;",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)
asyncio.run(main())# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.create(request={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.create(request={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)
asyncio.run(main())# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.create(request={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.create(request={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)
asyncio.run(main())# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.create(request={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.create(request={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)
asyncio.run(main())| Parameter | Type | Required | Description |
|---|---|---|---|
request |
models.CustomPolicy | ✔️ | The request object to use for the request. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models.PermissionsErrorResponse | 400, 401, 403, 409 | application/json |
| models.PermissionsErrorResponse | 500 | application/json |
| models.APIError | 4XX, 5XX | */* |
Get a specific custom policy.
# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.get(policy_id="<id>")
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.get(policy_id="<id>")
# Handle response
print(res)
asyncio.run(main())| Parameter | Type | Required | Description |
|---|---|---|---|
policy_id |
str | ✔️ | A unique identifier for the custom permission policy. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models.PermissionsErrorResponse | 401, 403, 404 | application/json |
| models.APIError | 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.
# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.update(policy_id="<id>", update_custom_policy={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.update(policy_id="<id>", update_custom_policy={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)
asyncio.run(main())# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.update(policy_id="<id>", update_custom_policy={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.update(policy_id="<id>", update_custom_policy={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)
asyncio.run(main())# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.update(policy_id="<id>", update_custom_policy={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.update(policy_id="<id>", update_custom_policy={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)
asyncio.run(main())# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.update(policy_id="<id>", update_custom_policy={
"policy_statement": "permit(principal == Cloudinary::APIKey::\"1234\",action==Cloudinary::Action::\"read\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\"asdfjkl12347890\")} ;",
"description": "Permit read access to the Accessories folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Accessories folder",
})
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.update(policy_id="<id>", update_custom_policy={
"policy_statement": "permit(principal == Cloudinary::APIKey::\"1234\",action==Cloudinary::Action::\"read\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\"asdfjkl12347890\")} ;",
"description": "Permit read access to the Accessories folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Accessories folder",
})
# Handle response
print(res)
asyncio.run(main())# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = cld_provisioning.custom_policies.update(policy_id="<id>", update_custom_policy={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
res = await cld_provisioning.custom_policies.update(policy_id="<id>", update_custom_policy={
"policy_statement": "permit(principal == Cloudinary::APIKey::\\\"1234\\\",action==Cloudinary::Action::\\\"read\\\",resource is Cloudinary::Folder ) when {resource.ancestor_ids.contains(\\\"asdfjkl12347890\\\")} ;\n",
"description": "Permit read access to the Clothing folder with external ID asdfjkl12347890.",
"scope_type": cloudinary_account_provisioning.ScopeTypeEnum.PRODENV,
"scope_id": "975l29lz02jt0836fhwi",
"name": "Read access to Clothing folder",
})
# Handle response
print(res)
asyncio.run(main())| Parameter | Type | Required | Description |
|---|---|---|---|
policy_id |
str | ✔️ | A unique identifier for the custom permission policy. |
update_custom_policy |
models.UpdateCustomPolicy | ✔️ | Policy details |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models.PermissionsErrorResponse | 400, 401, 403, 404, 409 | application/json |
| models.PermissionsErrorResponse | 500 | application/json |
| models.APIError | 4XX, 5XX | */* |
Delete a specific custom policy.
# Synchronous Example
import cloudinary_account_provisioning
from cloudinary_account_provisioning import CldProvisioning
with CldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
cld_provisioning.custom_policies.delete(policy_id="<id>")
# Use the SDK ...An Async SDK client can also be used to make asynchronous requests by importing it and asyncio.
# Asynchronous Example
import asyncio
import cloudinary_account_provisioning
from cloudinary_account_provisioning import AsyncCldProvisioning
async def main():
async with AsyncCldProvisioning(
account_id="<id>",
security=cloudinary_account_provisioning.Security(
provisioning_api_key="CLOUDINARY_PROVISIONING_API_KEY",
provisioning_api_secret="CLOUDINARY_PROVISIONING_API_SECRET",
),
) as cld_provisioning:
await cld_provisioning.custom_policies.delete(policy_id="<id>")
# Use the SDK ...
asyncio.run(main())| Parameter | Type | Required | Description |
|---|---|---|---|
policy_id |
str | ✔️ | A unique identifier for the custom permission policy. |
retries |
Optional[utils.RetryConfig] | ➖ | Configuration to override the default retry behavior of the client. |
| Error Type | Status Code | Content Type |
|---|---|---|
| models.PermissionsErrorResponse | 401, 403, 404 | application/json |
| models.APIError | 4XX, 5XX | */* |