Stay organized with collections
Save and categorize content based on your preferences.
As a reseller you can associate metadata, such as a telephone number or a
purchase order number, with each device. You can associate metadata by calling
the API or by uploading a CSV file
in the zero-touch portal. Table 1 shows who can associate and view metadata:
Table 1. Metadata permissions
Task
Resellers
Customers
Associate metadata by calling the API
Associate metadata by uploading a CSV file to the zero-touch portal
View device metadata in the results of API calls
View device metadata in the zero-touch portal
Assign metadata
To associate metadata with each device, call the
partners.devices.metadata method. You can add
telephone and order numbers for your Android devices using keys from the table 2
below:
Table 2. Metadata keys for Android devices
Data
Key
Value type
Example
Telephone number
phonenumber
String
+1 (800) 555-0100
Order number
ordernumber
String
GOOG#123/ABC-123456
Both metadata values are free-form strings, so you can use a format that makes
sense for your organization.
For ChromeOS devices, you can use the keys from table 3 below:
Table 3. Metadata keys for ChromeOS devices
Data
Key
Value type
Example
Order number
ordernumber
String
GOOG#123/ABC-123456
To assign metadata as you create devices, include the metadata when calling
claimAsync. The example below shows setting a
telephone number and order number for the existing device TARGET_DEVICE_ID:
Java
// Allowed metadata dictionary keys.privatestaticStringMETADATA_KEY_PHONE_NUMBER="phonenumber";privatestaticStringMETADATA_KEY_ORDER_NUMBER="ordernumber";// ...// Create the metadata record with the values.DeviceMetadatametadata=newDeviceMetadata();Map<String,String>entries=newHashMap<String,String>();entries.put(METADATA_KEY_ORDER_NUMBER,"GOOG123/ABC-#123456");entries.put(METADATA_KEY_PHONE_NUMBER,"+1 (800) 555-0100");metadata.setEntries(entries);// Set the metadata values on the target device.UpdateDeviceMetadataRequestbody=newUpdateDeviceMetadataRequest();body.setDeviceMetadata(metadata);DeviceMetadataresponse=service.partners().devices().metadata(PARTNER_ID,targetDeviceId,body).execute();
.NET
// Allowed metadata dictionary keys.privatestaticstringMetadataKeyPhoneNumber="phonenumber";privatestaticstringMetadataKeyOrderNumber="ordernumber";// ...// Create the metadata record with the values.DeviceMetadatametadata=newDeviceMetadata{Entries=newDictionary<string,string>{{MetadataKeyOrderNumber,"GOOG123/ABC-#123456"},{MetadataKeyPhoneNumber,"+1 (800) 555-0100"}}};// Set the metadata values on the target device.UpdateDeviceMetadataRequestbody=newUpdateDeviceMetadataRequest{DeviceMetadata=metadata};varrequest=service.Partners.Devices.Metadata(body,PartnerId,targetDeviceId);varresults=request.Execute();
Python
# Allowed metadata dictionary keys.METADATA_KEY_ENTRIES="entries";METADATA_KEY_PHONE_NUMBER="phonenumber";METADATA_KEY_ORDER_NUMBER="ordernumber";# ...# Create the record with values.new_metadata={METADATA_KEY_ENTRIES:{ \
METADATA_KEY_PHONE_NUMBER:'+1 (800) 555-0100', \
METADATA_KEY_ORDER_NUMBER:'GOOG123/ABC-#123456'}}# Set the metadata values on the target device.response=service.partners().devices().metadata(metadataOwnerId=PARTNER_ID,deviceId=target_device_id,body={'deviceMetadata':new_metadata}).execute()
Your metadata arguments replace existing metadata values for the same key.
Delete metadata
You can delete your metadata from devices. Pass empty strings for metadata
values you want to delete. The example below shows how to delete the telephone
number:
Java
// Create the metadata record with the values.DeviceMetadatametadata=newDeviceMetadata();Map<String,String>entries=newHashMap<String,String>();entries.put(METADATA_KEY_PHONE_NUMBER,"");metadata.setEntries(entries);// Call partners().devices().metadata() to remove the phone metadata from the device...
.NET
// Create the metadata record with empty values.DeviceMetadatametadata=newDeviceMetadata{Entries=newDictionary<string,string>{{MetadataKeyPhoneNumber,""}}};// Call Partners.Devices.Metadata to remove the phone metadata from the device...
Python
# Create the metadata record with empty values.metadata_to_remove={METADATA_KEY_ENTRIES:{METADATA_KEY_PHONE_NUMBER:''}}# Call partners().devices().metadata() to remove the phone number# metadata from the device...
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-08-07 UTC."],[[["\u003cp\u003eResellers can associate metadata, such as telephone and order numbers, with each device through the API or by uploading a CSV file in the zero-touch portal.\u003c/p\u003e\n"],["\u003cp\u003eMetadata can be assigned to Android devices using \u003ccode\u003ephonenumber\u003c/code\u003e and \u003ccode\u003eordernumber\u003c/code\u003e keys, while ChromeOS devices only use the \u003ccode\u003eordernumber\u003c/code\u003e key.\u003c/p\u003e\n"],["\u003cp\u003eBoth resellers and customers can view device metadata, but only resellers can associate metadata.\u003c/p\u003e\n"],["\u003cp\u003eYou can assign metadata to devices by using the \u003ccode\u003epartners.devices.metadata\u003c/code\u003e method or when creating devices with \u003ccode\u003eclaimAsync\u003c/code\u003e, including the metadata in the request.\u003c/p\u003e\n"],["\u003cp\u003eMetadata values for a specific key can be updated by providing new values, or deleted by providing an empty string for that metadata key.\u003c/p\u003e\n"]]],["Resellers can associate metadata, like telephone or order numbers, with devices via API calls or CSV uploads. This metadata can be viewed by resellers and customers. For Android, keys `phonenumber` and `ordernumber` are used; for ChromeOS, only `ordernumber` is available. Metadata is assigned using the `partners.devices.metadata` method, including it in `claimAsync`, or setting values via an API call. To delete metadata, empty string values should be passed for the target keys.\n"],null,["# Device metadata\n\nAs a reseller you can associate metadata, such as a telephone number or a\npurchase order number, with each device. You can associate metadata by calling\nthe API or by [uploading a CSV file](/zero-touch/guides/portal#devices-import)\nin the zero-touch portal. Table 1 shows who can associate and view metadata:\n\n**Table 1**. Metadata permissions\n\n| Task | Resellers | Customers |\n|---------------------------------------------------------------------|-----------|-----------|\n| Associate metadata by calling the API | | |\n| Associate metadata by uploading a CSV file to the zero-touch portal | | |\n| View device metadata in the results of API calls | | |\n| View device metadata in the zero-touch portal | | |\n\nAssign metadata\n---------------\n\nTo associate metadata with each device, call the\n[`partners.devices.metadata`](/zero-touch/reference/reseller/rest/v1/partners.devices/metadata) method. You can add\ntelephone and order numbers for your Android devices using keys from the table 2\nbelow:\n\n**Table 2**. Metadata keys for Android devices\n\n| Data | Key | Value type | Example |\n|------------------|---------------|------------|-----------------------|\n| Telephone number | `phonenumber` | String | *+1 (800) 555-0100* |\n| Order number | `ordernumber` | String | *GOOG#123/ABC-123456* |\n\nBoth metadata values are free-form strings, so you can use a format that makes\nsense for your organization.\n\nFor ChromeOS devices, you can use the keys from table 3 below:\n\n**Table 3**. Metadata keys for ChromeOS devices\n\n| Data | Key | Value type | Example |\n|--------------|---------------|------------|-----------------------|\n| Order number | `ordernumber` | String | *GOOG#123/ABC-123456* |\n\nTo assign metadata as you create devices, include the metadata when calling\n[`claimAsync`](/zero-touch/reference/reseller/rest/v1/partners.devices/claimAsync). The example below shows setting a\ntelephone number and order number for the existing device `TARGET_DEVICE_ID`: \n\n### Java\n\n```java\n// Allowed metadata dictionary keys.\nprivate static String METADATA_KEY_PHONE_NUMBER = \"phonenumber\";\nprivate static String METADATA_KEY_ORDER_NUMBER = \"ordernumber\";\n\n// ...\n// Create the metadata record with the values.\nDeviceMetadata metadata = new DeviceMetadata();\nMap\u003cString,String\u003e entries = new HashMap\u003cString, String\u003e();\nentries.put(METADATA_KEY_ORDER_NUMBER, \"GOOG123/ABC-#123456\");\nentries.put(METADATA_KEY_PHONE_NUMBER, \"+1 (800) 555-0100\");\nmetadata.setEntries(entries);\n\n// Set the metadata values on the target device.\nUpdateDeviceMetadataRequest body = new UpdateDeviceMetadataRequest();\nbody.setDeviceMetadata(metadata);\n\nDeviceMetadata response = service\n .partners()\n .devices()\n .metadata(PARTNER_ID, targetDeviceId, body)\n .execute();\n```\n\n### .NET\n\n```c#\n// Allowed metadata dictionary keys.\nprivate static string MetadataKeyPhoneNumber = \"phonenumber\";\nprivate static string MetadataKeyOrderNumber = \"ordernumber\";\n\n// ...\n// Create the metadata record with the values.\nDeviceMetadata metadata = new DeviceMetadata\n{\n Entries = new Dictionary\u003cstring, string\u003e {\n {MetadataKeyOrderNumber, \"GOOG123/ABC-#123456\"},\n {MetadataKeyPhoneNumber, \"+1 (800) 555-0100\"}\n }\n};\n\n// Set the metadata values on the target device.\nUpdateDeviceMetadataRequest body = new UpdateDeviceMetadataRequest\n{\n DeviceMetadata = metadata\n};\nvar request = service.Partners.Devices.Metadata(body, PartnerId, targetDeviceId);\nvar results = request.Execute();\n```\n\n### Python\n\n```python\n# Allowed metadata dictionary keys.\nMETADATA_KEY_ENTRIES = \"entries\";\nMETADATA_KEY_PHONE_NUMBER = \"phonenumber\";\nMETADATA_KEY_ORDER_NUMBER = \"ordernumber\";\n\n# ...\n# Create the record with values.\nnew_metadata = {METADATA_KEY_ENTRIES:{ \\\n METADATA_KEY_PHONE_NUMBER:'+1 (800) 555-0100', \\\n METADATA_KEY_ORDER_NUMBER:'GOOG123/ABC-#123456'}}\n\n# Set the metadata values on the target device.\nresponse = service.partners().devices().metadata(\n metadataOwnerId=PARTNER_ID,\n deviceId=target_device_id,\n body={'deviceMetadata':new_metadata}).execute()\n```\n\nYour metadata arguments replace existing metadata values for the same key.\n\nDelete metadata\n---------------\n\nYou can delete your metadata from devices. Pass empty strings for metadata\nvalues you want to delete. The example below shows how to delete the telephone\nnumber: \n\n### Java\n\n```java\n// Create the metadata record with the values.\nDeviceMetadata metadata = new DeviceMetadata();\nMap\u003cString,String\u003e entries = new HashMap\u003cString, String\u003e();\nentries.put(METADATA_KEY_PHONE_NUMBER, \"\");\nmetadata.setEntries(entries);\n\n// Call partners().devices().metadata() to remove the phone metadata from the device...\n```\n\n### .NET\n\n```c#\n// Create the metadata record with empty values.\nDeviceMetadata metadata = new DeviceMetadata\n{\n Entries = new Dictionary\u003cstring, string\u003e {\n {MetadataKeyPhoneNumber, \"\"}\n }\n};\n\n// Call Partners.Devices.Metadata to remove the phone metadata from the device...\n```\n\n### Python\n\n```python\n# Create the metadata record with empty values.\nmetadata_to_remove = {METADATA_KEY_ENTRIES: {METADATA_KEY_PHONE_NUMBER:''}}\n\n# Call partners().devices().metadata() to remove the phone number\n# metadata from the device...\n```"]]