> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plato.ae/llms.txt
> Use this file to discover all available pages before exploring further.

# HTTP API

> نقاط النهاية التي كشفها برنامج تشغيل طابعة الكمبيوتر.

# HTTP API

يتم تقديم جميع نقاط النهاية من مضيف برنامج التشغيل الذي تم تكوينه.

```txt theme={null}
http://<driver-host>:8080
https://plato-printer.local
```

## هدف الطابعة المشترك

تتطلب نقاط نهاية استهداف الطابعة `ip_address` و`port`.

```json theme={null}
{
  "vendor_id": 1208,
  "product_id": 1208,
  "ip_address": "192.168.1.50",
  "port": "9100",
  "beep": false
}
```

يتم قبول `vendor_id` و`product_id` لتوافق العميل. يستهدف مسار الطباعة الحالي للشبكة الطابعات بواسطة `ip_address` و`port`.

## مشاركة/طباعة

يصطف في قائمة انتظار مهمة الطباعة ويعود على الفور.

```````http theme={null}
POST /print
Content-Type: application/json
``````json
{
  "vendor_id": 1208,
  "product_id": 1208,
  "ip_address": "192.168.1.50",
  "port": "9100",
  "beep": true,
  "chunks": ["GSB2MAA..."],
  "runAt": 1735689600000
}
```````

| مجال         | مطلوب | ملحوظات                                                                                                   |
| ------------ | ----- | --------------------------------------------------------------------------------------------------------- |
| `ip_address` | نعم   | عنوان IP الخاص بالطابعة.                                                                                  |
| `port`       | نعم   | منفذ TCP للطابعة، عادةً `9100`.                                                                           |
| `chunks`     | نعم   | مجموعة غير فارغة من قطع ESC/POS الأساسية 64.                                                              |
| `beep`       | لا    | يضيف تسلسل الصفير الذي تم تكوينه بعد الطباعة/القص.                                                        |
| `runAt`      | لا    | طابع زمني بالميلي ثانية، أو سلسلة رقمية، أو سلسلة تاريخ قابلة للتحليل. تؤخر القيم المستقبلية مهمة BullMQ. |

الاستجابة الناجحة:

```json theme={null}
{
  "ok": true,
  "jobId": "42",
  "queued": true
}
```

أخطاء التحقق:

| حالة  | خطأ                       |
| ----- | ------------------------- |
| `400` | `Missing printer address` |
| `400` | `Missing print data`      |
| `400` | `Invalid runAt timestamp` |

## ما بعد /الحالة

إرجاع حالة الطابعة المخزنة مؤقتًا أو المباشرة.

```json theme={null}
{
  "ip_address": "192.168.1.50",
  "port": "9100",
  "validate": true
}
```

إجابة:

```json theme={null}
{
  "ok": true,
  "printerKey": "192.168.1.50:9100",
  "status": "online",
  "validated": true,
  "busy": false,
  "source": "probe",
  "lastPingOn": "2026-06-16T07:00:00.000Z",
  "lastError": null,
  "waiting": 0,
  "active": 0,
  "delayed": 0,
  "failed": 0,
  "completed": 0
}
```

سلوك الحالة:

* إذا كانت قائمة الانتظار تحتوي على مهام انتظار أو نشطة أو متأخرة، فستُرجع الحالة الحالة المخزنة مؤقتًا باستخدام `busy: true`.
* إذا كانت قائمة الانتظار خاملة، فيمكن للسائق فحص الطابعة.
* `source: "probe"` يعني أنه تم إجراء فحص مباشر للمقبس.
* `source: "cache"` يعني أن الاستجابة جاءت من الحالة المخزنة وعدد قوائم الانتظار.

## بوست / صافرة

يقوم بوضع تسلسل الصفير الخاص بالطابعة في قائمة الانتظار.

```json theme={null}
{
  "ip_address": "192.168.1.50",
  "port": "9100"
}
```

إجابة:

```json theme={null}
{
  "ok": true,
  "jobId": "43",
  "queued": true
}
```

## بريد / درج النقود

يقوم بوضع أمر نبض درج النقود ESC/POS في قائمة الانتظار.

```json theme={null}
{
  "ip_address": "192.168.1.50",
  "port": "9100"
}
```

إجابة:

```json theme={null}
{
  "ok": true,
  "jobId": "44",
  "queued": true
}
```

## الحصول على / الصحة

إرجاع صحة العملية وإصدار الإصدار.

```json theme={null}
{
  "ok": true,
  "version": 66,
  "uptime": 123.45
}
```

## الحصول على /حالة قائمة الانتظار

إرجاع قوائم انتظار الطابعة المعروفة.

```json theme={null}
{
  "queue": [
    {
      "printerKey": "192.168.1.50:9100",
      "status": "online",
      "validated": false,
      "busy": false,
      "source": "cache",
      "lastPingOn": "2026-06-16T07:00:00.000Z",
      "lastError": null,
      "waiting": 0,
      "active": 0,
      "delayed": 0,
      "failed": 0,
      "completed": 0
    }
  ],
  "totalPending": 0,
  "isProcessing": false
}
```

## الحصول على /حالة الشبكة

عند تمكين الشبكة:

```json theme={null}
{
  "enabled": true,
  "path": "/mesh",
  "port": 8080,
  "connectedPeers": [],
  "peerCount": 0
}
```

عند تعطيل الشبكة:

```json theme={null}
{
  "enabled": false,
  "message": "Mesh disabled by config.json"
}
```

## احصل على /ca.crt

متاح عند تمكين HTTPS. يقوم بتنزيل شهادة CA كـ `plato-printer-ca.crt`.

## دبليو اس / شبكة

يتم تثبيت نقطة نهاية إشارة PeerJS عندما يكون `features.meshEnabled` صحيحًا.
