メタデータテンプレートの更新
メタデータテンプレートの更新
メタデータテンプレートを更新するには、操作の配列をPUT /metadata_templates/:scope/:templateKey/schema
APIに渡します。
curl -X PUT https://api.box.com/2.0/metadata_templates/enterprise/blueprintTemplate/schema \
-H 'Authorization: Bearer <ACCESS_TOKEN>" '
-H 'Content-Type: application/json" '
-d '[
{
"op": "editField",
"fieldKey": "category",
"data": {
"displayName": "Customer Group"
}
}
]'
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");
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})
updated_template = template.update_info(updates)
// 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 } ] }
*/
});
client.metadata.updateTemplate(
scope: "enterprise",
templateKey: "personnelRecord",
operation: .reorderEnumOptions(fieldKey: "department", enumOptionKeys: ["Marketing", "Sales", "HR"])
) { (result: Result<MetadataTemplate, BoxSDKError>) in
guard case let .success(template) = result {
print("Error updating metadata template")
return
}
print("Updated metadata template with ID \(template.id)")
}
操作
メタデータテンプレートの更新は、テンプレート自体を直接変更するのではなく、操作を利用して実行されます。この方法では、ファイルおよびフォルダにすでに適用されている既存のメタデータインスタンスを更新できます。
テンプレートの操作
テンプレートの操作により、テンプレートの詳細またはフィールドが更新されます。一般的に、これらの操作は、あまり影響なくテンプレートインスタンスに適用されるため安全です。
テンプレートの編集
editTemplate
操作では、displayName
やcopyInstanceOnItemCopy
など、テンプレートの基本プロパティを編集できます。
パラメータ | |
---|---|
data | An object representing the properties to change |
[
{
"op": "editTemplate",
"data": {
"displayName": "Client",
"copyInstanceOnItemCopy": true
}
}
]
これにより、新しい表示名がClientになるようにテンプレートが更新されます。
テンプレートへのフィールドの追加
addField
操作では、テンプレートにフィールドを追加します。
パラメータ | |
---|---|
data | An object representing field to add |
[
{
"op": "addField",
"data": {
"displayName": "Category",
"key": "category",
"hidden": false,
"type": "string"
}
}
]
これにより、displayName
およびkey
がcategoryに指定されている、非表示ではない新しい文字列フィールドが追加されます。
フィールドの並べ替え
reorderFields
操作では、テンプレート内のフィールドのリストを、リクエストされたフィールドリストに合わせて並べ替えます。
パラメータ | |
---|---|
fieldKeys | The new list of field keys in the requested order |
{
"op": "reorderFields",
"fieldKeys": ["field2", "field1", "field3"]
}
これにより、テンプレートのフィールドは、最初にfield2
、その後field1
、field3
が続くように並べ替えられます。
フィールドの操作
フィールドの操作により、テンプレートのスキーマが変換されます。以下に、このAPIで使用できる、以前に割り当てたテンプレートのデータを変更する可能性のある操作のリストを示します。
このような変更は、ファイルの変更ではなくテンプレートの変更としてログに記録されます。
フィールドの編集
editField
操作オプションでは、displayName
、description
、key
、hidden
状態など、フィールドの基本プロパティをいくつでも編集できます。
パラメータ | |
---|---|
data | An object representing the new properties to set for the field |
fieldKey | The key of the field to be edited |
{
"op": "editField",
"fieldKey": "category",
"data": {
"displayName": "Customer Group"
}
}
これにより、新しい表示名がCustomer Groupになるようにフィールドcategory
が更新されます。このキーが変更された場合、指定されたフィールドの既存の値は新しいキーに移行されます。検索インデックスは更新されますが、更新にかかる時間は、この変更の対象となるファイルの数によって異なります。
フィールドの削除
removeField
操作では、テンプレートからフィールドを削除します。
パラメータ | |
---|---|
fieldKey | The key of the field to remove from the template |
{
"op": "removeField",
"fieldKey": "brand"
}
これにより、フィールドbrand
は、テンプレートに加えて、テンプレートのすべてのインスタンスから削除されます。検索インデックスは更新されますが、更新にかかる時間は、この変更の対象となるファイルの数によって異なります。
フィールドオプションの操作
enum
およびmultiSelect
メタデータフィールドタイプはどちらも、フィールドのオプションを変更するための追加操作をサポートしています。
操作 | |
---|---|
addEnumOption | Adds an option to an enum field |
editEnumOption | Edits an enum field option |
reorderEnumOptions | Re-orders the options on an enum field |
removeEnumOption | Removes an enum field options |
addMultiSelectOption | Adds an option to an multiSelect field |
editMultiSelectOption | Edits an multiSelect field option |
reorderMultiSelectOptions | Re-orders the options on an multiSelect field |
removeMultiSelectOption | Removes an multiSelect field options |