Box Developerドキュメント

Box Developerドキュメントの新しいベータ版サイトがまもなくリリースされる予定です。最新の開発者向けガイド、APIリファレンス、AI搭載の検索により、Boxを使用した迅速な開発をサポートします。更新情報については今しばらくお待ちください。

メタデータテンプレートの作成

ガイド メタデータ メタデータテンプレート メタデータテンプレートの作成

メタデータテンプレートの作成

メタデータテンプレートを作成するには、scopedisplayName、および必要に応じて一連のfieldsPOST /metadata_templates/schema APIに渡します。

cURL
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"}
          ]
        }
      ]
    }'
Node/TypeScript v10
await client.metadataTemplates.createMetadataTemplate({
  scope: 'enterprise',
  displayName: templateKey,
  templateKey: templateKey,
  fields: [
    {
      type: 'string' as CreateMetadataTemplateRequestBodyFieldsTypeField,
      key: 'testName',
      displayName: 'testName',
    } 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);
Python v10
client.metadata_templates.create_metadata_template(
    "enterprise",
    template_key,
    template_key=template_key,
    fields=[
        CreateMetadataTemplateFields(
            type=CreateMetadataTemplateFieldsTypeField.STRING,
            key="testName",
            display_name="testName",
        ),
        CreateMetadataTemplateFields(
            type=CreateMetadataTemplateFieldsTypeField.FLOAT,
            key="age",
            display_name="age",
        ),
        CreateMetadataTemplateFields(
            type=CreateMetadataTemplateFieldsTypeField.DATE,
            key="birthDate",
            display_name="birthDate",
        ),
        CreateMetadataTemplateFields(
            type=CreateMetadataTemplateFieldsTypeField.ENUM,
            key="countryCode",
            display_name="countryCode",
            options=[
                CreateMetadataTemplateFieldsOptionsField(key="US"),
                CreateMetadataTemplateFieldsOptionsField(key="CA"),
            ],
        ),
        CreateMetadataTemplateFields(
            type=CreateMetadataTemplateFieldsTypeField.MULTISELECT,
            key="sports",
            display_name="sports",
            options=[
                CreateMetadataTemplateFieldsOptionsField(key="basketball"),
                CreateMetadataTemplateFieldsOptionsField(key="football"),
                CreateMetadataTemplateFieldsOptionsField(key="tennis"),
            ],
        ),
    ],
)
.NET v10
await client.MetadataTemplates.CreateMetadataTemplateAsync(requestBody: new CreateMetadataTemplateRequestBody(scope: "enterprise", displayName: templateKey) { TemplateKey = templateKey, Fields = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.String, key: "testName", displayName: "testName"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Float, key: "age", displayName: "age"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Date, key: "birthDate", displayName: "birthDate"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Enum, key: "countryCode", displayName: "countryCode") { Options = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "US"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "CA")}) },new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.MultiSelect, key: "sports", displayName: "sports") { Options = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "basketball"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "football"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "tennis")}) }}) });
Swift v10
try await client.metadataTemplates.createMetadataTemplate(requestBody: CreateMetadataTemplateRequestBody(scope: "enterprise", displayName: templateKey, templateKey: templateKey, fields: [CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.string, key: "testName", displayName: "testName"), CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.float, key: "age", displayName: "age"), CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.date, key: "birthDate", displayName: "birthDate"), CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.enum_, key: "countryCode", displayName: "countryCode", options: [CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "US"), CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "CA")]), CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.multiSelect, key: "sports", displayName: "sports", options: [CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "basketball"), CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "football"), CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "tennis")])]))
Java v10
client.getMetadataTemplates().createMetadataTemplate(new CreateMetadataTemplateRequestBody.Builder("enterprise", templateKey).templateKey(templateKey).fields(Arrays.asList(new CreateMetadataTemplateRequestBodyFieldsField(CreateMetadataTemplateRequestBodyFieldsTypeField.STRING, "testName", "testName"), new CreateMetadataTemplateRequestBodyFieldsField(CreateMetadataTemplateRequestBodyFieldsTypeField.FLOAT, "age", "age"), new CreateMetadataTemplateRequestBodyFieldsField(CreateMetadataTemplateRequestBodyFieldsTypeField.DATE, "birthDate", "birthDate"), new CreateMetadataTemplateRequestBodyFieldsField.Builder(CreateMetadataTemplateRequestBodyFieldsTypeField.ENUM, "countryCode", "countryCode").options(Arrays.asList(new CreateMetadataTemplateRequestBodyFieldsOptionsField("US"), new CreateMetadataTemplateRequestBodyFieldsOptionsField("CA"))).build(), new CreateMetadataTemplateRequestBodyFieldsField.Builder(CreateMetadataTemplateRequestBodyFieldsTypeField.MULTISELECT, "sports", "sports").options(Arrays.asList(new CreateMetadataTemplateRequestBodyFieldsOptionsField("basketball"), new CreateMetadataTemplateRequestBodyFieldsOptionsField("football"), new CreateMetadataTemplateRequestBodyFieldsOptionsField("tennis"))).build())).build())
.NET v6
await client.MetadataTemplates.CreateMetadataTemplateAsync(requestBody: new CreateMetadataTemplateRequestBody(scope: "enterprise", displayName: templateKey) { TemplateKey = templateKey, Fields = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.String, key: "testName", displayName: "testName"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Float, key: "age", displayName: "age"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Date, key: "birthDate", displayName: "birthDate"),new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.Enum, key: "countryCode", displayName: "countryCode") { Options = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "US"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "CA")}) },new CreateMetadataTemplateRequestBodyFieldsField(type: CreateMetadataTemplateRequestBodyFieldsTypeField.MultiSelect, key: "sports", displayName: "sports") { Options = Array.AsReadOnly(new [] {new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "basketball"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "football"),new CreateMetadataTemplateRequestBodyFieldsOptionsField(key: "tennis")}) }}) });
Node v4
await client.metadataTemplates.createMetadataTemplate({
  scope: 'enterprise',
  displayName: templateKey,
  templateKey: templateKey,
  fields: [
    {
      type: 'string' as CreateMetadataTemplateRequestBodyFieldsTypeField,
      key: 'testName',
      displayName: 'testName',
    } 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);

メタデータテンプレートは、enterpriseスコープのみに作成できます。globalスコープの場合はテンプレートを作成できません。

管理者権限が必須

メタデータテンプレートの作成は、管理者権限を持つユーザーに制限されています。つまり、管理者、または管理者から会社のメタデータテンプレートを作成、編集する権限が付与されている共同管理者だけがウェブアプリまたはAPIを使用してテンプレートを管理できます。

テンプレートフィールド

fields属性は、ユーザーがテンプレートで入力できる個々のフィールドのセットを表します。たとえば、customerテンプレートにstringタイプのnameフィールドがあるとします。

テンプレートフィールドは、stringenumfloatdateenum、またはmultiSelectタイプのいずれかになります。各フィールドには少なくともtypedisplayName、およびkeyが必要です。

{
  "scope": "enterprise",
  "displayName": "Customer",
  "fields": [
    {
      "type": "string",
      "key": "name",
      "displayName": "Name"
    }
  ]
}

enumおよびmultiSelectフィールドタイプは、ユーザーが項目のリストからそれぞれ1つまたは複数のオプションを選択できるドロップダウンリストを表します。

{
  "scope": "enterprise",
  "displayName": "Customer",
  "fields": [
    {
      "type": "enum",
      "key": "industry",
      "displayName": "Industry",
      "options": [
        {"key": "Technology"},
        {"key": "Healthcare"},
        {"key": "Legal"}
      ]
    }
  ]
}

メタデータテンプレートフィールドの詳細を確認する

テンプレートキー

メタデータテンプレートが作成されると、templateKeyを明示的に指定した場合を除き、テンプレートのdisplayNameから自動的にtemplateKeyが生成されます。テンプレートキーを作成する際に、名前に含まれるスペースと規格外の文字は削除され、文字列はキャメルケースに変換されます。

たとえば、Test Name (with-special_) Charactersという名前のメタデータテンプレートのtemplateKeytestNameWithspecialCharactersになります。

その後、このテンプレートキーは、テンプレートの情報を取得したり、項目にテンプレートを割り当てたりするためのAPIリクエストを実行するときに使用されます。