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

> Points de terminaison exposés par le pilote d'imprimante du PC.

# HTTP API

Tous les points de terminaison sont servis à partir de l'hôte du pilote configuré.

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

## Cible d'imprimante commune

Les points de terminaison de ciblage d’imprimante nécessitent `ip_address` et `port`.

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

`vendor_id` et `product_id` sont acceptés pour la compatibilité client. Le chemin d'impression réseau actuel cible les imprimantes `ip_address` et `port`.

## POST /imprimer

Met en file d'attente un travail d'impression et revient immédiatement.

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

| Champ        | Requis | Remarques                                                                                                                    |
| ------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------- |
| `ip_address` | Oui    | Adresse IP de l'imprimante.                                                                                                  |
| `port`       | Oui    | Port TCP de l'imprimante, généralement `9100`.                                                                               |
| `chunks`     | Oui    | Tableau non vide de morceaux base64 ESC/POS.                                                                                 |
| `beep`       | Non    | Ajoute la séquence de bips configurée après l'impression/découpe.                                                            |
| `runAt`      | Non    | Horodatage en millisecondes, chaîne numérique ou chaîne de date analysable. Les valeurs futures retardent le travail BullMQ. |

Réponse réussie :

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

Erreurs de validation :

| Statut | Erreur                    |
| ------ | ------------------------- |
| `400`  | `Missing printer address` |
| `400`  | `Missing print data`      |
| `400`  | `Invalid runAt timestamp` |

## POST /statut

Renvoie l’état de l’imprimante en cache ou en direct.

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

Réponse:

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

Comportement d'état :

* Si la file d'attente contient des tâches en attente, actives ou retardées, l'état renvoie l'état mis en cache avec `busy: true`.
* Si la file d'attente est inactive, le pilote peut sonder l'imprimante.
* `source: "probe"` signifie qu'une vérification de socket en direct a été effectuée.
* `source: "cache"` signifie que la réponse provient de l'état stocké et du nombre de files d'attente.

## POST/bip

Met en file d'attente la séquence de bips pour une imprimante.

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

Réponse:

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

## POST /tiroir-caisse

Met en file d'attente la commande d'impulsion du tiroir-caisse ESC/POS.

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

Réponse:

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

## OBTENIR/santé

Renvoie l’état du processus et la version de build.

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

## GET / état de la file d'attente

Renvoie les files d'attente d'imprimante connues.

```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 /statut-mesh

Lorsque le maillage est activé :

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

Lorsque le maillage est désactivé :

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

## OBTENIR /ca.crt

Disponible lorsque HTTPS est activé. Télécharge le certificat CA sous le nom `plato-printer-ca.crt`.

## WS/maille

Point de terminaison de signalisation PeerJS monté lorsque `features.meshEnabled` est vrai.
