API Headless

API-ul Headless este un set specializat de endpoint-uri HTTP conceput pentru gestionarea programatică a driverului FisCool, fără interacțiunea utilizatorului prin interfața grafică. Acesta este ideal pentru medii integrate unde driverul rulează în fundal și este gestionat complet de aplicația gazdă.

Toate endpoint-urile sunt disponibile sub calea /manage și acceptă/returnează JSON.

Gestionare Dispozitive

Salvare Dispozitiv Fiscal

Adaugă sau actualizează configurația unui dispozitiv fiscal.

Important: Înainte de a salva un dispozitiv, apelați /manage/get_supported_devices pentru a obține valorile valide pentru manufacturer și model. Trebuie să utilizați șirurile exacte returnate de acel endpoint.

Notă: Furnizați câmpul id doar atunci când editați un dispozitiv existent. Dacă id lipsește sau este null, va fi creat un dispozitiv nou.

POST /manage/save_fiscal_device

Corp Cerere (DeviceConfig):

{
  "id": "uuid-string",
  "name": "Imprimanta Mea",
  "manufacturer": "Datecs",
  "model": "DP25",
  "connection_details": {
    "type": "Serial",
    "details": {
      "port": "COM3",
      "baud_rate": 115200
    }
  },
  "notes": "Casa principală"
}
Tipuri de Conexiune și Suport Platformă
Tip Suport Platformă Descriere Structură Detalii JSON
Serial Doar Windows Utilizat pentru porturi COM fizice și convertoare USB-Serial (VCP).
{
  "port": "COMx",
  "baud_rate": 115200
}
Network Windows și Android Utilizat pentru dispozitive conectate prin LAN sau WiFi.
{
  "ip_address": "192.168.1.100",
  "port": 9100
}
Usb Doar Android Conexiune USB directă folosind Android USB Host API.
{
  "device_selector": "vid:pid",
  "baud_rate": 115200
}

Răspuns:

{
  "success": true,
  "message": "Fiscal device saved successfully"
}

Ștergere Dispozitiv Fiscal

Elimină configurația unui dispozitiv fiscal.

POST /manage/delete_fiscal_device

Corp Cerere:

{
  "id": "uuid-string" // ID-ul dispozitivului de șters
}

Răspuns:

{
  "success": true,
  "message": "Fiscal device deleted successfully"
}

Salvare Terminal POS

Adaugă sau actualizează configurația unui terminal POS. Urmează aceleași reguli de conexiune ca și dispozitivele fiscale.

Notă: Furnizați câmpul id doar atunci când editați un dispozitiv existent. Dacă id lipsește sau este null, va fi creat un dispozitiv nou.

POST /manage/save_pos_terminal

Corp Cerere (DeviceConfig):

{
  "id": "uuid-string",
  "name": "POS-ul Meu",
  "manufacturer": "Ingenico",
  "model": "Desk3200",
  "connection_details": {
    "type": "Network",
    "details": {
      "ip_address": "192.168.1.50",
      "port": 2000
    }
  },
  "notes": "Casa 1"
}

Răspuns:

{
  "success": true,
  "message": "POS terminal saved successfully"
}

Ștergere Terminal POS

Elimină configurația unui terminal POS.

POST /manage/delete_pos_terminal

Corp Cerere:

{
  "id": "uuid-string"
}

Răspuns:

{
  "success": true,
  "message": "POS terminal deleted successfully"
}

Sistem și Configurare

Obținere Porturi COM Disponibile

Listează toate porturile seriale disponibile în sistem (Doar Windows).

POST /manage/get_available_com_ports

Răspuns:

[
  "COM1",
  "COM3",
  "COM4"
]

Obținere Dispozitive Suportate

Returnează o listă cu producătorii și modelele suportate atât pentru dispozitive fiscale, cât și pentru terminale POS. Utilizați aceste valori la crearea de noi dispozitive.

POST /manage/get_supported_devices

Răspuns (SupportedDevices):

