BoxWorks 2024でコンテンツとAIの可能性について紹介します。
詳細を表示ファイルやフォルダに適用可能な新しいメタデータテンプレートを作成します。
true
false
ファイルまたはフォルダをコピーするときに、追加されているメタデータをコピーするかどうか。デフォルトでは、ファイルまたはフォルダのコピー時に、メタデータは一緒にコピーされません。
"Product Info"
4096
テンプレートの表示名。
テンプレートに含まれるテンプレートフィールドの並べ替えられたリスト。各フィールドは、通常のテキストフィールド、日付フィールド、数値フィールド、単一または複数選択リストのいずれかになります。
"string"
フィールドのタイプ。基本のフィールドは、テキストを表すstring
フィールド、数値を表すfloat
フィールド、およびユーザーに日時選択機能を表示するためのdate
フィールドです。
さらに、メタデータテンプレートは、基本の項目リストを表すenum
フィールドのほか、ユーザーが複数の値を選択できる同様の項目リストを表す multiSelect
フィールドをサポートしています。
次の値の いずれか1つ: string
,float
,date
,enum
,multiSelect
"The category"
4096
フィールドの説明。ユーザーには表示されません。
"Category"
4096
ウェブアプリおよびモバイルアプリでユーザーに表示されるフィールドの表示名。
"category"
256
フィールドの一意の識別子。この識別子は、そのフィールドが属するテンプレート内で一意である必要があります。
このフィールドのオプションのリスト。enum
およびmultiSelect
フィールドタイプと組み合わせて使用します。
"Category 1"
オプションのテキスト値。オプションの表示名と、テンプレートの更新時に使用される内部キーの両方を表します。
"enterprise"
作成するメタデータテンプレートのスコープ。アプリケーションで作成できるのは、認証済みユーザーの会社内で使用するテンプレートのみです。
この値はenterprise
に設定する必要があります。global
スコープはアプリケーションで作成できないからです。
^[a-zA-Z_][-a-zA-Z0-9_]*$
"productInfo"
64
テンプレートの一意の識別子。この識別子は、メタデータテンプレート作成の対象となる会社全体で一意である必要があります。
指定しなかった場合、APIによりdisplayName
の値に基づいて一意のtemplateKey
が作成されます。
作成されたメタデータテンプレートを表すスキーマ。
リクエストのパラメータまたは本文が無効な場合に返されます。
bad_request
- 本文に有効なリクエストが含まれていない場合に返されます。多くの場合、このレスポンスには、不足しているフィールドに関する追加の詳細が含まれます。ユーザーにメタデータテンプレートを作成する権限がない場合に返されます。その理由はいくつかありますが、最も一般的なのは、ユーザーが (共同) 管理者権限を持っていないこと、またはアプリケーションがglobal
スコープのテンプレートを作成 しようとしていることです。
予期しないクライアントエラー。
curl -i -X POST "https://api.box.com/2.0/metadata_templates/schema" \
-H "authorization: Bearer <ACCESS_TOKEN>" \
-H "content-type: application/json" \
-d '{
"scope": "enterprise",
"displayName": "Customer",
"fields": [
{
"type": "string",
"key": "name",
"displayName": "Name",
"description": "The customer name",
"hidden": false
},
{
"type": "date",
"key": "last_contacted_at",
"displayName": "Last Contacted At",
"description": "When this customer was last contacted at",
"hidden": false
},
{
"type": "enum",
"key": "industry",
"displayName": "Industry",
"options": [
{"key": "Technology"},
{"key": "Healthcare"},
{"key": "Legal"}
]
},
{
"type": "multiSelect",
"key": "role",
"displayName": "Contact Role",
"options": [
{"key": "Developer"},
{"key": "Business Owner"},
{"key": "Marketing"},
{"key": "Legal"},
{"key": "Sales"}
]
}
]
}'
await client.metadataTemplates.createMetadataTemplate({
scope: 'enterprise',
displayName: templateKey,
templateKey: templateKey,
fields: [
{
type: 'string' as CreateMetadataTemplateRequestBodyFieldsTypeField,
key: 'name',
displayName: 'name',
} satisfies CreateMetadataTemplateRequestBodyFieldsField,
{
type: 'float' as CreateMetadataTemplateRequestBodyFieldsTypeField,
key: 'age',
displayName: 'age',
} satisfies CreateMetadataTemplateRequestBodyFieldsField,
{
type: 'date' as CreateMetadataTemplateRequestBodyFieldsTypeField,
key: 'birthDate',
displayName: 'birthDate',
} satisfies CreateMetadataTemplateRequestBodyFieldsField,
{
type: 'enum' as CreateMetadataTemplateRequestBodyFieldsTypeField,
key: 'countryCode',
displayName: 'countryCode',
options: [
{
key: 'US',
} satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField,
{
key: 'CA',
} satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField,
],
} satisfies CreateMetadataTemplateRequestBodyFieldsField,
{
type: 'multiSelect' as CreateMetadataTemplateRequestBodyFieldsTypeField,
key: 'sports',
displayName: 'sports',
options: [
{
key: 'basketball',
} satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField,
{
key: 'football',
} satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField,
{
key: 'tennis',
} satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField,
],
} satisfies CreateMetadataTemplateRequestBodyFieldsField,
],
} satisfies CreateMetadataTemplateRequestBody);
client.metadata_templates.create_metadata_template(
"enterprise",
template_key,
template_key=template_key,
fields=[
CreateMetadataTemplateFields(
key="firstName",
display_name="First name",
description="Person first name",
type=CreateMetadataTemplateFieldsTypeField.STRING.value,
),
CreateMetadataTemplateFields(
key="lastName",
display_name="Last name",
description="Person last name",
type=CreateMetadataTemplateFieldsTypeField.STRING.value,
),
CreateMetadataTemplateFields(
key="dateOfBirth",
display_name="Birth date",
description="Person date of birth",
type=CreateMetadataTemplateFieldsTypeField.DATE.value,
),
CreateMetadataTemplateFields(
key="age",
display_name="Age",
description="Person age",
type=CreateMetadataTemplateFieldsTypeField.FLOAT.value,
),
CreateMetadataTemplateFields(
key="hobby",
display_name="Hobby",
description="Person hobby",
type=CreateMetadataTemplateFieldsTypeField.MULTISELECT.value,
),
],
)
await client.MetadataTemplates.CreateMetadataTemplateAsync(requestBody: new CreateMetadataTemplateRequestBody(scope: "enterprise", displayName: templateKey) { TemplateKey = templateKey, Fields = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsField(key: "firstName", displayName: "First name", type: CreateMetadataTemplateRequestBodyFieldsTypeField.String) { Description = "Person first name" },new CreateMetadataTemplateRequestBodyFieldsField(key: "lastName", displayName: "Last name", type: CreateMetadataTemplateRequestBodyFieldsTypeField.String) { Description = "Person last name" },new CreateMetadataTemplateRequestBodyFieldsField(key: "dateOfBirth", displayName: "Birth date", type: CreateMetadataTemplateRequestBodyFieldsTypeField.Date) { Description = "Person date of birth" },new CreateMetadataTemplateRequestBodyFieldsField(key: "age", displayName: "Age", type: CreateMetadataTemplateRequestBodyFieldsTypeField.Float) { Description = "Person age" },new CreateMetadataTemplateRequestBodyFieldsField(key: "hobby", displayName: "Hobby", type: CreateMetadataTemplateRequestBodyFieldsTypeField.MultiSelect) { Description = "Person hobby" }}) });
MetadataTemplate.Field metadataField = new MetadataTemplate.Field();
metadataField.setType("string");
metadataField.setKey("text");
metadataField.setDisplayName("Text");
List<MetadataTemplate.Field> fields = new ArrayList<MetadataTemplate.Field>();
fields.add(metadataField);
MetadataTemplate template = MetadataTemplate.createMetadataTemplate(api, "enterprise", "CustomField", "Custom Field", false, fields);
final JsonObject jsonObject = new JsonObject();
jsonObject.add("text", "This is a test text");
Metadata metadata = new Metadata(jsonObject);
boxFile.createMetadata("CustomField", metadata);
from boxsdk.object.metadata_template import MetadataField, MetadataFieldType
fields = [
MetadataField(MetadataFieldType.STRING, 'Name'),
MetadataField(MetadataFieldType.DATE, 'Birthday', 'bday'),
MetadataField(MetadataFieldType.ENUM, 'State', options=['CA', 'TX', 'NY'])
]
template = client.create_metadata_template('Employee Record', fields, hidden=True)
print(f'Metadata template ID {template.scope}/{template.templateKey} created!')
var templateParams = new BoxMetadataTemplate()
{
TemplateKey = "marketingCollateral",
DisplayName = "Marketing Collateral",
Scope = "enterprise",
Fields = new List<BoxMetadataTemplateField>()
{
new BoxMetadataTemplateField()
{
Type = "enum",
Key = "audience",
DisplayName = "Audience",
Options = new List<BoxMetadataTemplateFieldOption>()
{
new BoxMetadataTemplateFieldOption() { Key = "internal" },
new BoxMetadataTemplateFieldOption() { Key = "external" }
}
},
new BoxMetadataTemplateField()
{
Type = "string",
Key = "author",
DisplayName = "Author"
}
}
};
BoxMetadataTemplate template = await client.MetadataManager.CreateMetadataTemplate(templateParams);
// Create a new template, but hide it for now until it's ready for use
client.metadata.createTemplate(
'Vendor Contract',
[
{
type: 'date',
key: 'signed',
displayName: 'Date Signed'
},
{
type: 'string',
key: 'vendor',
displayName: 'Vendor'
},
{
type: 'enum',
key: 'fy',
displayName: 'Fiscal Year',
options: [
{key: 'FY17'},
{key: 'FY18'},
{key: 'FY19'}
]
}
],
{
hidden: true,
templateKey: 'vcontract',
copyInstanceOnItemCopy: false
}
)
.then(template => {
/* template -> {
id: '17f2d715-6acb-45f2-b96a-28b15efc9faa',
templateKey: 'vcontract',
scope: 'enterprise_12345',
displayName: 'Vendor Contract',
hidden: true,
copyInstanceOnItemCopy: 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' } ],
hidden: false } ] }
*/
});
var templateFields: [MetadataField] = []
templateFields.append(MetadataField(
type: "string",
key: "name",
displayName: "Full Name"
))
templateFields.append(MetadataField(
type: "date",
key: "birthday",
displayName: "Birthday"
))
templateFields.append(MetadataField(
type: "enum",
key: "department",
displayName: "Department",
options: [
["key": "HR"],
["key": "Sales"],
["key": "Marketing"],
]
))
client.metadata.createTemplate(
scope: "enterprise",
templateKey: "personnelRecord",
displayName: "Personnel Record",
hidden: false,
fields: templateFields
) { (result: Result<MetadataTemplate, BoxSDKError>) in
guard case let .success(template) = result {
print("Error creating metadata template")
return
}
print("Created 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"
}