Custom Properties
This guide will highlight the steps involved in creating custom properties.
API endpoints in this page
Understanding Armis Asset Properties
Assets (like devices) within Armis Centrix™ are described by a wide array of properties, which are categorized into three main groups to provide a comprehensive view:
- Native Properties: These are fundamental attributes inherent to the Armis platform itself. Examples include an asset's name, brand, operating system, and more.
- Integration Properties: These properties originate from specific third-party integrations that Armis supports. For instance, you might see an "AWS Account Id" from an Amazon Web Services integration or a "CrowdStrike device ID" if CrowdStrike is integrated.
- Custom Properties: These unique properties are fully managed by the customer. They allow organizations to tag assets with proprietary information tailored to their internal use cases and workflows.
A common and powerful application for vendors integrating with Armis is to leverage Custom Properties to enrich assets with their own unique data or proprietary markings, facilitating seamless data exchange and specialized workflows.
Example
Let's say that you're a vendor specializing in repair management software for broken devices. You can leverage Armis as a robust foundation for your device inventory. To effectively track the repair lifecycle, you'll utilize Armis' custom properties feature. This allows your users to classify devices into specific repair categories, providing immediate insights into the status of each asset.
Step 1: define the custom property
Let's start by defining a custom property called RepairRequest, with the following possible values: Reported, In Repair, Repair Done, and Repair Failed.
Perquisites
- Access token with scope
PERMISSION.SETTINGS.CUSTOM_PROPERTIES.MANAGE.
Send the request
import json
import requests
body = {
"name": "RepairRequestStatus",
"description": "The status of a request to repair a device.",
"type": "enum",
"allowed_values": [
"Reported",
"In Repair",
"Repair Done",
"Repair Failed",
],
}
headers = {
"Authorization": "Bearer <access_token>",
}
response = requests.post(
f"https://api.armis.com/v3/settings/device-custom-properties",
json=body,
headers=headers,
)
response.raise_for_status()
print(json.dumps(response.json(), indent=2)){
"id": 1,
"description": "The status of a request to repair a device.",
"type": "enum",
"allowed_values": [
"Reported",
"In Repair",
"Repair Done",
"Repair Failed",
],
"created_by": "[email protected]",
"creation_time": "2025-06-16T00:00:00Z"
}Detailed recipe
Step 2: Update custom properties
Now that the custom property is configured, you can update devices with relevant data.
Let's use device serial numbers as a strong identifier to update two devices:
X7D9-2LQF-W3MJ-8KZT: Set its status toIn Repair.R5VN-Q8YZ-M2LC-J7AK: Set its status toRepair Done.
Perquisites
- Access token with scope
PERMISSION.DEVICE.MANAGE.EDIT.
Send the request
import json
import requests
body = {
"asset_type": "DEVICE",
"asset_id_source": "SERIAL_NUMBER",
"items": [
{
"asset_id": "X7D9-2LQF-W3MJ-8KZT",
"operation": "SET",
"key": "custom.RepairRequestStatus",
"value": "In Repair",
},
{
"asset_id": "R5VN-Q8YZ-M2LC-J7AK",
"operation": "SET",
"key": "custom.RepairRequestStatus",
"value": "Repair Done",
},
],
}
headers = {
"Authorization": "Bearer <access_token>"
}
response = requests.post(
f"https://api.armis.com/v3/assets/_bulk",
json=body,
headers=headers,
)
response.raise_for_status()
print(json.dumps(response.json(), indent=2))
{
"items": [
{
"status": 202
},
{
"status": 202
}
]
}Detailed recipe
Updated about 1 month ago
