Creates a new metadata template that can be applied to files and folders.
true
false
Whether or not to copy any metadata attached to a file or folder when it is copied. By default, metadata is not copied along with a file or folder when it is copied.
Product Info
4096
The display name of the template.
An ordered list of template fields which are part of the template. Each field can be a regular text field, date field, number field, as well as a single or multi-select list.
The category
4096
A description of the field. This is not shown to the user.
Category
4096
The display name of the field as it is shown to the user in the web and mobile apps.
category
256
A unique identifier for the field. The identifier must be unique within the template to which it belongs.
A list of options for this field. This is used in combination with the
enum
and multiSelect
field types.
Category 1
The text value of the option. This represents both the display name of the option and the internal key used when updating templates.
string
The type of field. The basic fields are a string
field for text, a
float
field for numbers, and a date
fields to present the user with a
date-time picker.
Additionally, metadata templates support an enum
field for a basic list
of items, and multiSelect
field for a similar list of items where the
user can select more than one value.
Value is one of string
,float
,date
,enum
,multiSelect
enterprise
The scope of the metadata template to create. Applications can only create templates for use within the authenticated user's enterprise.
This value needs to be set to enterprise
, as global
scopes can
not be created by applications.
productInfo
64
A unique identifier for the template. This identifier needs to be unique across the enterprise for which the metadata template is being created.
When not provided, the API will create a unique templateKey
based on the value of the displayName
.
The schema representing the metadata template created.
Returned if the request parameters or body is not valid.
bad_request
when the body does not contain a valid request. In many
cases this response will include extra details on what fields are missing.Returned when the user does not have the permission to create the metadata
template. This can happen for a few reasons, most commonly when the user
does not have (co-)admin permissions, or the application tries to create a
template with the global
scope.
An unexpected client error.
curl -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"}
]
}
]
}'
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);
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('Metadata template ID {0}/{1} created!'.format(template.scope, template.templateKey))
// 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'
}
)
.then(template => {
/* template -> {
id: '17f2d715-6acb-45f2-b96a-28b15efc9faa',
templateKey: 'vcontract',
scope: 'enterprise_12345',
displayName: 'Vendor Contract',
hidden: true,
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)")
}