> ## 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

> PC yazıcı sürücüsünün açığa çıkardığı uç noktalar.

# HTTP API

Tüm uç noktalara, yapılandırılmış sürücü ana bilgisayarından hizmet verilir.

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

## Ortak Yazıcı Hedefi

Yazıcı hedefleme uç noktaları `ip_address` ve `port` gerektirir.

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

`vendor_id` ve `product_id`, istemci uyumluluğu açısından kabul edilir. Geçerli ağ yazdırma yolu, `ip_address` ve `port` yazıcılarını hedefler.

## POST /yazdır

Bir yazdırma işini kuyruğa alır ve hemen geri döner.

```````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
}
```````

| Alan         | Gerekli | Notlar                                                                                                                  |
| ------------ | ------- | ----------------------------------------------------------------------------------------------------------------------- |
| `ip_address` | Evet    | Yazıcı IP adresi.                                                                                                       |
| `port`       | Evet    | Yazıcı TCP bağlantı noktası, genellikle `9100`.                                                                         |
| `chunks`     | Evet    | Boş olmayan base64 ESC/POS parçaları dizisi.                                                                            |
| `beep`       | HAYIR   | Yazdırma/kesme sonrasında yapılandırılmış bip sesi dizisini ekler.                                                      |
| `runAt`      | HAYIR   | Milisaniyelik zaman damgası, sayısal dize veya ayrıştırılabilir tarih dizisi. Gelecek değerler BullMQ işini geciktirir. |

Başarılı yanıt:

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

Doğrulama hataları:

| Durum | Hata                      |
| ----- | ------------------------- |
| `400` | `Missing printer address` |
| `400` | `Missing print data`      |
| `400` | `Invalid runAt timestamp` |

## POST /durum

Önbelleğe alınmış veya canlı yazıcı durumunu döndürür.

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

Cevap:

```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
}
```

Durum davranışı:

* Kuyrukta bekleyen, etkin veya gecikmeli işler varsa durum, `busy: true` ile önbelleğe alınmış durumu döndürür.
* Kuyruk boşsa sürücü yazıcıyı inceleyebilir.
* `source: "probe"`, canlı soket kontrolünün gerçekleştirildiği anlamına gelir.
* `source: "cache"`, yanıtın depolanan durumdan ve kuyruk sayımlarından geldiği anlamına gelir.

## POST /bip sesi

Bir yazıcı için bip sesi sırasını sıraya koyar.

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

Cevap:

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

## POST /para çekmecesi

ESC/POS nakit çekmecesi darbe komutunu sıraya koyar.

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

Cevap:

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

## GET /sağlık

İşlem durumunu ve derleme sürümünü döndürür.

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

## GET /sıra durumu

Bilinen yazıcı kuyruklarını döndürür.

```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
}
```

## GET / ağ durumu

Ağ etkinleştirildiğinde:

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

Ağ devre dışı bırakıldığında:

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

## GET /ca.crt

HTTPS etkinleştirildiğinde kullanılabilir. CA sertifikasını `plato-printer-ca.crt` olarak indirir.

## WS / ağ

`features.meshEnabled` doğru olduğunda PeerJS sinyal uç noktası bağlanır.
