Box Developerドキュメント

メタデータテンプレートを更新

put
https://api.box.com/2.0
/metadata_templates/:scope/:template_key/schema

メタデータテンプレートを更新します。

メタデータテンプレートを更新できるのは、テンプレートがすでに存在する場合のみです。

更新はアトミックに適用されます。操作の適用中にエラー場が発生した場合、メタデータテンプレートは変更されません。

リクエスト

bearer [ACCESS_TOKEN]
application/json-patch+json

パスパラメータ

stringパス内必須
global

メタデータテンプレートのスコープ

次の値のいずれか1つ: global,enterprise

stringパス内必須
properties

メタデータテンプレートの名前

リクエスト本文

object array本文内必須

メタデータテンプレートに変更を加えるためのJSON-Patchの指定。

変更は操作オブジェクトのJSON配列として表されます。

associative array本文内

操作するデータ。これは、実行される操作によって異なります。

object本文内
"Aaron Levie"

メタデータテンプレートに存在する各フィールドの値。global.propertiesテンプレートの場合、汎用的なキー/値ペアをテンプレートに保存できるため、0個以上のフィールドのリストにすることができます。

string本文内省略可能
"option1"

1つのenumオプションに影響する操作の場合は、影響を受けるオプションのキーを定義します。

string array本文内省略可能
["option1","option2","option3"]

複数のenumオプションに影響する操作の場合は、影響を受けるオプションのキーを定義します。

string本文内省略可能
"category"

1つのフィールドに影響する操作の場合は、影響を受けるフィールドのキーを定義します。

string array本文内省略可能
["category","name"]

複数のフィールドに影響する操作の場合は、影響を受けるフィールドのキーを定義します。

string本文内省略可能
"option1"

1つの複数選択オプションに影響する操作の場合は、影響を受けるオプションのキーを定義します。

string array本文内省略可能
["option1","option2","option3"]

複数の複数選択オプションに影響する操作の場合は、影響を受けるオプションのキーを定義します。

string本文内必須
"addEnumOption"

テンプレートに対して実行する変更のタイプ。その中には、既存のテンプレートを変更する際に危険を伴うものもあります。

次の値のいずれか1つ: editTemplate,addField,reorderFields,addEnumOption,reorderEnumOptions,reorderMultiSelectOptions,addMultiSelectOption,editField,removeField,editEnumOption,removeEnumOption,editMultiSelectOption,removeMultiSelectOption

レスポンス

カスタムテンプレートデータを含め、更新されたメタデータテンプレートを返します。

リクエスト本文に有効なメタデータスキーマが含まれていません。

ユーザーがテンプレートを作成できないスコープがリクエスト本文に含まれています。

リクエストしたテンプレートが見つかりませんでした

予期しないクライアントエラー。

put
メタデータテンプレートを更新
このドキュメント内で一部のAPIを試せるようになりました。
ログイン

リクエストの例

cURL
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"
         }
       }
     ]'
TypeScript Gen
await client.metadataTemplates.updateMetadataTemplate(
  'enterprise' as UpdateMetadataTemplateScope,
  templateKey,
  [
    {
      op: 'addField' as UpdateMetadataTemplateRequestBodyOpField,
      fieldKey: 'newfieldname',
      data: { ['type']: 'string', ['displayName']: 'newFieldName' },
    } satisfies UpdateMetadataTemplateRequestBody,
  ],
);
Python Gen
client.metadata_templates.update_metadata_template(
    UpdateMetadataTemplateScope.ENTERPRISE.value,
    template_key,
    [
        UpdateMetadataTemplateRequestBody(
            op=UpdateMetadataTemplateRequestBodyOpField.ADDFIELD.value,
            field_key="newfieldname",
            data={"type": "string", "displayName": "newFieldName"},
        )
    ],
)
.NET Gen
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" } } }}));
Java
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);
Python
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)
.NET
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");
Node
// 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 } ] }
		*/
	});
iOS
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)")
}

レスポンスの例

{
  "id": "58063d82-4128-7b43-bba9-92f706befcdf",
  "type": "metadata_template",
  "copyInstanceOnItemCopy": true,
  "displayName": "Product Info",
  "fields": [
    {
      "type": "string",
      "key": "category",
      "displayName": "Category",
      "description": "The category",
      "hidden": true,
      "options": [
        {
          "key": "Category 1",
          "id": "45dc2849-a4a7-40a9-a751-4a699a589190"
        }
      ],
      "id": "822227e0-47a5-921b-88a8-494760b2e6d2"
    }
  ],
  "hidden": true,
  "scope": "enterprise_123456",
  "templateKey": "productInfo"
}