e-bon
e-bon.ro
SDK TypeScript

client.devices

Referință pentru client.devices — fiecare metodă cu semnături TypeScript, parametri și exemple Node, oglindind suprafața REST /api/v1/devices.

client.devices

client.devices împachetează /api/v1/devices/* — CRUD pe dispozitive fiscale, status în timp real și istoric de conexiune, configurare antet/subsol/TVA/operator, ajutoare de tipărire pe dispozitiv, alerte și fluxul de claim/release folosit de aplicația mobilă E-BON. Fiecare metodă returnează aceeași formă de obiect ca endpoint-ul REST corespondent documentat la API Dispozitive.

Toate eșecurile la nivel HTTP apar ca EBonApiError — vezi Erori și catalogul de erori HTTP de la /ro/api/errors.

client.devices.list(query?)

Listează toate dispozitivele, opțional filtrate după status sau locationId.

async list(query?: ListDevicesQuery): Promise<Device[]>
NumeTipObligatoriuNote
statusstringnuUna din online, offline, error — vezi DeviceStatus în @e-bon/types.
locationIdstringnuFiltrează la o singură locație.

Returnează un array de obiecte Device.

const onlineTills = await client.devices.list({ status: 'online' });
console.log(onlineTills.map((d) => d.id));

client.devices.get(id)

Obține un singur dispozitiv după ID.

async get(id: string): Promise<Device>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează un singur Device.

const device = await client.devices.get('dev_01HZ...');

client.devices.create(body)

Înregistrează un nou dispozitiv fiscal.

async create(body: CreateDeviceBody): Promise<Device>
NumeTipObligatoriuNote
namestringdaEtichetă lizibilă pentru oameni.
protocolDeviceProtocoldaProtocol pe fir — vezi @e-bon/types.
transportDeviceTransportdatcp, bluetooth, usb, etc.
connectionParamsConnectionParamsdaDetalii de conexiune specifice protocolului.
locationIdstringnuLocație opțională de atribuit.

Returnează Device-ul creat.

const device = await client.devices.create({
  name: 'Casa 1',
  protocol: 'datecs_dp25',
  transport: 'tcp',
  connectionParams: { host: '10.0.0.20', port: 4001 },
});

client.devices.update(id, body)

Actualizează proprietățile dispozitivului.

async update(id: string, body: UpdateDeviceBody): Promise<Device>
NumeTipObligatoriuNote
namestringnuRedenumește dispozitivul.
connectionParamsConnectionParamsnuÎnlocuiește întregul obiect connectionParams.
locationIdstring | nullnuMută la o locație, sau null pentru detașare.

Returnează Device-ul actualizat.

await client.devices.update('dev_01HZ...', { name: 'Casa A' });

client.devices.delete(id)

Șterge un dispozitiv.

async delete(id: string): Promise<undefined>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează undefined la succes.

await client.devices.delete('dev_01HZ...');

client.devices.getStatuses()

Obține statusurile dispozitivelor în lot.

async getStatuses(): Promise<DeviceStatusesResult>

Fără parametri. Returnează { statuses: Record<deviceId, DeviceStatusInfo> }.

const { statuses } = await client.devices.getStatuses();

client.devices.getStatus(id)

Obține statusul de conexiune al dispozitivului.

async getStatus(id: string): Promise<DeviceStatusInfo>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează un singur DeviceStatusInfo.

const status = await client.devices.getStatus('dev_01HZ...');

client.devices.getConnectionHistory(id)

Obține istoricul de conexiune al dispozitivului.

async getConnectionHistory(id: string): Promise<ConnectionHistoryResult>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează { events: ConnectionEvent[] } cu intrările cronologice de conectare/deconectare.

const { events } = await client.devices.getConnectionHistory('dev_01HZ...');

client.devices.sendCommand(id, body)

Trimite o comandă către un dispozitiv specific.

async sendCommand(id: string, body: SendDeviceCommandBody): Promise<FiscalCommand>
NumeTipObligatoriuNote
typeCommandTypedaTipul comenzii — vezi @e-bon/types.
payloadunknownnuPayload specific comenzii (forma depinde de type).

Returnează înregistrarea FiscalCommand creată (statusul începe ca pending). Abonează-te la WebSocket-ul de evenimente pentru command.completed / command.failed.

const cmd = await client.devices.sendCommand('dev_01HZ...', {
  type: 'print_x_report',
});

client.devices.getReceipts(id, query?)

Listează bonurile pentru un dispozitiv specific.

async getReceipts(id: string, query?: ListDeviceReceiptsQuery): Promise<Receipt[]>
NumeTipObligatoriuNote
typestringnuFiltru pe tipul bonului — vezi ReceiptType.
startDatestringnuLimită inferioară ISO-8601 (inclusiv).
endDatestringnuLimită superioară ISO-8601 (inclusiv).
limitnumbernuDimensiunea paginii; serverul plafonează maximul.
startAfterstringnuCursor — trimite ID-ul ultimului bon din pagina anterioară.

Returnează un array de Receipt. (SDK-ul desface plicul { receipts }.)

const recent = await client.devices.getReceipts('dev_01HZ...', { limit: 50 });

client.devices.getCashBalance(id)

Obține soldul de numerar pentru un dispozitiv.

async getCashBalance(id: string): Promise<CashBalanceResult>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează { cashBalance, currency, deviceId, timestamp }.

const { cashBalance } = await client.devices.getCashBalance('dev_01HZ...');

client.devices.setDatetime(id, body)

Setează data/ora dispozitivului.

async setDatetime(id: string, body: SetDatetimeBody): Promise<undefined>
NumeTipObligatoriuNote
datetimestringdaDatetime ISO-8601 de împins către ceasul AMEF.

Returnează undefined la succes.

await client.devices.setDatetime('dev_01HZ...', { datetime: new Date().toISOString() });

client.devices.printDuplicate(id)

Tipărește duplicatul ultimului bon.

async printDuplicate(id: string): Promise<undefined>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează undefined la succes.

await client.devices.printDuplicate('dev_01HZ...');

client.devices.nonFiscalReceipt(id, body)

Tipărește un bon text non-fiscal.

async nonFiscalReceipt(id: string, body: NonFiscalReceiptBody): Promise<undefined>
NumeTipObligatoriuNote
linesstring[]daO intrare per linie tipărită.
headerstringnuAntet opțional tipărit primul.

Returnează undefined la succes.

await client.devices.nonFiscalReceipt('dev_01HZ...', {
  lines: ['Bun venit', 'Pe curând'],
});

client.devices.uploadLogo(id, body)

Încarcă siglă pe dispozitiv.

async uploadLogo(id: string, body: UploadLogoBody): Promise<undefined>
NumeTipObligatoriuNote
logostringdaBitmap codat base64 (specific driverului).

Returnează undefined la succes.

await client.devices.uploadLogo('dev_01HZ...', { logo: base64Bitmap });

client.devices.deleteLogo(id)

Șterge sigla de pe dispozitiv.

async deleteLogo(id: string): Promise<undefined>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează undefined la succes.

await client.devices.deleteLogo('dev_01HZ...');

client.devices.getVatRates(id)

Obține cotele de TVA configurate pe un dispozitiv.

async getVatRates(id: string): Promise<VatRatesResult>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează { rates: VatRate[], deviceId, timestamp }.

const { rates } = await client.devices.getVatRates('dev_01HZ...');

client.devices.getVatCapabilities(id)

Obține capabilitățile de TVA ale unui dispozitiv.

async getVatCapabilities(id: string): Promise<VatCapabilitiesResult>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează { capabilities, deviceId, timestamp } care descrie ce acceptă firmware-ul AMEF.

const caps = await client.devices.getVatCapabilities('dev_01HZ...');

client.devices.setVatRates(id, body)

Setează cotele de TVA pe un dispozitiv.

async setVatRates(id: string, body: SetVatRatesBody): Promise<undefined>
NumeTipObligatoriuNote
ratesVatRate[]daArray de intrări { name, percentage }.

Returnează undefined la succes.

await client.devices.setVatRates('dev_01HZ...', {
  rates: [
    { name: 'A', percentage: 19 },
    { name: 'B', percentage: 9 },
  ],
});

client.devices.getHeaderFooterCapabilities(id)

Obține capabilitățile de antet/subsol ale unui dispozitiv.

async getHeaderFooterCapabilities(id: string): Promise<HeaderFooterCapabilitiesResult>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează { capabilities: { maxHeaderLines, maxFooterLines, maxCharsPerLine }, deviceId, timestamp }.

const caps = await client.devices.getHeaderFooterCapabilities('dev_01HZ...');

client.devices.getHeaderFooter(id)

Obține liniile de antet și subsol configurate pe un dispozitiv.

async getHeaderFooter(id: string): Promise<HeaderFooterResult>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează { header: string[], footer: string[], deviceId, timestamp }.

const { header, footer } = await client.devices.getHeaderFooter('dev_01HZ...');

client.devices.setHeaderFooter(id, body)

Setează liniile de antet și subsol pe un dispozitiv.

async setHeaderFooter(id: string, body: SetHeaderFooterBody): Promise<undefined>
NumeTipObligatoriuNote
headerstring[]daLinii de antet (respectă maxHeaderLines).
footerstring[]daLinii de subsol (respectă maxFooterLines).

Returnează undefined la succes.

await client.devices.setHeaderFooter('dev_01HZ...', {
  header: ['ACME SRL', 'CUI RO12345678'],
  footer: ['Mulțumim!'],
});

client.devices.getOperatorCapabilities(id)

Obține capabilitățile operatorului pentru un dispozitiv.

async getOperatorCapabilities(id: string): Promise<OperatorCapabilitiesResult>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează { capabilities: { maxOperators, maxNameLength, maxPasswordLength, supportsPassword }, deviceId, timestamp }.

const caps = await client.devices.getOperatorCapabilities('dev_01HZ...');

client.devices.setOperator(id, body)

Setează numele/parola operatorului pe un dispozitiv.

async setOperator(id: string, body: SetOperatorBody): Promise<undefined>
NumeTipObligatoriuNote
operatorIdnumberdaIndexul slotului — limitat de maxOperators.
namestringdaNumele afișat al operatorului.
passwordstringnuNecesar doar când dispozitivul supportsPassword.

Returnează undefined la succes.

await client.devices.setOperator('dev_01HZ...', { operatorId: 1, name: 'Ana' });

client.devices.getInfo(id)

Obține informații live despre dispozitiv (serial, firmware, memorie fiscală, producător).

async getInfo(id: string): Promise<DeviceInfoResult>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează { serialNumber, firmwareVersion, fiscalMemoryStatus, manufacturer, model? }.

const info = await client.devices.getInfo('dev_01HZ...');

client.devices.getLastReceiptInfo(id)

Obține informații despre ultimul bon de pe dispozitiv.

async getLastReceiptInfo(id: string): Promise<LastReceiptInfoResult>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează { receiptNumber, date, total, fiscalMemoryNumber?, deviceId, timestamp }.

const last = await client.devices.getLastReceiptInfo('dev_01HZ...');

client.devices.voidOpenReceipt(id)

Anulează un bon deschis pe dispozitiv.

async voidOpenReceipt(id: string): Promise<VoidOpenReceiptResult>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează { success, message, deviceId, timestamp }.

const res = await client.devices.voidOpenReceipt('dev_01HZ...');

client.devices.printReversalReceipt(id, body)

Tipărește un bon de stornare pe dispozitiv.

async printReversalReceipt(id: string, body: ReversalReceiptBody): Promise<ReversalReceiptResult>
NumeTipObligatoriuNote
uniqueSaleNumberstringdaIdentificator de vânzare de pe bonul original.
originalReceiptNumberstringdaNumărul bonului original.
originalReceiptDateTimestringdaMarca de timp ISO-8601 a bonului original.
fiscalMemorySerialNumberstringdaNumărul de serie al memoriei fiscale a dispozitivului original.
originalZReportNumberstringnuNumărul raportului Z care conține bonul original.
reason'operator_error' | 'refund' | 'tax_base_reduction'daCod de motiv legal.
itemsReversalReceiptItem[]daArticole de stornat — { name, quantity, price, vatRate }.
paymentsReversalReceiptPayment[]nuLinii opționale de plată pentru rambursare.

Returnează { success, message, receiptNumber?, deviceId, timestamp }.

await client.devices.printReversalReceipt('dev_01HZ...', {
  uniqueSaleNumber: 'SALE-1042',
  originalReceiptNumber: '0001234',
  originalReceiptDateTime: '2026-04-20T11:32:00+03:00',
  fiscalMemorySerialNumber: 'DY12345678',
  reason: 'refund',
  items: [{ name: 'Tricou', quantity: 1, price: 49.9, vatRate: 19 }],
});

client.devices.getAlerts(id, query?)

Obține alertele pentru un dispozitiv specific.

async getAlerts(id: string, query?: ListDeviceAlertsQuery): Promise<DeviceAlert[]>
NumeTipObligatoriuNote
severitystringnuFiltrează după DeviceAlertSeverity.

Returnează un array de DeviceAlert. (SDK-ul desface plicul { alerts }.)

const alerts = await client.devices.getAlerts('dev_01HZ...', { severity: 'error' });

client.devices.getAllAlerts(query?)

Obține alertele în lot pentru toate dispozitivele organizației.

async getAllAlerts(query?: ListDeviceAlertsQuery): Promise<BatchAlertsResult>
NumeTipObligatoriuNote
severitystringnuFiltrează după DeviceAlertSeverity.

Returnează { alerts: Record<deviceId, DeviceAlert[]> }.

const { alerts } = await client.devices.getAllAlerts();

client.devices.claim(id, body)

Preia controlul unui dispozitiv.

async claim(id: string, body: ClaimDeviceBody): Promise<undefined>
NumeTipObligatoriuNote
appInstanceIdstringdaInstanța aplicației mobile care preia controlul.

Returnează undefined la succes.

await client.devices.claim('dev_01HZ...', { appInstanceId: 'app_inst_01HZ...' });

client.devices.release(id)

Eliberează controlul unui dispozitiv.

async release(id: string): Promise<undefined>
NumeTipObligatoriuNote
idstringdaIdentificatorul dispozitivului.

Returnează undefined la succes.

await client.devices.release('dev_01HZ...');