ESET Online Help

Search
Select the category
Select the topic

GET Get batch of devices

Relative path: /v1/devices:batchGet

Retrieves specific set of devices at a consistent time point.

Modeled after https://google.aip.dev/231

Query parameters

Name

Type

Description

devicesUuids

array

Identifiers of device to retrieve.

If empty, INVALID_ARGUMENT is returned.

The operation is atomic - no partial success. Either every requested device is returned, or none.



Responses

Display Schema instead of an Example or vice-versa

Code

Description

Example

Schema

200

Successful response.

{
  "devices": [
    {
      "deployedComponents": [
        {
          "displayName": "string",
          "version": {
            "id": "string",
            "major": 0,
            "minor": 0,
            "name": "string",
            "patch": 0
          },
          "id": 0,
          "name": "string"
        }
      ],
      "description": "string",
      "deviceToken": "string",
      "displayName": "string",
      "enrollmentStatus": "DEVICE_ENROLLMENT_STATUS_UNSPECIFIED",
      "functionalityProblemCount": 0,
      "functionalityStatus": "DEVICE_FUNCTIONALITY_STATUS_UNSPECIFIED",
      "hardwareProfiles": [
        {
          "bios": {
            "manufacturer": "string",
            "serialNumber": "string",
            "uuid": "string"
          },
          "hardDrives": [
            {
              "malformedData": "string",
              "serialNumber": "string"
            }
          ],
          "malformedData": "string",
          "manufacturer": "string",
          "model": "string",
          "networkAdapters": [
            {
              "caption": "string",
              "macAddress": "string",
              "malformedData": "string"
            }
          ],
          "processors": [
            {
              "architecture": "CPU_ARCHITECTURE_UNSPECIFIED",
              "caption": "string",
              "id": "string",
              "malformedData": "string",
              "manufacturer": "string"
            }
          ],
          "resettableIdentifier": "string",
          "salt": "string"
        }
      ],
      "isMobile": true,
      "isMuted": true,
      "lastSyncTime": "string",
      "managementDomain": "string",
      "operatingSystem": {
        "bitness": 0,
        "displayName": "string",
        "editionId": 0,
        "familyId": 0,
        "version": {
          "id": "string",
          "major": 0,
          "minor": 0,
          "name": "string",
          "patch": 0
        }
      },
      "originalDisplayName": "string",
      "parentGroupUuid": "string",
      "tags": [
        "string"
      ],
      "uuid": "string"
    }
  ]
}
{
  "$ref": "v1BatchGetDevicesResponse",
  "devices": [
    {
      "$ref": "v1Device",
      "description": {
        "type": "string",
        "description": "Device description."
      },
      "deployedComponents": [
        {
          "$ref": "v1PlatformComponent",
          "description": "Descriptor of platform component with version. Info: Should we track modules, they will be here.",
          "displayName": {
            "type": "string",
            "description": "Human readable name of the component. Derived from package display_name."
          },
          "version": {
            "$ref": "v1Version",
            "description": "Version descriptor. Both values are required to completely reconstruct version information.",
            "id": {
              "type": "string",
              "description": "[Version id] determines whether one version is more recent than another. More recent versions have higher numbers. Can be processed by machine. If human readable version_name meets certain criteria, it can be converted to version_id automatically. The cases are: A.B.C.D => VersionId = (A & 0xffff) << 48 | (B & 0xffff) << 32 | (C & 0xffff) << 16 | (D & 0xffff) A.B.C => VersionId = (A & 0xffff ) << 48 | (B & 0xffff) << 32 | (C & 0xffff) <<16 Major.Minor.Patch => VersionId = (Major & 0xffff ) << 48 | (Minor & 0xffff) << 32 | (Patch & 0xffff) <<16 Eula.VersionId = Eula.MajorVersion << 48 | Eula.MinorVersion << 32 | EulaPatch << 16 Windows.VersionId = MajorVersion << 48 | MinorVersion << 32 | ServicePackMajor << 24 | ServicePackMinor << 16 | CurrentBuildNumber WindowsPhone.VersionId = A << 48 | B << 32 | C << 12 | D openSUSE Tumbleweed.VersionId = YYYY << 48 | MM << 64 | DD < 32 | 0x0000 Amazon Linux.VersionId = YYYY << 48 | MM << 64 | 0x00000000",
              "format": "uint64"
            },
            "major": {
              "type": "integer",
              "description": "Major version if version.name adheres to semantic versioning. Empty otherwise.",
              "format": "int64"
            },
            "minor": {
              "type": "integer",
              "description": "Minor version if version.name adheres to semantic versioning. Empty otherwise.",
              "format": "int64"
            },
            "name": {
              "type": "string",
              "description": "Human readable name of the version. E.g. '10.2.3.145'"
            },
            "patch": {
              "type": "integer",
              "description": "Patch if version.name adheres to semantic versioning. Empty otherwise.",
              "format": "int64"
            }
          },
          "id": {
            "type": "integer",
            "description": "Identifier of governed resource. Can be seen as a value of item in enumerated type. It can be derived from name by some algorithm such as CRC32.",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "Name of the governed item. Can be seen as a name of enumeration item, with id being its numerical value. Note: Not to be confused with display_name, which is purposed for UI."
          }
        }
      ],
      "deviceToken": {
        "title": "Identity token for device",
        "type": "string",
        "readOnly": true
      },
      "displayName": {
        "title": "Name given by user to identify device",
        "type": "string"
      },
      "enrollmentStatus": {
        "$ref": "v1DeviceEnrollmentStatus",
        "type": "string",
        "description": "Devices are enrolled in a process with managed devices being fully enrolled. DEVICE_ENROLLMENT_STATUS_UNSPECIFIED: Status is unknown. DEVICE_ENROLLMENT_STATUS_PENDING: The device is not enrolled yet. This status is typical for: - placeholder devices created for the enrollment links to be generated later on - devices just imported from other device managements - rogue devices discovered in the network - DEVICE_ENROLLMENT_STATUS_FINISHED: Enrollment is finished and device can be managed. - DEVICE_ENROLLMENT_STATUS_FAILED: Enrollment process started, but failed.",
        "default": "DEVICE_ENROLLMENT_STATUS_UNSPECIFIED",
        "enum": [
          "DEVICE_ENROLLMENT_STATUS_UNSPECIFIED",
          "DEVICE_ENROLLMENT_STATUS_PENDING",
          "DEVICE_ENROLLMENT_STATUS_FINISHED",
          "DEVICE_ENROLLMENT_STATUS_FAILED"
        ]
      },
      "functionalityProblemCount": {
        "type": "integer",
        "description": "Aggregated count of functionality problems or issues on the device, regardless of their security risk.",
        "format": "int64",
        "readOnly": true
      },
      "functionalityStatus": {
        "$ref": "v1DeviceFunctionalityStatus",
        "type": "string",
        "description": "The functionality status is determined by the severity of the worst issue currently occurring on the device. DEVICE_FUNCTIONALITY_STATUS_UNSPECIFIED: fallback DEVICE_FUNCTIONALITY_STATUS_OK: The device is functioning normally, with no issues that require attention. DEVICE_FUNCTIONALITY_STATUS_ATTENTION_RECOMMENDED: There are issues that may not be critical (e.g., medium security risks), but they should be addressed to avoid potential future problems. DEVICE_FUNCTIONALITY_STATUS_ATTENTION_REQUIRED: Critical issues exist (e.g., severe security risks), and immediate action is necessary to maintain system integrity or security.",
        "default": "DEVICE_FUNCTIONALITY_STATUS_UNSPECIFIED",
        "enum": [
          "DEVICE_FUNCTIONALITY_STATUS_UNSPECIFIED",
          "DEVICE_FUNCTIONALITY_STATUS_OK",
          "DEVICE_FUNCTIONALITY_STATUS_ATTENTION_RECOMMENDED",
          "DEVICE_FUNCTIONALITY_STATUS_ATTENTION_REQUIRED"
        ]
      },
      "hardwareProfiles": [
        {
          "$ref": "v1Hardware",
          "description": "It can also be used to uniquely identify the device within pool of all devices seen by ESET. Warning: For fingerprint use-case the values must be anonymized by using [SHA-256] hash and passed as 7-bit ASCII strings (containing only hexadecimal numbers and dashes possibly). This is GDPR requirement.",
          "bios": {
            "$ref": "v1Bios",
            "description": "Information about BIOS (or UEFI in later systems).",
            "manufacturer": {
              "title": "BIOS manufacturer",
              "type": "string",
              "description": "e.g. value LENOVO obtained by calling: wmic path win32_computersystemproduct get vendor"
            },
            "serialNumber": {
              "title": "BIOS serial number",
              "type": "string",
              "description": "e.g. value MP10DQAF obtained by calling: wmic path win32_computersystemproduct get IdentifyingNumber"
            },
            "uuid": {
              "title": "UUID of BIOS",
              "type": "string",
              "description": "e.g. value 99AAEECC-2C47-12CC-F85C-A0080C7BDC23 obtained by calling: wmic path win32_computersystemproduct get uuid"
            }
          },
          "hardDrives": [
            {
              "$ref": "v1HardDrive",
              "description": "Descriptor of hard drive.",
              "malformedData": {
                "type": "string",
                "description": "List of singular attributes where reading failed or returned strange value. For more info about FiledMask usage see https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask"
              },
              "serialNumber": {
                "title": "Drive serial number",
                "type": "string",
                "description": "e.g. value 0025_3865_6AE0_AF38 obtained by calling: wmic diskdrive get SerialNumber"
              }
            }
          ],
          "malformedData": {
            "type": "string",
            "description": "List of singular attributes where reading failed or returned strange value. Info: FieldMask cannot address array members, so it must be present in every nested repeated field. In case of this message: hard_drives, network_adapters and processors have their nested masks too. For more information about FieldMask usage, refer to https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask"
          },
          "manufacturer": {
            "title": "Vendor of the hardware",
            "type": "string"
          },
          "model": {
            "title": "Model identifier of the hardware",
            "type": "string"
          },
          "networkAdapters": [
            {
              "$ref": "v1NetworkAdapter",
              "description": "Descriptor of network adapter. It can also be a virtual adapter (e.g. VPN).",
              "caption": {
                "title": "Name of adapter",
                "type": "string",
                "description": "e.g. value Intel(R) Dual Band Wireless-AC 8260 obtained by calling: wmic nic get Caption"
              },
              "macAddress": {
                "title": "MAC address - can be changed manually",
                "type": "string",
                "description": "e.g. value 24:3A:21:52:41:53 obtained by calling: wmic nic get MACAddress"
              },
              "malformedData": {
                "type": "string",
                "description": "List of singular attributes where reading failed or returned strange value. For more info about FiledMask usage see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask"
              }
            }
          ],
          "processors": [
            {
              "$ref": "v1Processor",
              "description": "Descriptor of CPU.",
              "architecture": {
                "$ref": "v1CpuArchitecture",
                "title": "Processor architecture",
                "type": "string",
                "description": "Note: Cannot be named ProcessorArchitecture because of conflict with Windows SDK, winnt.h, BUILD Version 0072. Series of macros prefixed PROCESSOR_ARCHITECTURE at line 12703 partially eclipse proto definition. Moreover UKNOWN value is of value 0xffff what makes it incompatible with proto requirement to have it 0x0000. CPU_ARCHITECTURE_UNSPECIFIED: fallback CPU_ARCHITECTURE_X86: 32-bit x86 architecture CPU_ARCHITECTURE_X64: 64-bit x86 architecture CPU_ARCHITECTURE_ARM32: 32-bit ARM architecture CPU_ARCHITECTURE_ARM64: 64-bit ARM architecture",
                "default": "CPU_ARCHITECTURE_UNSPECIFIED",
                "enum": [
                  "CPU_ARCHITECTURE_UNSPECIFIED",
                  "CPU_ARCHITECTURE_X86",
                  "CPU_ARCHITECTURE_X64",
                  "CPU_ARCHITECTURE_ARM32",
                  "CPU_ARCHITECTURE_ARM64"
                ]
              },
              "caption": {
                "title": "CPU/GPU name",
                "type": "string",
                "description": "e.g. value Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz obtained by calling: wmic cpu get Name"
              },
              "id": {
                "title": "wmic cpu get ProcessorId",
                "type": "string",
                "description": "https://stackoverflow.com/questions/1101772/win32-processoris-processorid-unique-for-all-computers"
              },
              "malformedData": {
                "type": "string",
                "description": "List of singular attributes where reading failed or returned strange value. Info: FieldMask cannot address array members, so it must be present in every nested repeated field. For more info about FieldMask usage see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask"
              },
              "manufacturer": {
                "title": "CPU/GPU vendor",
                "type": "string",
                "description": "e.g. value GenuineIntel obtained by calling: wmic cpu get manufacturer"
              }
            }
          ],
          "resettableIdentifier": {
            "type": "string",
            "description": "Resettable hardware identifier (for example might not survive factory reset). Some operating systems do not provide access to non-resettable hardware identifiers at all or they do in restricted manner. For more info see: https://developer.android.com/training/articles/user-data-ids#best-practices-android-identifiers or: https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor"
          },
          "salt": {
            "title": "Salt used for unreliable hardware to make it visible among other unreliable hardware",
            "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
            "type": "string",
            "format": "byte"
          }
        }
      ],
      "isMobile": {
        "type": "boolean",
        "description": "The device is marked as mobile. Mobile device is a portable handheld computer, small enough to be carried easily, which can function without being physically connected to a network and power source."
      },
      "isMuted": {
        "type": "boolean",
        "description": "It defines whether device is Muted or not. Muted devices are purposed to not attract user's attention, even if they reach noteworthy state (e.g. they report a functionality problem). In practice that means they might get excluded from dashboards or lists. Default value: false - means device is not muted"
      },
      "lastSyncTime": {
        "type": "string",
        "description": "When the device was synchronized for the last time. For remote management this time also means LastSeenTime, LastActiveTime, LastConnectTime etc.",
        "format": "date-time",
        "readOnly": true
      },
      "managementDomain": {
        "title": "Management domain reference (might help to resolve conflicts) - ESMC, ERA, EPC, ECA, ... use hash of master seat id here - Windows domain might go here",
        "type": "string",
        "description": "Note: Domain does not scope uniqueness of hardware identifiers. They are still globally unique. Domain helps clustering algorithm to better determine right identity by limiting the scope of possibilities. Feedback commands ([i-ecp] Report Hardware Idenity Crisis and [i-ecp] Report Hardware Identity Collision) improve detection within domain."
      },
      "operatingSystem": {
        "$ref": "v1OperatingSystem",
        "description": "Descriptor of operating system present on the device.",
        "bitness": {
          "type": "integer",
          "description": "Bitness of the operating system. e.g. - 32 - 64",
          "format": "int64"
        },
        "displayName": {
          "type": "string",
          "description": "Human readable name of the operating system. e.g. - Mac OS X 10.8 Mountain Lion - Microsoft Windows 10 Enterprise 2015 LTSB"
        },
        "editionId": {
          "type": "integer",
          "description": "Server or Desktop? That's the question. Id comes from [os_catalog]. Well known values are: 0 = unspecified (fallback) 1 = Server edition of operating system, e.g. Red Hat Enterprise Linux Server 2 = Client edition of operating system, e.g. Windows 11 3 = Mobile edition of operating system, e.g. Android or iOS 4 = Core edition without GUI, e.g. Microsoft Server Core",
          "format": "int64"
        },
        "familyId": {
          "type": "integer",
          "description": "Family of operating system from [os_catalog]. Info: Modeled after https://en.wikipedia.org/wiki/Category:Operating_system_families. Well known values are: 0 = unspecified (fallback) 1 = Windows family of operating systems 2 = Linux family of operating systems 3 = Apple family of operating systems, e.g. OS X or iOS 4 = Android family of operating systems 5 = Windows mobile family 6 = Symbian family 7 = UNIX, including FreeBSD",
          "format": "int64"
        },
        "version": {
          "$ref": "v1Version",
          "description": "Version descriptor. Both values are required to completely reconstruct version information.",
          "id": {
            "type": "string",
            "description": "[Version id] determines whether one version is more recent than another. More recent versions have higher numbers. Can be processed by machine. If human readable version_name meets certain criteria, it can be converted to version_id automatically. The cases are: A.B.C.D => VersionId = (A & 0xffff) << 48 | (B & 0xffff) << 32 | (C & 0xffff) << 16 | (D & 0xffff) A.B.C => VersionId = (A & 0xffff ) << 48 | (B & 0xffff) << 32 | (C & 0xffff) <<16 Major.Minor.Patch => VersionId = (Major & 0xffff ) << 48 | (Minor & 0xffff) << 32 | (Patch & 0xffff) <<16 Eula.VersionId = Eula.MajorVersion << 48 | Eula.MinorVersion << 32 | EulaPatch << 16 Windows.VersionId = MajorVersion << 48 | MinorVersion << 32 | ServicePackMajor << 24 | ServicePackMinor << 16 | CurrentBuildNumber WindowsPhone.VersionId = A << 48 | B << 32 | C << 12 | D openSUSE Tumbleweed.VersionId = YYYY << 48 | MM << 64 | DD < 32 | 0x0000 Amazon Linux.VersionId = YYYY << 48 | MM << 64 | 0x00000000",
            "format": "uint64"
          },
          "major": {
            "type": "integer",
            "description": "Major version if version.name adheres to semantic versioning. Empty otherwise.",
            "format": "int64"
          },
          "minor": {
            "type": "integer",
            "description": "Minor version if version.name adheres to semantic versioning. Empty otherwise.",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "Human readable name of the version. E.g. '10.2.3.145'"
          },
          "patch": {
            "type": "integer",
            "description": "Patch if version.name adheres to semantic versioning. Empty otherwise.",
            "format": "int64"
          }
        }
      },
      "originalDisplayName": {
        "type": "string",
        "description": "Original display name shows the name of the device as it was originally retrieved from the source (e.g. operating system). This name is likely used in device directory (e.g. Active Directory) and it is useful in support scenarios. Example: 'BTS9955454' (such a name would likely get renamed by an user to something more friendly).",
        "readOnly": true
      },
      "parentGroupUuid": {
        "type": "string",
        "description": "Reference to the parent [device group] that exclusively contains the device. type: DeviceGroup"
      },
      "tags": [
        {
          "type": "string"
        }
      ],
      "uuid": {
        "type": "string",
        "description": "Unique identifier of the entity. Must be collision free - two identifiers created anywhere in the world must not collide within entity parent scope. Unless a member of aggregate, the entity scope is always global. Although most of the times compliant with RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace, do not rely on it being a RFC UUID. Treat it as an opaque identifier. RFC UUID can be recognized by being formatted according to template xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, as explained on wikipedia. UUID is used for referencing an entity, even across domains. Example: '123e4567-e89b-12d3-a456-426614174000'"
      }
    }
  ]
}

202

Response took too long; request cached. Response can be retrieved later using the response-id header.

null
[]

400

One of the errors: 1. Bad or missing authorization. 2. Validation error. Invalid argument provided.

null
[]

401

Token has expired or is invalid.

null
[]

403

Access denied. Check permissions.

null
[]

404

Requested resource not found.

null
[]

429

Rate limit reached. Try again later.

null
[]

500

Internal server failure. Try again later.

null
[]

502

Internal server failure. Try again later.

null
[]

503

Environment under maintenance. Try again later.

null
[]

504

Action took too long; timeout reached

null
[]