Manage Applications

    Update file metadata

    put
    https://api.box.com/2.0
    /files/:file_id/metadata/:scope/:template_key

    Updates a piece of metadata on a file.

    The metadata instance can only be updated if the instance already exists. When editing metadata, only values that adhere to the metadata template schema will be accepted.

    The update is applied atomically. If any errors occur during the application of the operations, the metadata instance remains unchanged.

    Request

    application/json

    Path Parameters

    stringin pathrequired
    12345

    The unique identifier that represent a file.

    The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the url https://*.app.box.com/files/123 the file_id is 123.

    stringin pathrequired
    enterprise_27335

    The scope of the metadata template

    Value is one of "global", "enterprise_<id>"

    stringin pathrequired
    blueprintTemplate

    The name of the metadata template

    Response

    application/jsonMetadata

    Returns the updated metadata template instance, with the custom template data included.

    application/jsonClient Error

    If the piece of metadata already exists, a conflict error will be returned. The metadata can then instead be updated with the PUT method.

    You can now try out some of our APIs live, right here in the documentation.
    Log In

    Request Example

    cURL
    curl -X PUT https://api.box.com/2.0/files/12345/metadata/enterprise_27335/blueprintTemplate \
         -H "Authorization: Bearer <ACCESS_TOKEN>" \
         -H "Content-Type: application/json" \
         -d '[
            {
              "op": "test",
              "path": "/competitiveDocument",
              "value": "no"
            },
            {
              "op": "remove",
              "path": "/competitiveDocument"
            },
            {
              "op": "test",
              "path": "/status",
              "value": "active"
            },
            {
              "op": "replace",
              "path": "/status",
              "value": "inactive"
            },
            {
              "op": "test",
              "path": "/author",
              "value": "Jones"
            },
            {
              "op": "copy",
              "from": "/author",
              "path": "/editor"
            },
            {
              "op": "test",
              "path": "/currentState",
              "value": "proposal"
            },
            {
              "op": "move",
              "from": "/currentState",
              "path": "/previousState"
            },
            {
              "op": "add",
              "path": "/currentState",
              "value": "reviewed"
            }
          ]'
    .NET
    var updates = new List<BoxMetadataUpdate>()
    {
        new BoxMetadataUpdate()
        {
            Op = MetadataUpdateOp.test,
            Path = "/competitiveDocument",
            Value = "no"
        },
        new BoxMetadataUpdate()
        {
            Op = MetadataUpdateOp.remove,
            Path = "/competitiveDocument"
        },
        new BoxMetadataUpdate()
        {
            Op = MetadataUpdateOp.test,
            Path = "/status",
            Value = "active"
        },
        new BoxMetadataUpdate()
        {
            Op = MetadataUpdateOp.replace,
            Path = "/competitiveDocument",
            Value = "inactive"
        },
        new BoxMetadataUpdate()
        {
            Op = MetadataUpdateOp.test,
            Path = "/author",
            Value = "Jones"
        },
        new BoxMetadataUpdate()
        {
            Op = MetadataUpdateOp.copy,
            From="/author",
            Path = "/editor"
        },
        new BoxMetadataUpdate()
        {
            Op = MetadataUpdateOp.test,
            Path = "/currentState",
            Value = "proposal"
        },
        new BoxMetadataUpdate()
        {
            Op = MetadataUpdateOp.move,
            From = "/currentState",
            Path = "/previousState"
        },
        new BoxMetadataUpdate()
        {
            Op = MetadataUpdateOp.add,
            Path = "/currentState",
            Value = "reviewed"
        }
    };
    Dictionary<string, object> updatedMetadata = await client.MetadataManager
        .UpdateFileMetadataAsync("11111", updates, "enterprise", "marketingCollateral");
    Java
    BoxFile file = new BoxFile(api, "id");
    file.updateMetadata(new Metadata().add("/foo", "bar"));
    Python
    file_obj = client.file(file_id='11111')
    file_metadata = file_obj.metadata(scope='enterprise', template='myMetadata')
    
    updates = file_metadata.start_update()
    updates.add('/foo', 'bar')
    updates.update('/baz', 'murp', old_value='quux')  # Ensure the old value was "quux" before updating to "murp"
    
    updated_metadata = file_metadata.update(updates)
    print('Updated metadata on file!')
    print('foo is now {0} and baz is now {1}'.format(updated_metadata['foo'], updated_metadata['baz']))
    Node
    var updates = [
    	{ op: 'test', path: '/competitiveDocument', value: 'no' },
    	{ op: 'remove', path: '/competitiveDocument' },
    	{ op: 'test', path: '/status', value: 'active' },
    	{ op: 'replace', path: '/status', value: 'inactive' },
    	{ op: 'test', path: '/author', value: 'Jones' },
    	{ op: 'copy', from: '/author', path: '/editor' },
    	{ op: 'test', path: '/currentState', value: 'proposal' },
    	{ op: 'move', from: '/currentState', path: '/previousState' },
    	{ op: 'add', path: '/currentState', value: 'reviewed' }
    ];
    client.files.updateMetadata('11111', client.metadata.scopes.ENTERPRISE, "marketingCollateral", updates)
    	.then(metadata => {
    		/* metadata -> {
    			audience: 'internal',
    			documentType: 'Q1 plans',
    			status: 'inactive',
    			author: 'Jones',
    			'$type': 'marketingCollateral-d086c908-2498-4d3e-8a1f-01e82bfc2abe',
    			'$parent': 'file_11111',
    			'$id': '2094c584-68e1-475c-a581-534a4609594e',
    			'$version': 1,
    			'$typeVersion': 0,
    			editor: 'Jones',
    			previousState: 'proposal',
    			currentState: 'reviewed',
    			'$template': 'marketingCollateral',
    			'$scope': 'enterprise_12345' }
    		*/
    	});

    Response Example

    {
      "$canEdit": true,
      "$id": "01234500-12f1-1234-aa12-b1d234cb567e",
      "$parent": "folder_59449484661,",
      "$scope": "enterprise_27335",
      "$template": "blueprintTemplate",
      "$type": "blueprintTemplate-6bcba49f-ca6d-4d2a-a758-57fe6edf44d0",
      "$typeVersion": 2,
      "$version": 1
    }