メタデータテンプレートを更新するには、操作の配列を APIに渡します。
cURL
Node/TypeScript v10
Python v10
.NET v10
Swift v10
Java v10
Java v5
Python v4
.NET v6
Node v4
curl -i -X PUT "https://api.box.com/2.0/metadata_templates/enterprise/blueprintTemplate/schema" \
-H "authorization: Bearer <ACCESS_TOKEN>" \
-H "content-type: application/json-patch+json" \
-d '[
{
"op": "editField",
"fieldKey": "category",
"data": {
"displayName": "Customer Group"
}
}
]'
await client . metadataTemplates . updateMetadataTemplate (
'enterprise' as UpdateMetadataTemplateScope ,
templateKey ,
[
{
op: 'addField' as UpdateMetadataTemplateRequestBodyOpField ,
fieldKey: 'newfieldname' ,
data: { [ 'type' ]: 'string' , [ 'displayName' ]: 'newFieldName' },
} satisfies UpdateMetadataTemplateRequestBody ,
],
);
client.metadata_templates.update_metadata_template(
UpdateMetadataTemplateScope. ENTERPRISE ,
template_key,
[
UpdateMetadataTemplateRequestBody(
op = UpdateMetadataTemplateRequestBodyOpField. ADDFIELD ,
field_key = "newfieldname" ,
data = { "type" : "string" , "displayName" : "newFieldName" },
)
],
)
await client . MetadataTemplates . UpdateMetadataTemplateAsync ( scope : UpdateMetadataTemplateScope . Enterprise , templateKey : templateKey , requestBody : Array . AsReadOnly ( new [] { new UpdateMetadataTemplateRequestBody ( op : UpdateMetadataTemplateRequestBodyOpField . AddField ) { FieldKey = "newfieldname" , Data = new Dictionary < string , object >() { { "type" , "string" }, { "displayName" , "newFieldName" } } }}));
try await client. metadataTemplates . updateMetadataTemplate ( scope : UpdateMetadataTemplateScope. enterprise , templateKey : templateKey, requestBody : [ UpdateMetadataTemplateRequestBody ( op : UpdateMetadataTemplateRequestBodyOpField. addField , fieldKey : "newfieldname" , data : [ "type" : "string" , "displayName" : "newFieldName" ])])
client . getMetadataTemplates (). updateMetadataTemplate ( UpdateMetadataTemplateScope . ENTERPRISE , templateKey, Arrays . asList ( new UpdateMetadataTemplateRequestBody. Builder ( UpdateMetadataTemplateRequestBodyOpField . ADDFIELD ). data ( mapOf ( entryOf ( "type" , "string" ), entryOf ( "displayName" , "newFieldName" ))). fieldKey ( "newfieldname" ). build ()))
List < MetadataTemplate . FieldOperation > updates = new ArrayList < MetadataTemplate . FieldOperation >();
String addCategoryFieldJSON = "{ \" op \" : \" addField \" ," \ "data \" :{"
+ " \" displayName \" : \" Category \" , \" key \" : \" category \" , \" hidden \" :false, \" type \" : \" string \" }}" ;
updates . add ( new MetadataTemplate. FieldOperation (addCategoryFieldJSON));
String changeTemplateNameJSON = "{ \" op \" : \" editTemplate \" , \" data \" :{"
+ " \" displayName \" : \" My Metadata \" }}" ;
updates . add ( new MetadataTemplate. FieldOperation (changeTemplateNameJSON));
MetadataTemplate . updateMetadataTemplate (api, "enterprise" , "myData" , updates);
template = client.metadata_template( 'enterprise' , 'employeeRecord' )
updates = template.start_update()
updates.add_enum_option( 'state' , 'WI' )
updates.edit_template({ 'hidden' : False })
updates.edit_template({ 'copyInstanceOnItemCopy' : False })
updated_template = template.update_info( updates = updates)
var updates = new List < BoxMetadataTemplateUpdate >()
{
new BoxMetadataTemplateUpdate ()
{
Op = MetadataTemplateUpdateOp . addEnumOption ,
FieldKey = "fy" ,
Data = new {
key = "FY20"
}
},
new BoxMetadataTemplateUpdate ()
{
Op = MetadataTemplateUpdateOp . editTemplate ,
Data = new {
hidden = false
}
}
};
BoxMetadataTemplate updatedTemplate = await client . MetadataManager
. UpdateMetadataTemplate ( updates , "enterprise" , "marketingCollateral" );
// Add a new option to the Fiscal Year field, and un-hide the template
var operations = [
{
op: 'addEnumOption' ,
fieldKey: 'fy' ,
data: { key: 'FY20' }
},
{
op: 'editTemplate' ,
data: { hidden: false }
}
];
client . metadata . updateTemplate ( 'enterprise' , 'vcontract' , operations )
. then ( template => {
/* template -> {
templateKey: 'vcontract',
scope: 'enterprise_12345',
displayName: 'Vendor Contract',
hidden: false,
fields:
[ { type: 'date',
key: 'signed',
displayName: 'Date Signed',
hidden: false },
{ type: 'string',
key: 'vendor',
displayName: 'Vendor',
hidden: false },
{ type: 'enum',
key: 'fy',
displayName: 'Fiscal Year',
options:
[ { key: 'FY17' },
{ key: 'FY18' },
{ key: 'FY19' },
{ key: 'FY20' } ],
hidden: false } ] }
*/
});
管理者権限が必須 メタデータテンプレートの更新は、管理者権限を持つユーザーに制限されています。つまり、管理者、または管理者から会社のメタデータテンプレートを作成、編集する 権限が付与されている共同管理者だけがウェブアプリまたはAPIを使用してテンプレートを管理できます。
メタデータテンプレートの更新は、テンプレート自体を直接変更するのではなく、操作 を利用して実行されます。この方法では、ファイルおよびフォルダにすでに適用されている既存のメタデータインスタンスを更新できます。
テンプレートの操作
テンプレートの操作により、テンプレートの詳細またはフィールドが更新されます。一般的に、これらの操作は、あまり影響なくテンプレートインスタンスに適用されるため安全です。
テンプレートの編集
editTemplate操作では、displayNameやcopyInstanceOnItemCopyなど、テンプレートの基本プロパティを編集できます。
パラメータ data変更するプロパティを表すオブジェクト
[
{
"op" : "editTemplate" ,
"data" : {
"displayName" : "Client" ,
"copyInstanceOnItemCopy" : true
}
}
]
これにより、新しい表示名がClientになるようにテンプレートが更新されます。
これは、このテンプレートの既存のインスタンスに影響します。
テンプレートへのフィールドの追加
addField操作では、テンプレートにフィールドを追加します。
パラメータ data追加するフィールドを表すオブジェクト
[
{
"op" : "addField" ,
"data" : {
"displayName" : "Category" ,
"key" : "category" ,
"hidden" : false ,
"type" : "string"
}
}
]
これにより、displayNameおよびkeyがcategory に指定されている、非表示ではない新しい文字列フィールドが追加されます。
これは、このテンプレートの既存のインスタンスに影響します。
フィールドの並べ替え
reorderFields操作では、テンプレート内のフィールドのリストを、リクエストされたフィールドリストに合わせて並べ替えます。
パラメータ fieldKeysリクエストされた順番になっているフィールドキーの新しいリスト
{
"op" : "reorderFields" ,
"fieldKeys" : [ "field2" , "field1" , "field3" ]
}
これにより、テンプレートのフィールドは、最初にfield2、その後field1、field3が続くように並べ替えられます。
これは、このテンプレートの既存のインスタンスに影響します。フィールドは並べ替えられますが、フィールドの値はそのまま変わりません。
フィールドの操作
フィールドの操作により、テンプレートのスキーマが変換されます。以下に、このAPIで使用できる、以前に割り当てたテンプレートのデータを変更する可能性のある操作のリストを示します。
このような変更は、ファイルの変更ではなくテンプレートの変更としてログに記録されます。
フィールドの編集
editField操作では、displayName、description、key、hidden状態など、フィールドの基本プロパティをいくつでも編集できます。
パラメータ dataフィールドに設定する新しいプロパティを表すオブジェクト fieldKey編集するフィールドのキー
{
"op" : "editField" ,
"fieldKey" : "category" ,
"data" : {
"displayName" : "Customer Group"
}
}
これにより、新しい表示名がCustomer Group になるようにフィールドcategoryが更新されます。このキーが変更された場合、指定されたフィールドの既存の値は新しいキーに移行されます。検索インデックスは更新されますが、更新にかかる時間は、この変更の対象となるファイルの数によって異なります。
これは、このテンプレートの既存のインスタンスに影響する可能性があります。
フィールドの削除
removeField操作では、テンプレートからフィールドを削除します。
パラメータ fieldKeyテンプレートから削除するフィールドのキー
{
"op" : "removeField" ,
"fieldKey" : "brand"
}
これにより、フィールドbrandは、テンプレートに加えて、テンプレートのすべてのインスタンスから削除されます。検索インデックスは更新されますが、更新にかかる時間は、この変更の対象となるファイルの数によって異なります。
これは、このテンプレートの既存のインスタンスに影響します。
フィールドオプションの操作
およびメタデータフィールドタイプはどちらも、フィールドのオプションを変更するための追加操作をサポートしています。
操作 enumフィールドにオプションを追加しますenumフィールドのオプションを編集しますenumフィールドのオプションを並べ替えますenumフィールドのオプションを削除しますmultiSelectフィールドにオプションを追加しますmultiSelectフィールドのオプションを編集しますmultiSelectフィールドのオプションを並べ替えますmultiSelectフィールドのオプションを削除します