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:

  1. Native Properties: These are fundamental attributes inherent to the Armis platform itself. Examples include an asset's name, brand, operating system, and more.
  2. 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.
  3. 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

  1. Access token with scopePERMISSION.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:

  1. X7D9-2LQF-W3MJ-8KZT: Set its status to In Repair.
  2. R5VN-Q8YZ-M2LC-J7AK: Set its status to Repair Done.

Perquisites

  1. Access token with scopePERMISSION.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