---
title: "Chiffrer Panier"
method: POST
path: "/api/site/devis"
tags: ["site"]
---

# Chiffrer Panier

`POST /api/site/devis`

## Request

- Base URL: `https://api.brm-chronographes.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.brm-chronographes.com/api/site/devis`
- Auth: none declared

Le chiffrage d'un panier : prix vérifiés, TVA, TPH, devise, remise, paliers.

**C'est l'endpoint que le récapitulatif du tunnel doit appeler à chaque
changement** — ajout d'un article, changement de pays, case « société »
cochée, numéro de TVA saisi, code de réduction tapé. Sans lui, le
récapitulatif ment : il affichait « Total TTC » identique pour la France,
les États-Unis et une société allemande avec un numéro intracommunautaire.

`POST /commandes` appelle exactement la même fonction : le client ne peut
donc pas voir un montant et en payer un autre.

## Headers

- `x-site-jeton` string

## Request body

- AppRoutersSiteBoutiqueDevis: Ce qu'il faut au serveur pour chiffrer un panier, et rien de plus. Pas d'email, pas de nom : un visiteur doit pouvoir savoir ce qu'il paiera sans se présenter.
  - `lignes` LigneCommande[], required
    - `type` string
    - `ps_id` integer, nullable
    - `reference` string, nullable
    - `nom` string, required
    - `variante` string, nullable
    - `declinaison` integer, nullable
    - `prix` number
    - `qte` integer
    - `image` string, nullable
    - `options` unknown[], nullable
      - unknown
    - `calques` unknown[], nullable
      - unknown
    - `perso` PersoModel: `perso` d'une ligne du configurateur (contrat du 18/10/2026).
      - `cadran` PersoCadran: Logo client à 6 h : imprimé sur le cadran (plein) ou sur le verre (squelette).
        - `jeton` string, required
        - `support` 'cadran' | 'verre', required
        - `fond_retire` boolean
        - `taille` 70 | 85 | 100 | 115 | 130
      - `couronne` PersoCouronne: Bout de couronne : logo client gravé OU initiales (1 à 3, A–Z / 0–9).
        - `type` 'logo' | 'initiales', required
        - `jeton` string, nullable
        - `initiales` string, nullable
  - `pays_livraison` string
  - `societe` object, nullable
  - `devise` string, nullable
  - `langue` string
  - `frais_port` number
  - `code_promo` string, nullable
  - `livraison` string, nullable
  - `email` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/brm-chronographes/apis/brm-hub.md) · [All operations](https://skmtc.dev/brm-chronographes/apis/brm-hub/llms.txt) · [OpenAPI document](https://skmtc.dev/brm-chronographes/apis/brm-hub/revisions/f4342ec9ac98?raw)
