Skip to content

Devis — Lecture + écriture (pas de suppression)

Gestion des devis. Comme les factures, pas de DELETE (un devis envoyé reste traçable).

Source : server/publicApi/routes/billing.ts:186-303. Schéma : insertQuoteSchema dans shared/schema.ts.

Vue d'ensemble

MéthodePathScope
GET/quotesquotes:read
GET/quotes/:idquotes:read
POST/quotesquotes:write
PATCH/quotes/:idquotes:write

Webhooks émis : quote.created, quote.updated, quote.accepted (status change → accepted).

Statuts canoniques

statusDescription
draftBrouillon
sentEnvoyé au client
acceptedAccepté (déclenche quote.accepted)
rejectedRefusé
expiredHors validité (validUntil dépassé)

GET /quotes

Liste paginée triée par createdAt DESC.

json
{
  "data": [
    {
      "id": 1,
      "clientId": 42,
      "quoteNumber": "D-2026-0042",
      "status": "sent",
      "totalHt": "5000.00",
      "totalTtc": "6000.00",
      "issueDate": "2026-04-01T00:00:00.000Z",
      "validUntil": "2026-05-01T00:00:00.000Z"
    }
  ],
  "total": 28,
  "limit": 50,
  "offset": 0
}

POST /quotes

Création d'un devis.

Body

json
{
  "clientId": 42,
  "quoteNumber": "D-2026-0042",
  "status": "draft",
  "totalHt": "5000.00",
  "totalTtc": "6000.00",
  "issueDate": "2026-04-27",
  "validUntil": "2026-05-27",
  "lines": [
    { "description": "Refonte site", "quantity": 1, "unitPrice": "5000.00", "vatRate": "20" }
  ]
}

Dates en ISO 8601 (converties serveur). validUntil optionnel.

Webhook émis

quote.created.


PATCH /quotes/:id

Mise à jour partielle.

Webhooks émis

  • quote.updated (toujours)
  • quote.accepted (si status passe à accepted)

Exemple — accepter un devis

bash
curl -X PATCH \
  -H "x-api-key: spk_..." \
  -H "Content-Type: application/json" \
  -d '{"status":"accepted","acceptedAt":"2026-04-27T15:00:00.000Z"}' \
  https://beta.stormeo.io/api/public/v1/quotes/42

Workflow type : un devis accepted peut déclencher la création automatique d'une facture côté agence (logique métier interne, hors périmètre Public API).

StormeoOS API