# Phase 26 : API Mobile POS (REST)

**Priorité :** P4
**Complexité :** TRES HAUTE
**Routes :** ~20
**Entités :** 0 (réutilise les services existants)

---

## Objectif

API REST pour une future application mobile POS. Authentification JWT, endpoints CRUD, synchronisation.

---

## Endpoints

### Authentification
| Méthode | Path | Description |
|---------|------|-------------|
| POST | `/api/v1/pos/auth/login` | Login employé (email/password ou PIN) |
| POST | `/api/v1/pos/auth/refresh` | Refresh token |

### Produits
| Méthode | Path | Description |
|---------|------|-------------|
| GET | `/api/v1/pos/products` | Liste produits (search, category, barcode) |
| GET | `/api/v1/pos/products/{id}` | Détail produit |
| GET | `/api/v1/pos/categories` | Liste catégories |

### Ventes
| Méthode | Path | Description |
|---------|------|-------------|
| POST | `/api/v1/pos/sales` | Créer une vente |
| GET | `/api/v1/pos/sales` | Liste ventes du jour |
| GET | `/api/v1/pos/sales/{id}` | Détail vente |
| POST | `/api/v1/pos/sales/{id}/void` | Annuler vente |

### Clients
| Méthode | Path | Description |
|---------|------|-------------|
| GET | `/api/v1/pos/customers` | Recherche clients |
| POST | `/api/v1/pos/customers` | Créer client rapide |

### Caisses
| Méthode | Path | Description |
|---------|------|-------------|
| GET | `/api/v1/pos/registers` | Caisses disponibles |
| POST | `/api/v1/pos/sessions/open` | Ouvrir session |
| POST | `/api/v1/pos/sessions/close` | Fermer session |

### Stock
| Méthode | Path | Description |
|---------|------|-------------|
| GET | `/api/v1/pos/stock` | Niveaux de stock |
| GET | `/api/v1/pos/stock/alerts` | Alertes stock |

### Rapports
| Méthode | Path | Description |
|---------|------|-------------|
| GET | `/api/v1/pos/reports/daily` | Rapport du jour |
| GET | `/api/v1/pos/reports/my-sales` | Mes ventes |

### Sync
| Méthode | Path | Description |
|---------|------|-------------|
| POST | `/api/v1/pos/sync` | Synchroniser ventes hors-ligne |

---

## Architecture
- JWT via LexikJWTBundle (déjà installé)
- Sérialisation Symfony Serializer avec groups (`pos_list`, `pos_detail`)
- Rate limiting par company/user
- Versioning URL : `/api/v1/pos/`
- Validation via Symfony Validator
- Réponses JSON standardisées : `{data: ..., meta: {page, total}}` ou `{error: ..., code: ...}`
