Insights & updates from our experts
Overview
This connector integrates with Raynet to retrieve device inventory and operating system data for synchronizing Configuration Items into the Xurrent CMDB.
Prerequisites
To use this connector, you need:
- A Raynet tenant (e.g.
your-tenant.raynetone.com) - A Raynet API key with read access to the Devices and OperatingSystems endpoints
Authentication
Header-based. Each outbound request carries an ApiKey header populated from the connection's API key field. No OAuth flow is involved. Provide the Instance (e.g. your-tenant) so the connector can compose the base URL https://<instance>.raynetone.com/api/v1.
Triggers
None — this connector is outbound only.
Actions
Fetch devices
Retrieves devices from GET /api/v1/Devices/by-inventory with optional incremental-sync filter. Paginates internally using Raynet's lastId cursor — one page is emitted per iteration, and the action drains the full result set across successive iterations.
Use case: populate or refresh the device inventory in Xurrent's CMDB. Pass inventory_date_later_then (ISO 8601) to fetch only devices whose inventory was updated at or after a specific time for incremental sync; omit it for a full sync.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| inventory_date_later_then | DateTime | No | - | ISO 8601 timestamp — return only devices whose inventory was updated at or after this time |
| count | Integer | No | 100 | Page size (1-1000) |
Example Input
{
"inventory_date_later_then": "2026-05-14T00:00:00Z",
"count": 100
}
Output
| Field | Type | Description |
|---|---|---|
| has_next_page | Boolean | true while more pages remain |
| devices | Array[Device] | One entry per device in the current page — see Device fields |
Device fields
| Field | Type | Description |
|---|---|---|
| id | String | Raynet device id (UUID v7). Primary key and cursor for pagination |
| name | String | Hostname assigned to the device |
| creation_date | DateTime | When the device was first discovered |
| tag | String | Device tag |
| domain | String | Active Directory or DNS domain the device belongs to |
| model | String | Hardware model (e.g. VMware Virtual Platform) |
| manufacturer | String | Hardware manufacturer (e.g. VMware, Inc.) |
| number_of_logical_processors | Integer | Logical CPU count |
| number_of_processors | Integer | Physical CPU count |
| total_physical_memory | Integer | Total physical memory in bytes |
| physical_memory | Integer | Reported physical memory in bytes |
| uuid | String | SMBIOS hardware UUID — distinct from id and may be absent |
| user_name | String | Last logged-in user (when populated) |
| comment | String | Free-form comment |
| corporate_asset_class | String | Corporate asset classification |
| corporate_identifier | String | Corporate asset identifier |
| corporate_state | String | Corporate lifecycle state |
| ad_last_logon | DateTime | Last Active Directory logon timestamp |
| custom_import_id | String | Identifier from a custom import source |
| custom_source | String | Free-form custom source label |
| corporate_ownership | Boolean | Whether the device is corporate-owned |
| detected_os_type | String | OS family (None, Windows, Unix, MacOs) |
| last_sucessful_inventory_run | DateTime | Timestamp of the last successful inventory run. Note: the misspelling Sucessful is preserved verbatim from the Raynet API |
| is_virtual | Boolean | Whether the device is reported as virtual |
| source | String | Comma-separated list of discovery sources (e.g. MECM,ActiveDirectory) |
Example Output
{
"has_next_page": true,
"devices": [
{
"id": "019aee57-6d0f-7eef-9ca9-504d44b78630",
"name": "srv_4cb1f",
"creation_date": "2025-12-05T11:48:18.319Z",
"model": "VMware Virtual Platform",
"manufacturer": "VMware, Inc.",
"number_of_logical_processors": 6,
"number_of_processors": 6,
"total_physical_memory": 17179869184,
"physical_memory": 17179869184,
"uuid": "2c983a42-2b40-4890-22b0-7fc24b314822",
"detected_os_type": "Windows",
"last_sucessful_inventory_run": "2025-12-04T00:02:17.639Z",
"is_virtual": false,
"source": "MECM,ActiveDirectory"
}
]
}
Error Handling
| Condition | Behavior |
|---|---|
| 401 / 403 | Fail immediately with Raynet authentication error: <status> |
| 404 (no results) | Return empty result; not an error. Raynet returns 404 with application/problem+json when zero records match. |
| 429 or 503 | Retry, respecting Retry-After (default 60s) |
| Other 4xx / 5xx (400, 500, 502, 504) | Fail with Raynet HTTP error: <status> |
| Non-JSON body | Fail with Raynet response was not valid JSON |
Best Practices
- Pass
inventory_date_later_thenset to the start of the previous successful run for incremental sync — do not derive the watermark from per-devicelast_sucessful_inventory_run. - Keep
countat its documented maximum (1000) to minimize round-trips on large tenants. - Let the action drain its internal pagination across iterations rather than slicing pages manually.
Fetch operating systems by device IDs
Retrieves operating system records in bulk for a batch of device IDs from POST /api/v1/OperatingSystems/ByManyDeviceIds. The action paginates internally — it emits one page per batch and drains the full device_ids list across successive iterations.
Use case: enrich device records with detailed OS information (caption, edition, version, architecture, install date) for CMDB synchronization. Feed device_ids from the output of Fetch devices.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| device_ids | Array[String] | Yes | - | Device IDs to fetch OS data for (UUIDs from Fetch devices id) |
| count | Integer | No | 100 | Page size (1-1000) |
Example Input
{
"device_ids": [
"019aee57-6d0f-7eef-9ca9-504d44b78630",
"019aee57-4e37-7857-bcea-77aa4dc83e8e"
],
"count": 100
}
Output
| Field | Type | Description |
|---|---|---|
| has_next_page | Boolean | true while more pages remain |
| operating_systems | Array[OperatingSystem] | One entry per device that has an OS record — see OperatingSystem fields. Devices without an OS record are silently omitted by the API |
OperatingSystem fields
| Field | Type | Description |
|---|---|---|
| id | String | OS record id (UUID) |
| device_id | String | Device id this OS record belongs to — pairs with Fetch devices.id |
| name | String | OS short name (e.g. Windows Server 2016) |
| caption | String | OS full caption (e.g. Microsoft Windows Server 2016 Standard) |
| service_pack | String | Service pack identifier |
| manufacturer | String | OS vendor (e.g. Microsoft Corporation) |
| build_number | String | OS build number |
| architecture | String | OS architecture (e.g. 64-bit) |
| codename | String | OS codename |
| edition | String | OS edition (e.g. Standard) |
| os_language | String | Locale id (e.g. 1033) |
| os_language_name | String | Locale name |
| version | String | OS version (e.g. 10.0.14393) |
| version_internal | String | Internal version identifier |
| type | String | OS family (Windows, Linux, MacOs) |
| system_directory | String | OS system directory path |
| serial_number | String | OS license serial number |
| install_date | DateTime | When the OS was installed |
Example Output
{
"has_next_page": false,
"operating_systems": [
{
"id": "019aee70-db5d-78a7-a392-9bcf2814a923",
"device_id": "019aee57-6d0f-7eef-9ca9-504d44b78630",
"name": "Windows Server 2016",
"caption": "Windows Server 2016",
"manufacturer": "Microsoft Corporation",
"architecture": "64-bit",
"edition": "Standard",
"os_language": "1033",
"version": "10.0.14393",
"type": "Windows",
"system_directory": "C:\\WINDOWS\\system32",
"serial_number": "XXXXX-XXXXX-XXXXX-XXXXX"
}
]
}
Error Handling
| Condition | Behavior |
|---|---|
| 401 / 403 | Fail immediately with Raynet authentication error: <status> |
| 404 (no results) | Return empty result; not an error. Raynet returns 404 with application/problem+json when zero records match. |
| 429 or 503 | Retry, respecting Retry-After (default 60s) |
| Other 4xx / 5xx (400, 500, 502, 504) | Fail with Raynet HTTP error: <status> |
| Non-JSON body | Fail with Raynet response was not valid JSON |
Best Practices
countdefaults to 100 and can go up to 1000 — set it near the max to minimize round-trips on large device lists.- Feed
device_idsfrom Fetch devices rather than maintaining a separate list.
Rate Limiting
| HTTP Status | Connector Behavior |
|---|---|
| 200 | Success |
| 401 / 403 | Fail immediately with Raynet authentication error: <status> |
| 404 (no results) | Return empty result; not an error. Raynet returns 404 with application/problem+json when zero records match — e.g. paginating past the last device, or asking for OS records for stub devices that have none. |
| 429 | Retry, respecting Retry-After header (default 60s) |
| 503 | Retry, respecting Retry-After header (default 60s) |
| 400, other 4xx | Fail with Raynet HTTP error: <status> |
| 500, 502, 504 | Fail with Raynet HTTP error: <status> |
| Invalid JSON body | Fail with Raynet response was not valid JSON |
Best Practices
- Run Fetch devices before Fetch operating systems by device IDs — the latter consumes the
idfield from the former. - Use
inventory_date_later_thenfor incremental syncs after the first full sync to keep page counts small. - Treat
last_sucessful_inventory_runas a per-device value, not a global high-watermark — persist the run's start timestamp for the nextinventory_date_later_thenvalue. - Stub devices (devices with no
model/manufacturer/uuid) are returned alongside fully-populated devices — the connector returns them as-is so the runbook can filter them out.
Common Use Cases
- Initial CMDB import → Fetch devices (without
inventory_date_later_then) → Fetch operating systems by device IDs for all returned device ids. - Incremental sync → Fetch devices with
inventory_date_later_thenset to the previous run's start timestamp → Fetch operating systems by device IDs for the changed subset. - OS enrichment refresh → Fetch operating systems by device IDs with a known device id list.
References
- Raynet API documentation
- Endpoints used by this connector:
GET /api/v1/Devices/by-inventory— Fetch devices (cursor pagination vialastId, incremental filter viainventoryDateLaterThen)POST /api/v1/OperatingSystems/ByManyDeviceIds— Fetch operating systems by device IDs



.png)




























