Skip to main content

I am trying to call the Box api with c# and search for documents and get their metadata. I am able to see the metadata when I pass “metadata.enterprise.{metadata_template_key}” in a string array into the fields for the Search Manager. How am I able to extract that data? I do not see a way to get it from the BoxItem type. I know I can make a second call to get the metadata directly but I would have to make this call on all the documents the search api returned. I would like to prevent making so many calls if possible.

Hi @cdeleon , welcome to the forum.



To get the actual metadata values for a file (it’s similar for folders) you will need the file_id, the template_scope, and the template_key.



To get these id’s I use the GET https://{{api.box.com}}/2.0/metadata_templates/enterprise end point.



Then it’s a matter of querying the file metadata.



For example:



curl --location 'https://api.box.com/2.0/files/1121082178302/metadata/enterprise_877840855/demoMediaMetadata' \

--header 'Authorization: Bearer 8k...y8'



Results in:



{

"$id": "45bd22c2-c964-4ddb-89aa-0d6f31ea2236",

"$version": 0,

"$type": "demoMediaMetadata-d2c5ef83-23c1-4bb5-8486-7833cfa7c9f4",

"$parent": "file_1121082178302",

"$typeVersion": 0,

"$template": "demoMediaMetadata",

"$scope": "enterprise_877840855",

"fileName": "BigBuckBunny.mp4",

"streamIdentifier": "0",

"trackType": "General",

"otherFrameRate": "24.000 FPS",

"videoFormatWithhintList": "AVC",

"formatExtensionsUsuallyUsed": "mov mp4 m4v m4a m4b m4p m4r 3ga 3gpa 3gpp 3gp 3gpp2 3g2 k3g jpm jpx mqv ismv isma ismt f4a f4b f4v",

"headersize": "179655",

"proportionOfThisStream": "0.00114",

"count": "336",

"otherStreamSize": "175 KiB (0%), 175 KiB, 175 KiB, 175 KiB, 175.5 KiB, 175 KiB (0%)",

"otherDuration": "9 min 56 s, 9 min 56 s 473 ms, 9 min 56 s, 00:09:56.473, 00:09:56:11, 00:09:56.473 (00:09:56:11)",

"otherKindOfStream": "General",

"audioCodecs": "AAC LC",

"isstreamable": "Yes",

"gssd": "BADC219C2HH1385162467077729",

"datasize": "157828719",

"otherFileName": "download",

"otherFormat": "MPEG-4",

"format": "MPEG-4",

"kindOfStream": "General",

"otherOverallBitRate": "2 119 kb/s",

"videoFormatList": "AVC",

"otherCodecId": "mp42 (isom/avc1/mp42)",

"folderName": "/All Files/Media Samples/Video",

"taggedDate": "UTC 2010-01-10 08:29:06",

"countOfStreamOfThisKind": "1",

"completeName": "/All Files/Media Samples/Video/BigBuckBunny.mp4",

"fileExtension": ".mp4",

"gshh": "r8---sn-o097zned.googlevideo.com",

"gstd": "596961",

"frameRate": "24.000",

"gsst": "0",

"fileSize": 158008374,

"duration": 596473,

"otherFileSize": "151 MiB, 151 MiB, 151 MiB, 151 MiB, 150.7 MiB",

"audioFormatList": "AAC LC",

"footersize": "0",

"codecidCompatible": "isom/avc1/mp42",

"audioFormatWithhintList": "AAC LC",

"overallBitRate": 2119236,

"countOfVideoStreams": "1",

"frameCount": "14315",

"overallBitRateMode": "VBR",

"otherOverallBitRateMode": "Variable",

"codecIdUrl": "http://www.apple.com/quicktime/download/standalone.html",

"formatProfile": "Base Media / Version 2",

"countOfAudioStreams": "1",

"codecsVideo": "AVC",

"commercialName": "MPEG-4",

"internetMediaType": "video/mp4",

"streamSize": 179663,

"encodedDate": "UTC 2010-01-10 08:29:06",

"codecId": "mp42",

"$canEdit": true

}



By the way this examples comes from this article, if you’re interested in the context:





I’m not versed on the C# SDK, but see if this example from the SDK helps you:




Reply