naskel
APIMis à jour le

Devis

Lister, lire, créer, modifier et supprimer des devis via l'API. Champs renvoyés, corps de création et passage au statut envoyé.

La ressource quotes permet de gérer vos devis. L'enveloppe (authentification, pagination, format des réponses) est identique aux autres ressources.

Endpoints

MéthodeCheminScope
GET/api/v1/quotesread:quotes
POST/api/v1/quoteswrite:quotes
GET/api/v1/quotes/{id}read:quotes
PATCH/api/v1/quotes/{id}write:quotes
DELETE/api/v1/quotes/{id}write:quotes
POST/api/v1/quotes/{id}/sendwrite:quotes

Les statuts possibles d'un devis sont décrits dans Devis et factures.

Lister les devis

Paramètres de requête : limit, offset (voir Pagination) et status.

Le filtre status accepte tout l'énum QuoteStatus : DRAFT, SENT, SENT_FOR_SIGNATURE, ACCEPTED, REJECTED, REJECTED_SIGNATURE, EXPIRED, ARCHIVED.

Champs renvoyés

id, number, title, status, clientName, clientCompany, clientEmail, taxRate, validityDays, currency, opportunityId, issuedAt, sentAt, createdAt, updatedAt.

Lire un devis

GET /api/v1/quotes/{id} renvoie les mêmes champs que la liste, plus : clientAddress, clientSiret, clientVatNumber, introText, terms, notes, signedAt, ainsi que les lignes :

lines[] : id, position, description, quantity, unitPrice, unit, discountPercent, taxRate.

Créer un devis

ChampTypeRequisNotes
clientNametexte, 1 à 200 caractèresOui
clientEmailemail, 200 caractères maxOui
currencytexte, 3 caractèresNonEUR par défaut
opportunityIdtexteNonRattacher à une opportunité
contactIdtexteNonRattacher à un contact
linestableau, 1 à 100 élémentsOuiAu moins une ligne
lines[].titletexte, 1 à 500 caractèresOui
lines[].quantitynombre, supérieur à 0Oui
lines[].unitPricenombre, 0 ou plusOui
lines[].taxRatenombre, entre 0 et 100Non

Nom des champs de ligne

Le libellé d'une ligne s'envoie dans lines[].title, mais il ressort sous lines[].description en lecture (GET). C'est le même texte sous deux noms, pensez-y si vous comparez ce que vous envoyez à ce que vous relisez.

Modifier un devis

PATCH /api/v1/quotes/{id} met à jour un devis en brouillon. Tous les champs sont optionnels : n'envoyez que ceux à changer.

ChampTypeNotes
titletexteTitre du devis
validityDaysnombre, 0 à 365Durée de validité
taxRatenombre, 0 à 100Taux de TVA
notestexteNotes
termstexteConditions
linestableauRemplace l'intégralité des lignes existantes
  • Réservé au statut DRAFT : sinon 409 quote_not_draft.
  • lines est un remplacement complet, pas une fusion : renvoyez toutes les lignes voulues.

Supprimer un devis

DELETE /api/v1/quotes/{id} supprime un devis en brouillon (DRAFT uniquement, sinon 409 quote_not_draft). La suppression est douce (soft delete) : le devis quitte vos listes. Réponse : { "ok": true }.

Marquer un devis comme envoyé

POST /api/v1/quotes/{id}/send fait passer le devis du statut DRAFT à SENT (et renseigne sentAt). Le corps est vide.

Cet endpoint n'envoie pas d'email

Dans l'API v1, /send change seulement le statut du devis (DRAFTSENT) : il n'envoie aucun email au client. L'envoi par email, depuis votre boîte connectée, se fait dans l'application. Utilisez cet endpoint pour refléter dans Naskel un devis que vous avez transmis par un autre canal.

  • Si le devis n'est pas en DRAFT, l'appel renvoie 409 quote_not_draft.
  • Cet endpoint ne supporte pas l'idempotence (Idempotency-Key).
  • Réponse :
{ "data": { "id": "…", "number": "…", "status": "SENT", "sentAt": "…", "updatedAt": "…" } }

Voir aussi