> Index de la documentation : https://stilldeeppos.com/fr/llms.txt

# SDK StillDeep — Generer un POSClient dans n'importe quel langage

> **E005 livre les contrats `.proto`. Ce guide explique comment generer un client.**
> Pour la reference WinForms .NET, voir `docs/client-reference.md`.

## Vue d'ensemble

Tout client UI POS dialogue avec `POSIntelligenceSvc` via **gRPC HTTP/2 sur `localhost:50051`** (defaut). L'API publique stable est composee de cinq services :

| Service | Description | .proto |
|---------|-------------|--------|
| `SalesService` | panier, paiement, finalisation | `sales.proto` |
| `CatalogService` | produits, categories, taxes | `catalog.proto` |
| `MemberService` | members, memberships, wallets | `member.proto` |
| `DeviceService` | imprimantes, scanners, terminaux | `device.proto` |
| `EventService` | streaming temps reel des events de vente | `events.proto` |

Tous partagent les types definis dans `common.proto` (Money, Quantity, Percentage, Pagination, ...).

### Conventions imposees

- Namespace `stilldeep.v1.*` — un eventuel V2 sera un namespace separe (jamais de breaking change V1).
- Montants : **`Money` avec `int64 cents`** (jamais `double` / `float`, regle R14).
- Pourcentages : **`Percentage` en basis points** (1/1_000_000).
- Quantites fractionnaires : **`Quantity` en milli_units** (1 unite = 1000).
- Timestamps : `google.protobuf.Timestamp` (UTC).
- Erreurs : `google.rpc.Status` avec `ErrorDetail` dans `details[]`.

## Recuperer les `.proto`

Le code de StillDeep est prive ; le contrat des clients est public et versionne. Le site officiel publie ses `.proto`
(`stilldeep.v1`, tous sauf `pos_proxy.proto`, reserve aux postes et a Server.Service) en une archive :
`/downloads/stilldeep-contracts.zip`. Les clients .NET prennent le NuGet `StillDeep.Intelligence.Contracts`.

```bash
curl -fsSLO https://<adresse-du-site>/downloads/stilldeep-contracts.zip
unzip stilldeep-contracts.zip && cp -r stilldeep-contracts/protos ./protos
```

## Guides par langage

| Langage | Guide |
|---------|-------|
| TypeScript / Node.js | [`typescript.md`](typescript.md) |
| Python 3 | [`python.md`](python.md) |
| Go | [`go.md`](go.md) |
| .NET | utiliser le NuGet `StillDeep.Intelligence.Contracts` directement |

Les autres langages supportes par gRPC officiel (Java, Kotlin, C++, Rust, Ruby, PHP, Dart, Swift) suivent le meme pattern : `protoc --proto_path=./protos --<lang>_out=./generated protos/*.proto`.

## Versioning

- **Pas de breaking change V1.** Tout nouveau champ est ajoute en `optional` proto3.
- Un champ ne sera **jamais retire** avant 2 versions majeures en mode deprecated.
- Si vous avez besoin d'une rupture, c'est un `stilldeep.v2.*` separe.

Voir [`E005`](../epics/E005-grpc-contracts.md) pour le contrat complet.

Source: https://stilldeeppos.com/fr/docs/reference/sdk