{
  "fiscal": {
    "manufacturers": [
      {
        "value": "DATECS",
        "label": "DATECS",
        "models": ["DP25", "DP25 MX", "DP05", "DP150", "FP650", "FP700", "FP800", "WP50"],
        "default_port": 3999,
        "supports_serial": true,
        "supports_network": true
      },
      {
        "value": "Daisy",
        "label": "Daisy",
        "models": ["eXpert SX", "Expert L", "Perfect M", "Compact S", "Compact M"],
        "default_port": null,
        "supports_serial": true,
        "supports_network": false
      },
      {
        "value": "Tremol",
        "label": "Tremol",
        "models": ["A19 Plus", "M20", "M23", "S21", "S25", "Tremol S"],
        "default_port": null,
        "supports_serial": true,
        "supports_network": true
      }
    ]
  },
  "pos": {
    "banks": ["Banca Transilvania", "BCR"],
    "manufacturers": [
      {
        "value": "Ingenico",
        "label": "Ingenico",
        "models": ["Desk3200", "Desk3500"],
        "default_port": null,
        "supports_serial": true,
        "supports_network": true
      },
      {
        "value": "PAX",
        "label": "PAX",
        "models": ["A920", "A920 Pro"],
        "default_port": null,
        "supports_serial": true,
        "supports_network": true
      }
    ]
  }
}

Obținere Configurare Notificări

Recuperează setările curente de notificare.

POST /manage/get_notification_config

Răspuns (NotificationConfig):

{
  "email_list": ["admin@example.com", "suport@magazin.ro"],
  "send_z_report_email": true
}

Salvare Configurare Notificări

Actualizează setările de notificare.

POST /manage/save_notification_config

Corp Cerere (NotificationConfig):

{
  "email_list": ["admin@example.com", "manager@example.com"],
  "send_z_report_email": true
}

Răspuns:

{
  "success": true,
  "message": "Notification config saved successfully"
}

Jurnal și Actualizări

Obținere Intrări Jurnal

Recuperează jurnalele de operațiuni. Util pentru audit și istoric.

POST /manage/get_journal_entries

Corp Cerere:

{
  "start_time": 1672531200000,
  "end_time": 1672617600000
}
Structură Intrare Jurnal
Câmp Tip Descriere
idnumberID unic incremental.
timestampstringTimestamp ISO 8601.
device_namestringNumele dispozitivului care a efectuat acțiunea.
action_typestringTipul operațiunii efectuate (vezi tabelul de mai jos).
successbooleanDacă operațiunea a avut succes.
receipt_dataobject|nullDatele originale ale cererii de bon (dacă este cazul).
amount_centsnumber|nullSuma monetară implicată (dacă este cazul).
full_textstring|nullTextul brut returnat de dispozitiv (ex: rapoarte).
Tipuri de Acțiuni
Tip Acțiune Descriere Câmpuri de Date Relevante
PrintReceiptTipărire bon fiscal standard.receipt_data
NonFiscalReceiptTipărire text/documente non-fiscale.-
ZReportRaport Z zilnic (resetează totalurile zilnice).amount_cents, full_text
XReportRaport X (totaluri doar pentru citire).amount_cents, full_text
SaleOperațiune de vânzare directă (POS).amount_cents
SettlementDecontare POS/Închidere Lot.-
DepositDepunere numerar în sertar.amount_cents
WithdrawRetragere numerar din sertar.amount_cents
FiscalMemoryReportRaport din memoria fiscală.-
AnafExportExport date pentru ANAF.-
ServiceConnectionConexiune Service/Mentenanță.-

Exemplu Răspuns:

[
  {
    "id": 1024,
    "timestamp": "2023-10-27T10:30:00Z",
    "device_name": "Imprimanta Principală",
    "device_id": "uuid-string",
    "action_type": "PrintReceipt",
    "description": "Tipărit bon #123",
    "success": true,
    "error_message": null,
    "receipt_data": { "items": [...] },
    "amount_cents": 1500,
    "full_text": null
  }
]

Verificare Actualizări

Verifică dacă este disponibilă o nouă versiune a driverului.

POST /manage/check_for_updates

Răspuns (UpdateCheckResponse):

{
  "has_update": true,
  "latest_version": "1.2.0",
  "versions": [
    {
      "version": "1.2.0",
      "description": "Adăugat suport pentru noi modele Datecs",
      "date": "2023-10-25",
      "manifest_url": "https://...",
      "is_current": false,
      "is_newer": true
    }
  ]
}

Instalare Actualizare

Declanșează procesul de instalare a actualizării. Necesită confirmarea utilizatorului pe mașina gazdă, cu excepția cazului în care rulează într-un mod complet silențios (dacă este suportat).

POST /manage/install_update

Corp Cerere:

{
  "version": "1.2.0"
}

Răspuns:

{
  "success": true,
  "message": "Update installation started"
}