Box Developer Documentation

Force-apply metadata to all items in a folder

Guides Metadata Metadata cascade policies Force-apply metadata to all items in a folder
Edit this page

Force-apply metadata to all items in a folder

When a metadata cascade policy already exists on a folder, the metadata instance can be force-applied to all items in a folder by calling the POST /metadata_cascade_policies/:id/apply API endpoint with the id of the metadata cascade policy.

cURL
curl -i -X POST "https://api.box.com/2.0/metadata_cascade_policies/21312/apply" \
     -H "authorization: Bearer <ACCESS_TOKEN>" \
     -H "content-type: application/json" \
     -d '{
       "conflict_resolution": "overwrite"
     }'
TypeScript Gen
await client.metadataCascadePolicies.applyMetadataCascadePolicy(
  cascadePolicyId,
  {
    conflictResolution:
      'overwrite' as ApplyMetadataCascadePolicyRequestBodyConflictResolutionField,
  } satisfies ApplyMetadataCascadePolicyRequestBody,
);
Python Gen
client.metadata_cascade_policies.apply_metadata_cascade_policy(
    cascade_policy_id, ApplyMetadataCascadePolicyConflictResolution.OVERWRITE
)
.NET Gen
await client.MetadataCascadePolicies.ApplyMetadataCascadePolicyAsync(metadataCascadePolicyId: cascadePolicyId, requestBody: new ApplyMetadataCascadePolicyRequestBody(conflictResolution: ApplyMetadataCascadePolicyRequestBodyConflictResolutionField.Overwrite));
Swift Gen (Beta)
try await client.metadataCascadePolicies.applyMetadataCascadePolicy(metadataCascadePolicyId: cascadePolicyId, requestBody: ApplyMetadataCascadePolicyRequestBody(conflictResolution: ApplyMetadataCascadePolicyRequestBodyConflictResolutionField.overwrite))
Java
String cascadePolicyID = "e4392a41-7de5-4232-bdf7-15e0d6bba067";
BoxMetadataCascadePolicy policy = new BoxMetadataCascadePolicy(api, cascadePolicyID);
policy.forceApply("none");
Python
from boxsdk.object.metadata_cascade_policy import CascadePolicyConflictResolution

cascade_policy = client.metadata_cascade_policy(policy_id='84113349-794d-445c-b93c-d8481b223434')
cascade_policy.force_apply(CascadePolicyConflictResolution.PRESERVE_EXISTING)
print('Cascade policy was force applied!')
.NET
string policyId = "11111";
string conflictResolution = Constants.ConflictResolution.Overwrite
BoxMetadataCascadePolicy newCascadePolicy = client.MetadataCascadePolicyManager
    .ForceApplyCascadePolicyAsync(policyId, conflictResolution);
Node
var policyID = '84113349-794d-445c-b93c-d8481b223434';
client.metadata.forceApplyCascadePolicy(policyID, client.metadata.cascadeResolution.PRESERVE_EXISTING)
	.then(() => {
		// application started — no value returned
	});

To get the id of the policy, list all policies for the folder.

The metadata cascade operation will be started off asynchronously. The API call will return directly with the 202 Accepted HTTP status code before the cascade operation is complete. There is currently no way to check for when this operation is finished.

Conflict resolution

An additional conflict_resolution parameter can be passed to this API to define how to deal with any existing instances of the template on any of the items in the folder.

By default, without setting any value for conflict_resolution this API will preserve the existing value on any items. When the value is set to overwrite, it will force-apply the value of the template attached to the cascade policy over any existing value.