# DevicePeripheral

object type

A DevicePeripheral — the hardware a Device OWNS: barcode scanners, receipt/label printers, display poles, cash drawers, card readers, and scales. The model MUST name the AT-maintained preset registry (cannedPeripheralModels, registry v2 — merchants pick supported models, never author drivers); peripheralType + model are IMMUTABLE at birth (swapped hardware = a new peripheral), connection is mutable (re-cabling is an edit). NOT searchable (hardware config — reached via its owning Device).

## Fields

| Field | Type | Notes |
| --- | --- | --- |
| `id` | [ID](/types/#scalars) `ID!` | The record’s id — a UUID the platform assigned when the record was created; every reference to this record uses it. |
| `sysId` | [String](/types/#scalars) `String!` | The group-scoped human-facing system id (PH-…). |
| `type` | [String](/types/#scalars) `String!` | The kind of record — always `DevicePeripheral` here. |
| `caption` | [String](/types/#scalars) `String!` | The record’s display name — what people see it called. |
| `status` | [String](/types/#scalars) `String!` | The FSM state: active \| inactive \| doomed. |
| `parentId` | [ID](/types/#scalars) `ID!` | The parent Device; rootId = the org group; parentId!== rootId always. |
| `rootId` | [ID](/types/#scalars) `ID!` | The org-group family root. |
| `createdAt` | [String](/types/#scalars) `String!` | When the record was created, as a UTC timestamp. |
| `updatedAt` | [String](/types/#scalars) `String!` | When the record last changed, as a UTC timestamp. |
| `revisionNum` | [Int](/types/#scalars) `Int!` | How many times this record has been edited; the first save is 0. |
| `revision` | [ID](/types/#scalars) `ID!` | The OCC revision token — supply it on every mutation of this record; rotates on every write. |
| `refCaptions` | [RefCaption](/types/RefCaption/) `[RefCaption!]!` | The server-composed captions of this record's declared references (the referenced-caption rule) — one row per referenced id; see RefCaption. |
| `peripheralType` | [DevicePeripheralType](/types/DevicePeripheralType/) `DevicePeripheralType!` | The canned peripheral class — set at creation, IMMUTABLE. |
| `model` | [String](/types/#scalars) `String!` | The preset-registry model key (the preset series — cannedPeripheralModels lists the roster) — set at creation, IMMUTABLE. |
| `connection` | [DevicePeripheralConnection](/types/DevicePeripheralConnection/) `DevicePeripheralConnection!` | How this unit attaches — mutable; must stay within the model’s supported set (kit-gated). |
| `readerRef` | [String](/types/#scalars) | The Stripe Terminal reader this unit registered as: present exactly on card_reader+network peripherals (stamped at birth); IMMUTABLE. A tmr_ reference of at most 128 characters — it rides record-first into Payment.methodRef. |

## Used by

- [createDevicePeripheral](/reference/device-peripheral/createDevicePeripheral/)
- [deactivateDevicePeripheral](/reference/device-peripheral/deactivateDevicePeripheral/)
- [devicePeripheral](/reference/device-peripheral/devicePeripheral/)
- [doomDevicePeripheral](/reference/device-peripheral/doomDevicePeripheral/)
- [reactivateDevicePeripheral](/reference/device-peripheral/reactivateDevicePeripheral/)
- [updateDevicePeripheral](/reference/device-peripheral/updateDevicePeripheral/)
