Payloads
Every webhook delivery carries exactly one record, in a flat, Ziperase-aligned schema. This page is the record contract — the rules every record follows, then the two big record types field by field.
The record contract
This is payload version 2. All records follow the same rules:
- Flat snake_case scalars at the top level. No nested
payloadwrapper — the record's fields sit directly beside the envelope'sevent_id/event_type/created_at. - Typed child arrays. Repeated hardware (memory modules, drives, ports, batteries, test results) lives in arrays of flat rows, and every row carries the parent machine's
hardware_idso rows remain self-describing if you flatten them into separate tables. nullmeans "not collected." A field the engine could not read isnull, never omitted and never an empty string.- No batching. One record per POST — a 24-drive hotswap session is 24 separate
wipe_session_completeddeliveries, never one delivery with 24 reports. - Additive versioning. Within a major payload version, fields are added but never removed or renamed. Ignore unknown fields; do not reject a payload for carrying one you haven't seen.
- Upsert on
id+revision. Every record carries a stableid, itstype,updated_at, andrevision(the Unix-seconds form ofupdated_at). Apply a record when itsrevisionis greater than or equal to the stored one; retries and re-reports never duplicate rows on your side.
The two small record shapes (wipe_session for ready/blocked events, certificate_report) are covered inline on the Event types page. The two large ones — asset_report and wipe_report — follow.
asset_report
Sent with the asset_reported event — fired once, at the machine's first boot: the machine's complete hardware picture, with the full test_result catalog still Not started. A full real-world example (a Dell Latitude 5540 with every child array populated) is at the bottom of this section.
Top-level fields
- Name
id- Type
- string
- Description
Stable
asset_…identifier for the physical machine. Re-boots update this record; they never create a newid.
- Name
type- Type
- string
- Description
Always
asset_report.
- Name
created_at- Type
- timestamp
- Description
When the machine was first seen by your account.
- Name
updated_at- Type
- timestamp
- Description
Last update to the record.
- Name
deleted_at- Type
- null
- Description
Always
null.
- Name
uploaded_at- Type
- timestamp
- Description
The machine's most recent boot report (
last_booted_at).
- Name
revision- Type
- integer
- Description
Unix seconds of
updated_at— the upsert cursor.
- Name
software_version- Type
- string
- Description
Version of the erasure engine that produced the report.
- Name
hardware_id- Type
- string
- Description
The machine's DMI UUID and serial joined with a slash, e.g.
4c4c4544-…-b9c04f4b5933/74HRKY3. Repeated on every child-array row.
- Name
report_id- Type
- string
- Description
The boot report's
CW-…record id, e.g.CW-20260812-000117.
- Name
batch_name- Type
- string
- Description
The report date as
YYYY-MM-DD.
- Name
system_vendor- Type
- string
- Description
Machine manufacturer, e.g.
Dell Inc.
- Name
system_model- Type
- string
- Description
Model, e.g.
Latitude 5540.
- Name
system_uuid- Type
- string
- Description
DMI system UUID.
- Name
system_serial- Type
- string
- Description
System serial number.
- Name
system_family- Type
- string
- Description
Product family, e.g.
Latitude.
- Name
system_sku_number- Type
- string
- Description
SKU number.
- Name
chassis_type- Type
- string
- Description
Chassis type, e.g.
Notebook.
- Name
chassis_asset_tag- Type
- string or null
- Description
Asset tag, when set in firmware.
- Name
chassis_serial- Type
- string
- Description
Chassis serial.
- Name
cpu_vendor- Type
- string
- Description
CPU vendor string, e.g.
GenuineIntel.
- Name
cpu_model- Type
- string
- Description
Full CPU model, e.g.
13th Gen Intel(R) Core(TM) i5-1335U.
- Name
cpu_speed_mhz- Type
- integer
- Description
Maximum clock in MHz, e.g.
4600.
- Name
cpu_speed_display- Type
- string
- Description
cpu_speed_mhzrendered for humans:4600→"4.60 GHz".
- Name
cpu_l2_cache- Type
- string
- Description
L2 cache size, e.g.
6.5 MiB.
- Name
cpu_l3_cache- Type
- string
- Description
L3 cache size, e.g.
12 MiB.
- Name
cpu_number_of_cores- Type
- integer
- Description
Total cores.
- Name
cpu_threads_per_core- Type
- integer
- Description
Threads per core.
- Name
cpu_cores_per_socket- Type
- integer
- Description
Cores per socket.
- Name
cpu_number_of_sockets- Type
- integer
- Description
Socket count.
- Name
bios- Type
- string
- Description
BIOS vendor, version, and date in one string, e.g.
Dell Inc. 1.14.2 08/15/2024.
- Name
baseboard_vendor- Type
- string
- Description
Motherboard vendor.
- Name
baseboard_model- Type
- string
- Description
Motherboard model.
- Name
baseboard_serial- Type
- string
- Description
Motherboard serial.
- Name
firmware_mode- Type
- string
- Description
UEFIorLegacy BIOS.
- Name
secure_boot- Type
- boolean
- Description
Whether Secure Boot is enabled.
- Name
tpm- Type
- string or null
- Description
TPM version, e.g.
2.0.
- Name
primary_display_resolution- Type
- string
- Description
e.g.
1920x1080.
- Name
primary_display_size- Type
- string
- Description
Diagonal size, e.g.
15.6".
- Name
usb_version- Type
- string
- Description
Highest USB version detected, e.g.
3.10.
- Name
memory_total_capacity_bytes- Type
- integer
- Description
Total RAM in bytes — binary units, so 16 GB reports as
17179869184(16 × 1024³).
- Name
memory_total_capacity_display- Type
- string
- Description
Human form of the above, e.g.
"16.00 GB". Note the unit convention: memory capacities are binary, disk capacities decimal.
Child arrays
Every row in every array repeats the parent's hardware_id.
memory
One row per populated DIMM slot.
- Name
slot- Type
- string
- Description
Slot designator, e.g.
DIMM A.
- Name
capacity_bytes- Type
- integer
- Description
Module size in bytes (binary units).
- Name
capacity_display- Type
- string
- Description
e.g.
"8.00 GB".
- Name
description- Type
- string
- Description
Form factor, type, speed, and part, e.g.
DIMM DDR4 3200 MT/s SK Hynix HMAA1GS6CJR6N-XN.
network
Physical network interfaces only — no virtual or tunnel interfaces.
- Name
vendor- Type
- string
- Description
e.g.
Intel Corporation.
- Name
model- Type
- string
- Description
e.g.
Raptor Lake PCH CNVi WiFi.
- Name
type- Type
- string
- Description
wirelesswhen the interface name starts withwl, otherwisewired.
- Name
mac- Type
- string
- Description
Hardware address.
storage
storage rows are controllers, not drives — the PCI storage
controllers the drives hang off. The drives themselves are in disk.
- Name
vendor- Type
- string
- Description
e.g.
Samsung Electronics Co Ltd.
- Name
model- Type
- string
- Description
e.g.
NVMe SSD Controller PM9B1.
- Name
description- Type
- string
- Description
PCI class description, e.g.
Non-Volatile memory controller.
disk
One row per physical drive, including SMART health.
- Name
display_name- Type
- string
- Description
e.g.
Disk 1.
- Name
vendor- Type
- null
- Description
Always
null(the vendor is part ofmodel).
- Name
model- Type
- string
- Description
e.g.
SAMSUNG MZVL2512HDJD-00BL2.
- Name
serial- Type
- string
- Description
Drive serial — the join key to
wipe_report.serial.
- Name
firmware_version- Type
- string
- Description
Drive firmware revision.
- Name
capacity_bytes- Type
- integer
- Description
Capacity in bytes — decimal units for drives.
- Name
capacity_display- Type
- string
- Description
e.g.
"512 GB","1.5 TB".
- Name
medium_display- Type
- string
- Description
RotationalorSolid state.
- Name
transport- Type
- string
- Description
e.g.
nvme,sata.
- Name
smart_overall_health_display- Type
- string or null
- Description
GoodorBad.
- Name
power_on_hours- Type
- integer or null
- Description
SMART power-on hours.
- Name
temperature_celsius- Type
- integer or null
- Description
Current drive temperature.
- Name
reallocated_sector_count- Type
- integer or null
- Description
SMART reallocated sectors.
- Name
system_serial- Type
- string
- Description
The host machine's serial, repeated for convenience.
video and audio
- Name
vendor- Type
- null
- Description
Always
null.
- Name
model- Type
- string
- Description
e.g.
Intel Iris Xe Graphics/Intel Corporation Raptor Lake-P/U/H cAVS.
port
External connectors, from the firmware's port tables.
- Name
type- Type
- string
- Description
e.g.
USB,Video Port,Audio Port.
- Name
designator- Type
- string
- Description
Firmware designator, e.g.
USB1,HDMI,Audio Jack.
- Name
connector- Type
- string
- Description
Connector kind, e.g.
USB Type-C,HDMI,Mini Jack (headphones).
battery
- Name
name- Type
- string
- Description
e.g.
BAT0.
- Name
manufacturer- Type
- string
- Description
e.g.
SMP.
- Name
serial- Type
- string
- Description
Battery serial.
- Name
chemistry- Type
- string
- Description
e.g.
Li-poly.
- Name
health_pct- Type
- integer
- Description
Full-charge capacity as a percentage of design capacity.
- Name
cycle_count- Type
- integer
- Description
Charge cycles.
- Name
full_wh- Type
- number
- Description
Current full-charge capacity in Wh.
- Name
design_wh- Type
- number
- Description
Design capacity in Wh.
test_result
The machine's hardware test snapshot — the same rows delivered by
hardware_tests_completed. The
array always contains the full test catalog: at first boot (when
asset_reported fires) every row is Not started; outcomes replace those
rows as later hardware_tests_completed events update the record.
- Name
name- Type
- string
- Description
The test's wire id:
keyboard,display,usb_ports,battery,wifi_adapter,bluetooth,webcam,audio, ortouchscreen(the catalog may grow).
- Name
name_display- Type
- string
- Description
The engine's label for the test, e.g.
Keyboard,USB Ports,WiFi Adapter.
- Name
result_display- Type
- string
- Description
Display mapping of the engine's status:
passed→Pass,failed→Fail,not_started→Not started,not_applicable→Not applicable. A test with no submitted status defaults toNot started; any other status passes through unmapped.
- Name
notes- Type
- string
- Description
Operator detail, e.g.
no image; empty string when none.
optical, peripheral, extra
Always present, always [] — reserved by the schema for compatibility. Don't be surprised by them; don't wait for them to fill.
Full example
asset_reported delivery
{
"event_id": "3f7a2b9c-8d1e-4a5f-b6c7-d8e9f0a1b2c3",
"event_type": "asset_reported",
"id": "asset_01J4QZ8T2M9V6XW3YB5NC7DEFG",
"type": "asset_report",
"created_at": "2026-08-12T16:58:11Z",
"updated_at": "2026-08-12T16:58:11Z",
"deleted_at": null,
"uploaded_at": "2026-08-12T16:58:11Z",
"revision": 1786813091,
"software_version": "0.9.0",
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"report_id": "CW-20260812-000117",
"batch_name": "2026-08-12",
"system_vendor": "Dell Inc.",
"system_model": "Latitude 5540",
"system_uuid": "4c4c4544-0034-5a10-8052-b9c04f4b5933",
"system_serial": "74HRKY3",
"system_family": "Latitude",
"system_sku_number": "0B30",
"chassis_type": "Notebook",
"chassis_asset_tag": null,
"chassis_serial": "74HRKY3",
"cpu_vendor": "GenuineIntel",
"cpu_model": "13th Gen Intel(R) Core(TM) i5-1335U",
"cpu_speed_mhz": 4600,
"cpu_speed_display": "4.60 GHz",
"cpu_l2_cache": "6.5 MiB",
"cpu_l3_cache": "12 MiB",
"cpu_number_of_cores": 10,
"cpu_threads_per_core": 1,
"cpu_cores_per_socket": 10,
"cpu_number_of_sockets": 1,
"bios": "Dell Inc. 1.14.2 08/15/2024",
"baseboard_vendor": "Dell Inc.",
"baseboard_model": "0C3Y7M",
"baseboard_serial": "/74HRKY3/CNFCW003AI00TC/",
"firmware_mode": "UEFI",
"secure_boot": true,
"tpm": "2.0",
"primary_display_resolution": "1920x1080",
"primary_display_size": "15.6\"",
"usb_version": "3.10",
"memory_total_capacity_bytes": 17179869184,
"memory_total_capacity_display": "16.00 GB",
"memory": [
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"slot": "DIMM A",
"capacity_bytes": 8589934592,
"capacity_display": "8.00 GB",
"description": "DIMM DDR4 3200 MT/s SK Hynix HMAA1GS6CJR6N-XN"
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"slot": "DIMM B",
"capacity_bytes": 8589934592,
"capacity_display": "8.00 GB",
"description": "DIMM DDR4 3200 MT/s SK Hynix HMAA1GS6CJR6N-XN"
}
],
"network": [
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"vendor": "Intel Corporation",
"model": "Raptor Lake PCH CNVi WiFi",
"type": "wireless",
"mac": "a4:42:3b:8e:11:02"
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"vendor": "Intel Corporation",
"model": "Ethernet Connection (23) I219-LM",
"type": "wired",
"mac": "8c:8c:aa:4e:22:17"
}
],
"storage": [
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"vendor": "Samsung Electronics Co Ltd",
"model": "NVMe SSD Controller PM9B1",
"description": "Non-Volatile memory controller"
}
],
"disk": [
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"display_name": "Disk 1",
"vendor": null,
"model": "SAMSUNG MZVL2512HDJD-00BL2",
"serial": "S64FNE2R504071",
"firmware_version": "GXA7601Q",
"capacity_bytes": 512110190592,
"capacity_display": "512 GB",
"medium_display": "Solid state",
"transport": "nvme",
"smart_overall_health_display": "Good",
"power_on_hours": 1244,
"temperature_celsius": 38,
"reallocated_sector_count": 0,
"system_serial": "74HRKY3"
}
],
"optical": [],
"video": [
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"vendor": null,
"model": "Intel Iris Xe Graphics"
}
],
"audio": [
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"vendor": null,
"model": "Intel Corporation Raptor Lake-P/U/H cAVS"
}
],
"port": [
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"type": "USB",
"designator": "USB1",
"connector": "USB Type-C"
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"type": "Video Port",
"designator": "HDMI",
"connector": "HDMI"
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"type": "Audio Port",
"designator": "Audio Jack",
"connector": "Mini Jack (headphones)"
}
],
"peripheral": [],
"battery": [
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"name": "BAT0",
"manufacturer": "SMP",
"serial": "2718",
"chemistry": "Li-poly",
"health_pct": 94,
"cycle_count": 112,
"full_wh": 51.9,
"design_wh": 54.6
}
],
"extra": [],
"test_result": [
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"name": "keyboard",
"name_display": "Keyboard",
"result_display": "Not started",
"notes": ""
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"name": "display",
"name_display": "Display",
"result_display": "Not started",
"notes": ""
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"name": "usb_ports",
"name_display": "USB Ports",
"result_display": "Not started",
"notes": ""
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"name": "battery",
"name_display": "Battery",
"result_display": "Not started",
"notes": ""
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"name": "wifi_adapter",
"name_display": "WiFi Adapter",
"result_display": "Not started",
"notes": ""
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"name": "bluetooth",
"name_display": "Bluetooth",
"result_display": "Not started",
"notes": ""
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"name": "webcam",
"name_display": "Webcam",
"result_display": "Not started",
"notes": ""
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"name": "audio",
"name_display": "Audio",
"result_display": "Not started",
"notes": ""
},
{
"hardware_id": "4c4c4544-0034-5a10-8052-b9c04f4b5933/74HRKY3",
"name": "touchscreen",
"name_display": "Touchscreen",
"result_display": "Not started",
"notes": ""
}
]
}
wipe_report
Sent with every wipe_session_completed event — one record per drive, for successes and failures alike. A full verbatim example is on the Event types page.
- Name
id- Type
- string
- Description
The wipe result's
wr_…identifier.
- Name
type- Type
- string
- Description
Always
wipe_report.
- Name
product- Type
- string
- Description
engineorhotswap— which product performed the wipe.
- Name
created_at- Type
- timestamp
- Description
When the wipe result row was created (first receipt).
- Name
updated_at- Type
- timestamp
- Description
Last update;
revisionis its Unix-seconds form.
- Name
deleted_at- Type
- null
- Description
Always
null.
- Name
hardware_id- Type
- string or null
- Description
The source machine's DMI
uuid/serial— populated when the drive's serial matched a reported machine.nullfor hotswap wipes and for machines that never sent an asset report, along withasset_idandsystem_serial.
- Name
asset_id- Type
- string or null
- Description
The matched machine's
asset_…id, ornull(see above).
- Name
system_serial- Type
- string or null
- Description
The matched machine's serial, or
null(see above).
- Name
report_id- Type
- string
- Description
The session's
job_id— same value asjob_id.
- Name
job_id- Type
- uuid
- Description
The wipe authorization's job id, issued at check-in. Joins to
wipe_session_ready(whose recordidis this UUID) and tocertificate_generated.job_id. Wipe submission is idempotent on it.
- Name
batch_name- Type
- string
- Description
Date as
YYYY-MM-DD.
- Name
vendor- Type
- null
- Description
Always
null(vendor is part ofmodel).
- Name
model- Type
- string
- Description
Drive model, e.g.
SAMSUNG MZVL2512HDJD-00BL2.
- Name
serial- Type
- string
- Description
Drive serial — the join key to
asset_report.disk[].serial.
- Name
capacity_bytes- Type
- integer
- Description
Reported capacity in GB × 10⁹ (decimal units, like all drive capacities).
- Name
capacity_display- Type
- string
- Description
e.g.
"512 GB".
- Name
erase_algorithm- Type
- string
- Description
Machine-readable snake_case algorithm, e.g.
nist_800_88_r2_purge.
- Name
erase_algorithm_display- Type
- string
- Description
The algorithm exactly as it appears on screens and certificates, e.g.
NIST 800-88 R2 Purge.
- Name
erase_technique- Type
- string
- Description
The concrete technique used, e.g.
NVMe Sanitize — crypto erase.
- Name
erase_level- Type
- string or null
- Description
Purge,Clear,Destroy, ornull.
- Name
status_display- Type
- string
- Description
Completed,Failed, orCancelled.
- Name
erase_result_display- Type
- string
- Description
Passif — and only if — the wipe completed.
- Name
erase_start_time- Type
- timestamp
- Description
When the erasure started.
- Name
erase_finish_time- Type
- timestamp
- Description
When it finished.
- Name
erase_duration_seconds- Type
- integer
- Description
Elapsed seconds.
- Name
erase_duration_display- Type
- string
- Description
e.g.
"00h37m".
- Name
wipe_status- Type
- string or null
- Description
Raw status:
completed,failed, orcancelled.nullon legacy rows reads as completed.
- Name
passes_completed- Type
- integer or null
- Description
Overwrite passes;
nullfor crypto-erase and block-erase techniques, which don't overwrite.
- Name
validation- Type
- string or null
- Description
approvedorrejected; absent/nullreads as approved.
- Name
disposition- Type
- string
- Description
e.g.
sanitized,review,destroy.
- Name
markings_removed- Type
- boolean
- Description
Whether media markings/labels were removed.
- Name
tool_components- Type
- string
- Description
Tooling used, e.g.
nvme-cli 2.4.
- Name
verification_result- Type
- string
- Description
Human-readable verification outcome, e.g.
Pass — 32/32 fingerprint sectors overwritten.
- Name
verification_hash- Type
- string
- Description
SHA-256 over the re-read verification bytes.
- Name
certificate_status- Type
- string
- Description
pending,generating,complete, orfailed. Don't wait on it — at delivery time it is usually stillpending; the certificate announces itself viacertificate_generated.
- Name
certificate_url- Type
- string or null
- Description
nulluntil the certificate PDF is uploaded.
- Name
license_token_id- Type
- string
- Description
The
ltok_…token that authorized the wipe.
- Name
operator- Type
- string
- Description
The operating technician's name.
Joining disks to wipe reports
The drive serial is the join key across record types: asset_report.disk[].serial ↔ wipe_report.serial.
An asset_report tells you which drives a machine contains; each wipe_report tells you one drive was erased. Match on serial to attach wipe outcomes to the drive rows of your inventory — the same matching AVERASE itself performs to populate wipe_report.hardware_id / asset_id / system_serial. Remember those three are null for hotswap wipes (drives erased in a bay chassis, detached from their source machine), so serial-level joins are the only link you can count on universally.
Migrating from payload v1
If you consumed the v1 payloads, here is everything that changed:
| v1 | v2 |
|---|---|
Envelope id | Renamed to event_id |
reports: [] array of reports per delivery | Gone — exactly one record per delivery, flat at the top level |
| Batch size caps | Gone — no batching exists to cap |
Free-form fingerprint document on asset events | Replaced by the flat Ziperase machine record (asset_report) |
Nested test_results object | Replaced by the test_result array of flat rows |
| Wipe report field names | Renamed to the Ziperase disk names: serial, erase_algorithm / erase_algorithm_display, erase_start_time, erase_result_display, and so on |
Test ping with reports | Test ping no longer carries reports |
| Headers, HMAC signing, retries, auto-disable | Unchanged — verification code and delivery handling carry over as-is |