Printer Status API
This document describes printer status workflows: start/stop, operational flags, drawer control, on-demand reads, and streaming.
Notes:
- JSON responses omit null fields globally.
- Drawer state "OpenedByCommand" is emitted by ESC/POS pulses and cannot be set via API.
Types (TypeScript)
type PrinterTargetState = "Started" | "Stopped";
type PrinterListenerState = "Starting" | "Started" | "Stopped" | "Error";
type DrawerState = "Closed" | "OpenedManually" | "OpenedByCommand";
type PrinterDto = { id: string; displayName: string; isPinned: boolean; lastViewedDocumentId: string | null; lastDocumentReceivedAt: string | null; };
type PrinterSettingsDto = { protocol: "EscPos"; widthInDots: number; heightInDots: number | null; tcpListenPort: number; emulateBufferCapacity: boolean; bufferDrainRate: number | null; bufferMaxCapacity: number | null; };
type PrinterOperationalFlagsDto = { printerId: string; targetState: PrinterTargetState; updatedAt: string; isCoverOpen: boolean; isPaperOut: boolean; isOffline: boolean; hasError: boolean; isPaperNearEnd: boolean; };
type PrinterRuntimeStatusDto = { printerId: string; state: PrinterListenerState; updatedAt: string; bufferedBytes: number | null; drawer1State: DrawerState | null; drawer2State: DrawerState | null; };
type PrinterResponseDto = { printer: PrinterDto; settings: PrinterSettingsDto; operationalFlags: PrinterOperationalFlagsDto | null; runtimeStatus: PrinterRuntimeStatusDto | null; };
type PrinterSidebarSnapshotDto = { printer: PrinterDto; runtimeStatus?: PrinterRuntimeStatusDto; };
type PrinterRuntimeStatusUpdateDto = { state?: PrinterListenerState; updatedAt: string; bufferedBytes?: number | null; drawer1State?: DrawerState | null; drawer2State?: DrawerState | null; };
type PrinterOperationalFlagsUpdateDto = { printerId: string; updatedAt: string; targetState?: PrinterTargetState; isCoverOpen?: boolean; isPaperOut?: boolean; isOffline?: boolean; hasError?: boolean; isPaperNearEnd?: boolean; };
type PrinterStatusUpdateDto = { printerId: string; updatedAt: string; runtime?: PrinterRuntimeStatusUpdateDto; operationalFlags?: PrinterOperationalFlagsUpdateDto; settings?: PrinterSettingsDto; printer?: PrinterDto; };
Requests
type CreatePrinterRequestDto = { printer: { id: string; displayName: string }; settings: { protocol: "EscPos"; widthInDots: number; heightInDots: number | null; emulateBufferCapacity: boolean; bufferDrainRate: number | null; bufferMaxCapacity: number | null; }; };
type UpdatePrinterRequestDto = { printer: { id: string; displayName: string }; settings: { protocol: "EscPos"; widthInDots: number; heightInDots: number | null; emulateBufferCapacity: boolean; bufferDrainRate: number | null; bufferMaxCapacity: number | null; }; };
type UpdatePrinterOperationalFlagsRequestDto = { isCoverOpen?: boolean; isPaperOut?: boolean; isOffline?: boolean; hasError?: boolean; isPaperNearEnd?: boolean; targetState?: PrinterTargetState; };
type UpdatePrinterDrawerStateRequestDto = { drawer1State?: "Closed" | "OpenedManually"; drawer2State?: "Closed" | "OpenedManually"; };
Endpoints
POST /api/printers
Creates a printer.
Response: PrinterResponseDto
PUT /api/printers/
Updates printer metadata and settings.
Response: PrinterResponseDto
GET /api/printers
Lists full printer snapshots.
Response: PrinterResponseDto[]
GET /api/printers/
Reads a full printer snapshot.
Response: PrinterResponseDto
PATCH /api/printers/
Partial update of operational flags. Setting targetState starts or stops the printer listener.
Response: PrinterOperationalFlagsDto
PATCH /api/printers/
Manual drawer open/close (OpenedByCommand cannot be set via API).
Response: PrinterRuntimeStatusDto
Streaming
GET /api/printers/sidebar
Returns sidebar snapshots (metadata + state-only runtime).
Response: PrinterSidebarSnapshotDto[]
GET /api/printers/sidebar/stream
Server-sent events for sidebar updates.
Event: sidebar Payload: PrinterSidebarSnapshotDto
GET /api/printers/
Server-sent events for active printer updates. Payload is partial; only changed sections are present (runtime/operationalFlags/settings/printer).
Event: status Payload: PrinterStatusUpdateDto
Error Responses
Errors use ProblemDetails-like JSON:
type ProblemDetails = { status: number; detail: string; instance: string; };
Next pageFind Your Symptom →