Skip to main content
Solved

400 error on Applying Metadata to Folder

  • December 12, 2023
  • 3 replies
  • 221 views

AndrewC
  • Participating Frequently
  • 5 replies

Hello,

I am experiencing an issue with the NodeSDK, whenever I apply any data shape, to boxClient.folders.addMetadata() it throws a 400 with “message”: “Request contains invalid parameters.”, If I apply a empty object {}, it works without issue. (So I know that i am able to connect, and have permissions ect)


The shape of the metadata template is:

image


The relevant code:

const metadataValues = {

ENTITY_ID: “1234”,

is_Active: “1”,

is_Found: “1”,

};

let response_metadata_applied = await this.boxClient.folders.addMetadata(folder_id, “enterprise_534608”, “ciptemplate”, metadataValues);


It throws a 400, with that error.

If I apply

let response_metadata_applied = await this.boxClient.folders.addMetadata(folder_id, “enterprise_534608”, “ciptemplate”, {});

It works 100%, but the values are of course empty.


I have tried all methods of controlling the body: when I look at the error response

{

“statusCode”: 400,

“response”: {

“statusCode”: 400,

“body”: {

“message”: “Request contains invalid parameters.”,

“code”: “bad_request”,

“request_id”: “ic7oqbhkrlg85i9k”

},

…(bunch of stuff)

“body”: “{"ENTITY_ID":"1234","is_Active":"1","is_Found":"1"}”

}

When I toss that body thru a JSON.parse it comes out ok.?!


Is there something obvious I am missing? My code is almost identitical the code used on the example page: https://developer.box.com/reference/post-folders-id-metadata-id-id/


What am I missing, I know its related to the body the metadataValues I am passing? What’s the secret sauce I am missing.


Thank you,

Andrew

Best answer by AndrewC

I found the answer to this, and I think it should be shared publicly as its not declared anywhere in the documenation.


When you create a template, and you enter its name, apparently in the background they change the key.

So when I entered Entity_ID and is_Active, behind the scenes that was changed into entityid, isactive and isfound.


I found this out by boxClient.metadata.getTemplateSchema(‘enterprise’, ‘ciptemplate’);

Which returned:

{

…bunch of stuff

“fields”: [

{

“id”: “31363717-b4ac-4f21-a1c7-622b1f8d1e91”,

“type”: “string”,

“key”: “entityid”,

“displayName”: “ENTITY_ID”,

“hidden”: false,

“description”: “…”

},

}

as you can see, the key is the Displayname stripped of -, _ and whatever. Box, please note this somewhere in the template documentation on the POST section. Or link to https://developer.box.com/guides/metadata/templates/get/

and point out created names of key,value pairs may not be what you entered when you made the template.


Hope this helps somebody else in the future.


Andrew

View original
Did this topic help you find an answer to your question?

3 replies

AndrewC
  • Author
  • Participating Frequently
  • 5 replies
  • Answer
  • December 12, 2023

I found the answer to this, and I think it should be shared publicly as its not declared anywhere in the documenation.


When you create a template, and you enter its name, apparently in the background they change the key.

So when I entered Entity_ID and is_Active, behind the scenes that was changed into entityid, isactive and isfound.


I found this out by boxClient.metadata.getTemplateSchema(‘enterprise’, ‘ciptemplate’);

Which returned:

{

…bunch of stuff

“fields”: [

{

“id”: “31363717-b4ac-4f21-a1c7-622b1f8d1e91”,

“type”: “string”,

“key”: “entityid”,

“displayName”: “ENTITY_ID”,

“hidden”: false,

“description”: “…”

},

}

as you can see, the key is the Displayname stripped of -, _ and whatever. Box, please note this somewhere in the template documentation on the POST section. Or link to https://developer.box.com/guides/metadata/templates/get/

and point out created names of key,value pairs may not be what you entered when you made the template.


Hope this helps somebody else in the future.


Andrew


rbarbosa Box
  • Developer Advocate
  • 553 replies
  • December 13, 2023

Hi @AndrewC , welcome to the forum.


You’re right, it is not explicitly called out in the documentation, and neither on the articles.


I’ll ping the docs team.


Speaking of articles, did you find our series of articles around metadata? If so were they useful?



Cheers


AndrewC
  • Author
  • Participating Frequently
  • 5 replies
  • December 13, 2023

I find your documentation normally top shelf! 🙂


I mean its normally so spot on, it lead me to believe for sure I was the problem! LOL


As for the Metadata stuff, yes, its detailed and with this one exception following/using it, my product is moving along nicely. All for all, congrats on a solid SDK!


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings