# NewDevicePeripheralInput

input type

Create-input for a DevicePeripheral. The tenant is derived SERVER-SIDE; deviceId (the parent — rides the header) is tenant-scoped + non-doomed server-side (provisioning precedes pairing — pending_pairing/active/suspended all accept peripherals); model/type/connection coherence validates against the preset registry at the boundary AND in the kit.

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `caption` | [String](/types/#scalars) | no | Optional: when omitted the per-type default applies — the preset model's display name ('Zebra DS2208'); when supplied it must be non-blank. |
| `deviceId` | [ID](/types/#scalars) `ID!` | yes | The owning Device — tenant-scoped + non-doomed. Immutable after birth. |
| `peripheralType` | [DevicePeripheralType](/types/DevicePeripheralType/) `DevicePeripheralType!` | yes | Immutable after birth. |
| `model` | [String](/types/#scalars) `String!` | yes | A preset-registry key (cannedPeripheralModels) whose peripheralType matches. Immutable after birth. |
| `connection` | [DevicePeripheralConnection](/types/DevicePeripheralConnection/) `DevicePeripheralConnection!` | yes | One of the model’s supported modes. |
| `registrationCode` | [String](/types/#scalars) | no | The reader-displayed Stripe registration code — REQUIRED iff card_reader+network (the smart reader registers at birth, on the org’s connected account), REFUSED otherwise (strict both ways). Consumed by Stripe — never stored. |

## Used by

- [createDevicePeripheral](/reference/device-peripheral/createDevicePeripheral/)
