L'API de l'application Deskeen.fr permet de réaliser toutes les fonctionnalités de l'application à partir de code informatique plutôt qu'en utilisant l'interface Web.
Elle donne la possibilité aux utilisateurs de Deskeen.fr d'interfacer leurs applications informatiques pour récupérer certaines informations ou automatiser certaines tâches.
La compréhension de cette documentation et la réalisation de programmes informatiques basées sur cette API nécessitent des compétences en informatique et en développement Web.
Fonctionnement de l'API
L'API utilise principalement les conventions et standards du Web. Les notions les plus importantes sont reprises et expliquées pour plus de compréhension.
Types de requêtes de l'API
Les types de requêtes utilisées sont: POST
, PUT
et DELETE
.
Les requêtes POST
permettent de créer une ressource. L'objet présent dans le corps de la requête est utilisé pour altérer les propriétés de cette ressource. Si des propriétés de la ressource ne sont pas spécifiées, les valeurs par défaut de la ressource sont utilisées.
Les requêtes PUT
permettent de modifier une ressource. Seules les propriétés présentes dans le corps de la requête sont utilisées pour modifier la ressources. Les propriétés non présentes dans le corps de la requête restent inchangées.
Enfin, les requêtes DELETE
permettent de supprimer une ressource.
Codes HTTP des réponses de l'API
Les codes HTTP conventionnels sont utilisés pour indiquer le succès ou l'échec d'une requête.
Les codes 200
, 201
et 204
sont utilisés pour indiquer le succès de la requête. Plus précisément:
200
indique que la requête a correctement été traitée et que la réponse contient un message.201
indique que la ressource a bien été créée. La réponse peut contenir un message.204
indique que la requête a bien été traitée et que la réponse ne contient pas de message.
Les codes entre 400
et 499
sont utilisés pour indiquer l'échec de la requête. Le corps de la réponse contient alors un message d'erreur avec la raison pour laquelle la requête a échoué. Plus précisément:
400
indique une erreur dans le format du corps de la requête.401
indique une erreur d'authentification.403
indique que l'opération n'est pas permise.404
indique que la ressource n'existe pas.409
indique une erreur de conflits entre plusieurs requêtes simultanées.422
indique qu'une valeur du corps de la requête est incorrecte.
Enfin, les codes 500
et plus sont utilisés lorsqu'une erreur interne à l'API intervient.
Requêtes d'authentification
Les requêtes d'authentification doivent contenir deux en-têtes personnalisées: dk-timestamp
et dk-hash
.
L'en-tête dk-timestamp
correspond à la date de création de la requête au format JSON (ISO 8601), par exemple 2020-04-29T15:08:10.404Z
, et l'en-tête dk-hash
correspond à l'empreinte numérique de la requête.
L'empreinte numérique est générée en codant en Base64 le résultat de la fonction de hachage SHA-256 du texte composé des éléments suivants concaténés:
- La valeur du paramètre
dk-timestamp
; - La méthode de la requête,
GET
,POST
,PUT
ouDELETE
; - L'adresse du point d'accès, en excluant le nom de domaine (par exemple
/login
); - Le corps de la requête.
Le corps des requêtes d'authentification doit être au format JSON. L'entête content-type
de la requête doit donc être égal à application/json
.
Exemple d'une requête d'authentification avec en-têtes et contenu:
POST /login
dk-timestamp: 2020-04-29T15:08:10.404Z
dk-hash: y20ASPRM5nktjO0T2SGjRaxm1dTFWIVv8wy8tXJnA0k=
content-type: application/json
body: {"email":"moncompte@deskeen.fr","password":"monmotdepasse"}
L'empreinte dk-hash
de la requête d'exemple ci-dessous a été calculée à partir du texte suivant:
2020-04-29T15:08:10.404ZPOST/login{"email":"moncompte@deskeen.fr","password":"monmotdepasse"}
Requêtes de l'API
Toutes les requêtes envoyées à l'API, à l'exception des requêtes d'authentification, doivent contenir quatre paramètres personnalisés: dk-tenant
, dk-user
, dk-timestamp
et dk-hmac
.
Le paramètre dk-tenant
correspond à l'identifiant de l'entreprise fourni lors de l'authentification.
Le paramètre dk-user
correspond à l'identifiant de l'utilisateur également fourni lors l'authentification.
Le paramètre dk-timestamp
correspond à la date de création de la requête au format JSON (ISO 8601), par exemple 2020-04-29T15:08:10.404Z
.
Le paramètre dk-hmac
correspond à la signature numérique de la requête. Elle est générée en codant en Base64 le résultat de l'algorithme HMAC - SHA-256 en utilisant la signature numérique de la session fournie lors de l'authentification sur le texte composé des éléments suivants concaténés:
- La valeur de l'en-tête
dk-timestamp
; - La méthode de la requête,
GET
,POST
,PUT
ouDELETE
; - L'adresse du point d'accès, en excluant le nom de domaine et les paramètres de l'adresse. Par exemple
/contact
et non pashttps://api.deskeen.fr/contact
ni/contact?query=foo
; - Le corps de la requête.
Ces paramètres personnalisés peuvent êtres ajoutés à l'en-tête de la requête ou aux paramètres de l'adresse.
Exemple d'une requête avec les paramètres ajoutés à l'en-tête de la requête et en utilisant la signature numérique de la session suivante:
BDoTDSBkElWR2x0cT4HHrrbVDMOoeO9BWipFMdINxmSxqJf5SeS7uw==
Contenu de la requête:
GET /contact
dk-tenant: 1
dk-user: 808
dk-timestamp: 2020-05-01T16:40:45.374Z
dk-hash: RabkdDawnUGCSxOVyVPAlkXoFerq078BTGXnqzc+OqM=
Exemple de la même requête avec les paramètres ajoutés à l'adresse:
GET /contact?dk-tenant=1&dk-user=808&dk-timestamp=2020-05-01T16:40:45.374Z&dk-hash=RabkdDawnUGCSxOVyVPAlkXoFerq078BTGXnqzc+OqM=
Le contenu des requêtes, lorsqu'un contenu est présent, doit être au format JSON. L'entête content-type
de la requête doit donc être égal à application/json
.
Format des paramètres des requêtes
Lorsque que des paramètres booléens sont ajoutés à l'adresse, les textes acceptés sont:
true
ou1
pour représenter la valeurVRAI
.false
ou0
pourFAUX
.
Format de données spécifiques
Les numéros de téléphones sont au format international. Ils débutent par le signe plus ("+"), puis l'indicatif du pays et le numéro de téléphone sans le zéro inital et sans espace. Par exemple +33123456789
pour un numéro français.
Les pays sont représentés par leurs codes ISO-3166. Par exemple FR
pour la France.
Authentification
Avant de pouvoir effectuer des opérations, il est nécessaire de s'authentifier en envoyant ses identifiants dans une requête d'authentification.
S'authentifier
Point d'accès
Contenu de la requête
-
email
ObligatoireAdresse e-mail du compte de l'utilisateur.
-
password
ObligatoireMot de passe du compte de l'utilisateur.
-
token
OptionnelNombre TOTP à six chiffres généré par l'application d'authentification. Obligatoire si l'authentification à deux facteurs est activée sur le compte.
Réponse de l'API
-
200 OK
Les identifiants sont corrects.
Si le compte est rattaché qu'à une seule entreprise, un objet de type informations du compte est retourné. Il contient notamment la signature numérique de la session à utiliser par la suite pour envoyer des requêtes à l'API et effectuer des opérations.
Si le compte est rattaché à plusieurs entreprises, la liste des entreprises est retournée. Une seconde requête d'authentification doit être émise en rajoutant l'identifiant de l'entreprise à l'adresse.
-
401 Non-autorisé
Les identifiants sont incorrects.
Exemple - S'authentifier à partir d'un compte rattaché à une seule entreprise
POST /login
Contenu de la requête
{"email":"moncompte@deskeen.fr","password":"monmotdepasse"}
Réponse de l'API
HTTP 200 OK
{"tenant_id":1,"id":808,"token":"lLn9KLvn2kVYGtJgKxwbVp6yEzVBL+iQ+yXN16UjlUkFvnqS1Yo4FQ==","account_type":10,"description":"John","firstname":"Doe","email":"john.doe@example.com","has_2fa":false,"calendar_start_hour":null,"calendar_end_hour":null,"locale":"fr-fr","account_notif_type":null,"account_notif_file_email":false,"account_notif_msg_email":false,"account_notif_event_email":false,"company":{"siren":null,"description":"ABC Ltd","address":"1 rue du Paradis","postal_code":"67100","city":"Strasbourg","country_code":"fr","email":"abc@example.com","tel":"0123456789","tel2":null,"fax":null,"website":null,"vat":true,"quotation_valid_until":30,"acc_vat_out_nb":null,"acc_vat_in_nb":null,"deposit_rate":1000,"tax_rate":2000,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"layout_quotation_id":null,"layout_order_id":null,"layout_delivery_id":null,"layout_invoice_id":null,"layout_footer_id":15,"layout_term_id":12,"client_create_folder":true,"notif_folder_new_by_client_email":false,"client_default_manager_id":1,"task_rate":100,"task_rate_unit":24,"credit_card_iban":null,"stripe_account_id":null,"stripe_account_created_on":null,"stripe_account_validated_on":null},"parent":null,"auth":{"contact_edit":true,"employee_edit":true,"expense_show":true,"expense_edit":true,"folder_show":true,"folder_edit":true,"invoice_show":true,"invoice_edit":true,"invoice_validate":true,"invoice_payment_edit":true,"material_show":true,"material_edit":true,"note_show":true,"note_edit":true,"settings_show":true,"settings_edit":true,"order_show":true,"order_edit":true,"report":true,"quotation_edit":true,"quotation_show":true,"quotation_validate":true}}
Exemple - S'authentifier à partir d'un compte rattaché à deux entreprises, sans préciser l'entreprise souhaitée
POST /login
Contenu de la requête
{"email":"moncompte@deskeen.fr","password":"monmotdepasse"}
Réponse de l'API
HTTP 200 OK
[{"id":1,"description":"ABC Ltd"},{"id":11,"description":"101 SAS"}]
Exemple - Authentification à partir d'un compte rattaché à deux entreprises, en précisant l'entreprise souhaitée
POST /login/1
Contenu de la requête
{"email":"moncompte@deskeen.fr","password":"monmotdepasse"}
Réponse de l'API
HTTP 200 OK
{"tenant_id":1,"id":808,"token":"lLn9KLvn2kVYGtJgKxwbVp6yEzVBL+iQ+yXN16UjlUkFvnqS1Yo4FQ==","account_type":10,"description":"John","firstname":"Doe","email":"john.doe@example.com","has_2fa":false,"calendar_start_hour":null,"calendar_end_hour":null,"locale":"fr-fr","account_notif_type":null,"account_notif_file_email":false,"account_notif_msg_email":false,"account_notif_event_email":false,"company":{"siren":null,"description":"ABC Ltd","address":"1 rue du Paradis","postal_code":"67100","city":"Strasbourg","country_code":"fr","email":"abc@example.com","tel":"0123456789","tel2":null,"fax":null,"website":null,"vat":true,"quotation_valid_until":30,"acc_vat_out_nb":null,"acc_vat_in_nb":null,"deposit_rate":1000,"tax_rate":2000,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"layout_quotation_id":null,"layout_order_id":null,"layout_delivery_id":null,"layout_invoice_id":null,"layout_footer_id":15,"layout_term_id":12,"client_create_folder":true,"notif_folder_new_by_client_email":false,"client_default_manager_id":1,"task_rate":100,"task_rate_unit":24,"credit_card_iban":null,"stripe_account_id":null,"stripe_account_created_on":null,"stripe_account_validated_on":null},"parent":null,"auth":{"contact_edit":true,"employee_edit":true,"expense_show":true,"expense_edit":true,"folder_show":true,"folder_edit":true,"invoice_show":true,"invoice_edit":true,"invoice_validate":true,"invoice_payment_edit":true,"material_show":true,"material_edit":true,"note_show":true,"note_edit":true,"settings_show":true,"settings_edit":true,"order_show":true,"order_edit":true,"report":true,"quotation_edit":true,"quotation_show":true,"quotation_validate":true}}
Devis
Il est possible de créer un devis à deux endroits différents, selon que l'on souhaite rattacher le devis à la fiche du client directement, ou au dossier d'un client.
Dans les deux cas, un objet Devis est retourné. Le fonctionnement est identique ensuite.
Plus d'infos sur le fonctionnement des devis dans cet article: Fonctionnement des devis.
Créer un devis pour un client
Point d'accès
Réponse de l'API
-
201 OK - Créé
Le devis a été correctement créé. Un objet de type Devis est retourné.
Exemple - Créer un nouveau devis pour le client 1000
POST /contact/1000/quotation
Réponse de l'API
HTTP 201 OK - Créé
{"id":771,"state":"running","status":10,"number":7,"date":"2020-05-02T09:00:12.000Z","comment":null,"valid_until":"2020-06-01T09:00:12.000Z","shipping_date":null,"terms":{"id":12,"text":"Conditions du devis","created_on":"2019-04-20T12:51:07.000Z"},"client":{"id":1000,"description":"Doe","firstname":"John","address":null,"postal_code":null,"city":null,"country_code":null},"client_original":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":null,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"validated_by":null,"validated_on":null,"layout_id":null,"layout_footer_id":15,"order":null,"lines":[{"id":11055,"description":"Frais de dossier","unit_price":2000,"quantity":100,"discount":0,"tax_rate":2000,"material_id":null}],"sendings":null,"is_sent":false,"esignature":null}
Créer un devis pour le dossier d'un client
Point d'accès
Réponse de l'API
-
201 OK - Créé
Le devis a été correctement créé. Un objet de type Devis est retourné.
Exemple - Créer un nouveau devis pour le dossier 802
POST /folder/802/quotation
Réponse de l'API
HTTP 201 OK - Créé
{"id":772,"state":"running","status":10,"number":8,"date":"2020-05-02T09:09:10.000Z","comment":null,"valid_until":"2020-06-01T09:09:10.000Z","shipping_date":null,"terms":{"id":12,"text":"Conditions du devis","created_on":"2019-04-20T12:51:07.000Z"},"client":{"id":1000,"description":"Doe","firstname":"John","address":null,"postal_code":null,"city":null,"country_code":null},"client_original":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":{"id":802,"locked":false,"description":"Chantier","reference_internal":null,"reference_client":null,"location":null,"comment":null,"manager":{"id":808,"description":"Schmiedt","firstname":"Morgan","email":"morgan@example.fr","tel":null,"tel2":null,"fax":null,"role":null,"auth":null,"profile_img_url":null,"profile_img_url_small":null},"client":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"class":null,"task_rate":null,"task_rate_unit":null,"tax_rate":null},"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"validated_by":null,"validated_on":null,"layout_id":null,"layout_footer_id":15,"order":null,"lines":[{"id":11056,"description":"Frais de dossier","unit_price":2000,"quantity":100,"discount":0,"tax_rate":2000,"material_id":null}],"sendings":null,"is_sent":false,"esignature":null}
Créer un devis à partir d'un devis existant
📚 DocumentationPoint d'accès
Réponse de l'API
-
201 OK - Créé
Un devis identique a été créé. Un objet de type Devis est retourné.
-
403 Refusé
Le devis n'a pas été créé. Soit, l'entreprise cliente du devis est radiée (code
entreprise_closed
), soit le dossier dans lequel le devis se trouve est clôturé (codefolder_locked
).
Exemple - Créer un nouveau devis à l'identique du devis 772
POST /quotation/772/clone
Réponse de l'API
HTTP 201 OK - Créé
{"id":807,"state":"running","status":10,"number":9,"date":"2020-07-23T13:45:11.000Z","comment":null,"valid_until":"2020-08-22T13:43:56.000Z","shipping_date":null,"terms":{"id":23,"text":"Conditions générales - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","created_on":"2020-07-23T13:44:53.000Z"},"client":{"id":1012,"description":"Doe","firstname":"John","address":"16 Grand Rue","postal_code":"67000","city":"STRASBOURG","country_code":"fr"},"client_original":{"id":1012,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":"16 Grand Rue","postal_code":"67000","city":"STRASBOURG","country_code":"fr","birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":null,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"validated_by":null,"validated_on":null,"layout_id":null,"layout_footer_id":15,"order":null,"lines":[{"id":11533,"description":"Frais de dossier","unit_price":2000,"quantity":100,"discount":0,"tax_rate":2000,"material_id":null}],"sendings":null,"is_sent":false,"esignature":null}
Obtenir un devis
📚 DocumentationPoint d'accès
Paramètres de la requête
-
line
Indicateur pour recevoir le détails des articles du devis.
Réponse de l'API
-
200 OK
Le devis a été trouvé. Un objet de type Devis est retourné.
Exemple - Obtenir le devis 772 sans les articles
GET /quotation/772
Réponse de l'API
HTTP 200 OK
{"id":771,"state":"running","status":10,"number":7,"date":"2020-05-02T09:00:12.000Z","comment":null,"valid_until":"2020-06-01T09:00:12.000Z","shipping_date":null,"terms":{"id":12,"text":"Test conditions","created_on":"2019-04-20T12:51:07.000Z"},"client":{"id":1000,"description":"Doe","firstname":"John","address":null,"postal_code":null,"city":null,"country_code":null},"client_original":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":null,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"validated_by":null,"validated_on":null,"layout_id":null,"layout_footer_id":15,"order":null,"lines":null,"sendings":null,"is_sent":false,"esignature":null}
Exemple - Obtenir le devis 772 avec les articles
GET /quotation/772?line=true
Réponse de l'API
HTTP 200 OK
{"id":771,"state":"running","status":10,"number":7,"date":"2020-05-02T09:00:12.000Z","comment":null,"valid_until":"2020-06-01T09:00:12.000Z","shipping_date":null,"terms":{"id":12,"text":"Test conditions","created_on":"2019-04-20T12:51:07.000Z"},"client":{"id":1000,"description":"Doe","firstname":"John","address":null,"postal_code":null,"city":null,"country_code":null},"client_original":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":null,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"validated_by":null,"validated_on":null,"layout_id":null,"layout_footer_id":15,"order":null,"lines":[{"id":11055,"description":"Frais de dossier","unit_price":2000,"quantity":100,"discount":0,"tax_rate":2000,"material_id":null}],"sendings":null,"is_sent":false,"esignature":null}
Obtenir le rendu HTML d'un devis
📚 DocumentationPoint d'accès
Paramètres de la requête
-
attachment
Indicateur pour que l'en-tête
content-disposition: attachment
soit ajoutée à la réponse. La présence du paramètre vaut pourVRAI
, son absence pourFAUX
.
Réponse de l'API
-
200 OK
Le devis est retourné au format HTML.
Exemple - Obtenir le rendu HTML du devis 772
GET /quotation/772/file
Réponse de l'API
HTTP 200 OK
<!DOCTYPE html><meta charset=utf-8><style>*{box-sizing:border-box;color:inherit;font-weight:inherit;margin:0;padding:0;line-height:1.5}body{width:18cm;min-height:27cm;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:14px;margin:0 auto;padding:.5cm 0}h1{flex:auto;text-transform:uppercase;text-align:center;font-size:40px;font-weight:300}.client{margin:1em 0 1em 9cm;min-height:50px}table{border-collapse:collapse}.lines{margin:2em 0;width:100%;border:1px solid #ccc}.lines thead{background-color:#fafafa;border-bottom:1px solid #ccc;text-align:center;color:#4d4d4d;font-size:13px}.lines td,.lines th{border-right:1px solid #ccc;text-align:right;vertical-align:top;padding:.5em}.lines td:first-child,.lines th:first-child,.vat td:first-child{text-align:left}.col-desc{width:40%}.col-discount,.col-qty,.col-vat{width:10%}.col-tot,.col-unit{width:15%}.bottom{display:flex}.terms{flex:auto}.vat td{padding:.2em}.vat td:last-child{text-align:right;min-width:150px;padding-right:8px}.vat tbody td:first-child::before{content:'TVA '}.tot-w-tax{font-weight:600}.comment{margin-top:1em}.legal{color:#4d4d4d;margin-top:1em}footer{color:#4d4d4d;text-align:center}@media screen{main{min-height:25cm}}@page{size:A4 portrait;margin:2cm 1cm 1cm}@media print{.lines{page-break-inside:auto}.lines thead{page-break-inside:avoid;display:table-header-group}.lines tr{page-break-inside:avoid;page-break-after:auto}.text{page-break-inside:avoid}footer{width:18cm;position:fixed;margin:0 auto}}</style><main><div class=company><div>ABC Ltd</div><div>1 rue du Paradis</div><div>67100 Strasbourg</div><div></div></div><h1>Devis</h1><div class=client><div>Doe John</div><div></div><div> </div><div></div></div><table class=lines><thead><tr><th class=col-desc>Description<th class=col-unit>Prix Unit. HT<th class=col-qty>Quantité<th class=col-discount>%Remise<th class=col-vat>%TVA<th class=col-tot>Prix Total HT<tbody><tr><td>Frais de dossier</td><td>20,00 €</td><td>1</td><td></td><td>20 %</td><td>20,00 €</td></tr></table><div class=bottom><span class=terms><div>N°8</div><div>02/05/2020</div><div>Valable jusqu'au 01/06/2020</div><div>Paiement 15 jours fin de mois</div><div>Escompte de 5,5 % dans le cas d'un paiement anticipé</div></span><table class=vat><thead><tr><td>Total HT<td>20,00 €<tbody><tr><td>20 %</td><td>4,00 €</td></tr><tfoot><tr><td>Total TVA<td>4,00 €<tr><td>Total TTC<td class=tot-w-tax>24,00 €</table></div><div class=comment></div><div class=legal>Test conditions</div></main><footer><p>Bla</p><p>Test metadata</p></footer>
Supprimer un devis
📚 DocumentationPoint d'accès
Réponse de l'API
-
204 OK
Le devis a été supprimé.
-
403 Refusé
Le devis n'a pas été supprimé. Le devis est, soit déjà signé (code
quotation_validated
), soit clôturé (codequotation_closed
).
Exemple - Supprimer le devis 772
POST /quotation/772
Réponse de l'API
HTTP 204 OK
Modifier un devis
📚 DocumentationPoint d'accès
Contenu de la requête
-
valid_until
OptionnelDate de validité du devis. La date doit être postérieure à la date du devis.
-
shipping_date
OptionnelDate de livraison des articles du devis. La date doit être postérieure à la date du devis.
-
payment_terms
OptionnelConditions de paiement du devis.
-
comment
OptionnelCommentaire du devis.
-
client
OptionnelClient du devis.
-
folder_id
OptionnelIdentifiant du dossier auquel le devis sera rattaché.
Réponse de l'API
-
204 OK
Le devis a été modifié.
-
403 Refusé
Le devis n'a pas été modifié. Le devis est, soit déjà signé (code
quotation_validated
), soit clôturé (codequotation_closed
), soit envoyé au client (codequotation_sent
).
Exemple - Modifier la date de validité du devis 772
PUT /quotation/772
Contenu de la requête
{"valid_until":"2020-06-01T09:00:12.000Z"}
Réponse de l'API
HTTP 204 OK
Clôturer un devis
📚 DocumentationPoint d'accès
Réponse de l'API
-
204 OK
Le devis a été clôturé.
-
403 Refusé
Le devis n'a pas été clôturé. Le devis est, soit signé (code
quotation_validated
), soit déjà clôturé (codequotation_closed
), soit dans un dossier clôturé (codefolder_locked
).
Exemple - Clôturer le devis 772
POST /quotation/772/lock
Réponse de l'API
HTTP 204 OK
Ré-ouvrir un devis clôturé
📚 DocumentationPoint d'accès
Réponse de l'API
-
204 OK
Le devis a été ré-ouvert.
-
403 Refusé
Le devis n'a pas été ré-ouvert. Le devis est, soit déjà modifiable (code
quotation_running
), soit signé (codequotation_validated
).
Exemple - Ré-ouvrir le devis 772
DELETE /quotation/772/lock
Réponse de l'API
HTTP 204 OK
Obtenir un article d'un devis
Point d'accès
Réponse de l'API
-
200 OK
L'article du devis a été trouvé. Un objet de type Article de devis est retourné.
Exemple - Obtenir l'article 11055 du devis 772
GET /quotation/772/line/11055
Réponse de l'API
HTTP 200 OK
{"id":11055,"description":"Frais de dossier","unit_price":2000,"quantity":100,"discount":0,"tax_rate":2000,"material_id":null}
Ajouter un article à un devis
📚 DocumentationPoint d'accès
Contenu de la requête
-
description
ObligatoireLibellé de l'article.
-
unit_price
OptionnelPrix unitaire hors-taxes de l'article.
-
quantity
OptionnelQuantité de l'article.
-
discount
OptionnelPourcentage de remise ou de majoration de l'article.
-
tax_rate
OptionnelPourcentage de TVA de l'article.
-
material_id
OptionnelIdentifiant de l'article du catalogue.
Réponse de l'API
-
201 OK - Créé
L'article a été ajouté au devis. Un objet de type Article de devis est retourné.
-
403 Refusé
L'article n'a pas été ajouté au devis. Le devis est, soit signé (code
quotation_validated
), soit clôturé (codequotation_closed
), soit déjà envoyé au client (codequotation_sent
).
Exemple - Ajouter un article au devis 772
POST /quotation/772/line
Contenu de la requête
{"description":"Frais de dossier","unit_price":2000,"quantity":100,"tax_rate":2000}
Réponse de l'API
HTTP 201 OK - Créé
{"id":11055,"description":"Frais de dossier","unit_price":2000,"quantity":100,"discount":0,"tax_rate":2000,"material_id":null}
Modifier un article d'un devis
Point d'accès
Contenu de la requête
-
description
OptionnelLibellé de l'article.
-
unit_price
OptionnelPrix unitaire hors-taxe de l'article.
-
quantity
OptionnelQuantité de l'article.
-
discount
OptionnelPourcentage de remise ou de majoration de l'article.
-
tax_rate
OptionnelPourcentage de TVA de l'article.
Réponse de l'API
-
204 OK
L'article du devis a été modifié.
-
403 Refusé
L'article n'a pas été modifié. Le devis est, soit signé (code
quotation_validated
), soit clôturé (codequotation_closed
), soit déjà envoyé au client (codequotation_sent
).
Exemple - Modifier la quantité de l'article 11055
PUT /quotation/772/line/11055
Contenu de la requête
{"quantity":200}
Réponse de l'API
HTTP 204 OK
Retirer un article d'un devis
Point d'accès
Réponse de l'API
-
204 OK
L'article a été retiré du devis.
-
403 Refusé
L'article n'a pas été retiré du devis. Le devis est, soit signé (code
quotation_validated
), soit clôturé (codequotation_closed
), soit déjà envoyé au client (codequotation_sent
).
Exemple - Retirer l'article 11055 du devis 772
DELETE /quotation/772/line/11055
Réponse de l'API
HTTP 204 OK
Envoyer un devis par e-mail
📚 DocumentationPoint d'accès
Contenu de la requête
-
contact_id
ObligatoireIdentifiant du contact qui recevra l'email.
-
title
ObligatoireTitre de l'e-mail.
-
body
ObligatoireContenu de l'e-mail.
Réponse de l'API
-
201 OK - Créé
La devis va être envoyé au destinataire par e-mail. Un objet contenant l'identifiant de l'envoi est retourné.
-
403 Refusé
Le devis n'a pas été envoyé au client car le devis est clôturé (code
quotation_closed
).
Exemple - Envoyer le devis 772 au client
POST /quotation/772/email
Contenu de la requête
{"contact_id":1000,"title":"Devis N°8","body":"Bonjour,\nVous trouverez ci-joint votre devis de 324,00 €."}
Réponse de l'API
HTTP 201 OK - Créé
{"id":1647}
Valider un devis
📚 DocumentationPoint d'accès
Réponse de l'API
-
204 OK
Le devis a été confirmé. Un objet de type Commande est créé et retourné.
-
403 Refusé
Le devis n'a pas été confirmé. Le devis est, soit déjà signé (code
quotation_validated
), soit clôturé (codequotation_closed
), soit vide (codequotation_empty
), soit avec un total négatif (codequotation_negativ
), soit avec une signature électronique en cours de traitement (codequotation_esignature_running
).
Exemple - Confirmer le devis 807
POST /quotation/807/order
Réponse de l'API
HTTP 201 OK - Créé
{"id":913,"state":"running","status":10,"number":8,"date":"2020-08-05T13:18:20.000Z","comment":null,"shipping_date":null,"client":{"id":1012,"description":"Doe","firstname":"John","address":"16 Grand Rue","postal_code":"67000","city":"STRASBOURG","country_code":"fr"},"client_original":{"id":1012,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":"16 Grand Rue","postal_code":"67000","city":"STRASBOURG","country_code":"fr","birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":null,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"quotation":{"id":807,"state":"validated","status":20,"number":9,"date":"2020-07-23T13:45:11.000Z"},"lines":[{"id":9405,"description":"Frais de dossier","unit_price":2000,"quantity":100,"discount":0,"tax_rate":2000,"material_id":null,"task_id":null,"expense_id":null,"invoice_id":null},{"id":9406,"description":"Intervention","unit_price":10000,"quantity":100,"discount":0,"tax_rate":2000,"material_id":null,"task_id":null,"expense_id":null,"invoice_id":null}],"terms":{"id":23,"text":"Conditions générales - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","created_on":"2020-07-23T13:44:53.000Z"},"layout_id":null,"layout_footer_id":15}
Rechercher des devis
Point d'accès
Paramètres de la requête
-
state
État du devis:
closed
pour les devis clôturés,running
pour les devis non-signés,expired
pour les devis dont la date de validité est expirée, etvalidated
pour les devis signés. -
from
Date et heure minimum ou égale du devis.
-
to
Date et heure maximale ou égale du devis.
-
client_id
Identifiant du client.
-
folder_id
Identifiant du dossier.
-
number
Numéro du devis.
-
total
Indicateur pour recevoir le nombre total et le montant total des devis trouvés. Ajoute les propriétés
count
,total
ettotal_tax
à la réponse. -
page_size
Nombre d'éléments maximal contenu dans la réponse. Nombre compris entre 1 et 200 inclus.
-
max_id
Identifiant maximal du devis .
Réponse de l'API
-
200 OK
Les devis répondant aux critères sont retournés dans un object de type Recherche de devis.
Exemple - Rechercher les devis non-signés le 02/07/2020
GET /quotation?state=running&from=2020-07-01T22:00:00.000Z&to=2020-07-03T21:59:59.999Z&page_size=5&total=true
Réponse de l'API
HTTP 200 OK
{"has_more":false,"count":1,"sum":2000,"sum_tax":400,"result":[{"total_excl_tax":2000,"total_tax":400,"id":802,"state":"running","status":10,"number":7,"date":"2020-07-03T14:10:52.000Z","shipping_date":null,"valid_until":"2020-02-21T18:05:12.000Z","client":{"id":903,"company":false,"ape":null,"description":"Albert","firstname":"MARIE MADELINE","address":null,"postal_code":null,"city":null,"country_code":null,"profile_img_url":null,"profile_img_url_small":null},"folder":null}]}
Articles initiaux des Devis
Les articles initiaux des devis correspondent aux articles qui seront ajoutés automatiquement aux nouveaux devis.
Ajouter un article initial aux devis
📚 DocumentationPoint d'accès
Contenu de la requête
-
description
ObligatoireLibellé de l'article.
-
unit_price
OptionnelPrix unitaire hors-taxes de l'article.
-
quantity
OptionnelQuantité de l'article.
-
discount
OptionnelPourcentage de remise ou de majoration de l'article.
-
tax_rate
OptionnelPourcentage de TVA de l'article.
Réponse de l'API
-
201 OK - Créé
L'article a été ajouté au devis. Un objet de type Article de devis est retourné.
Exemple - Ajouter des frais de dossier de 20,00 EUR à tous les devis
POST /quotation/line
Contenu de la requête
{"description":"Frais de dossier","unit_price":2000,"quantity":100,"discount":0,"tax_rate":2000}
Réponse de l'API
HTTP 201 OK - Créé
{"id":6,"description":"Frais de dossier","unit_price":2000,"quantity":100,"discount":0,"tax_rate":2000}
Modifier un article initial de devis
Point d'accès
Contenu de la requête
-
description
OptionnelLibellé de l'article.
-
unit_price
OptionnelPrix unitaire hors-taxe de l'article.
-
quantity
OptionnelQuantité de l'article.
-
discount
OptionnelPourcentage de remise ou de majoration de l'article.
-
tax_rate
OptionnelPourcentage de TVA de l'article.
Réponse de l'API
-
204 OK
L'article a été modifié.
Exemple - Modifier la quantité de l'article initial 6
PUT /quotation/line/6
Contenu de la requête
{"quantity":200}
Réponse de l'API
HTTP 204 OK
Supprimer un article initial de devis
Point d'accès
Réponse de l'API
-
204 OK
L'article a été supprimé et ne sera plus ajouté aux nouveaux devis.
Exemple - Retirer l'article initial 6
DELETE /quotation/line/6
Réponse de l'API
HTTP 204 OK
Obtenir un article initial de devis
Point d'accès
Réponse de l'API
-
200 OK
L'article initial du devis a été trouvé. Un objet de type Article de devis est retourné.
Exemple - Obtenir l'article initial 6
GET /quotation/line/6
Réponse de l'API
HTTP 200 OK
{"id":6,"description":"Frais de dossier","unit_price":2000,"quantity":100,"discount":0,"tax_rate":2000}
Obtenir tous les articles initiaux des devis
Point d'accès
Réponse de l'API
-
200 OK
Si des articles initiaux ont été préalablement créés, une liste d'objets de type Article de devis est retournée. Sinon, rien n'est retourné.
Exemple - Obtenir les articles initiaux avec 2 résultats
GET /quotation/line
Réponse de l'API
HTTP 200 OK
[{"id":7,"description":"Frais de dossier","position":null,"unit_price":2000,"quantity":100,"discount":0,"tax_rate":2000},{"id":8,"description":"Déplacement","position":null,"unit_price":990,"quantity":100,"discount":0,"tax_rate":2000}]
Commandes
Une commande est créée automatiquement lorsqu'un devis est signé. Cette commande contient les mêmes conditions et les mêmes articles que le devis.
Une commande vierge peut aussi être créée, et comme les devis, la commande peut être créée à deux endroits différents, selon que l'on souhaite rattacher la commande à la fiche du client directement, ou au dossier d'un client.
Dans tous les cas, un objet Commande est retourné. Le fonctionnement est identique ensuite.
Créée une commande
Point d'accès
Réponse de l'API
-
201 OK - Créé
La commande a été correctement créée. Un objet de type Commande est retournée.
Exemple - Créer une nouvelle commande pour le client 1000
POST /contact/1000/order
Réponse de l'API
HTTP 201 OK - Créé
{"id":889,"state":"running","status":10,"number":9,"date":"2020-05-04T16:54:06.000Z","comment":null,"shipping_date":null,"client":{"id":1000,"description":"Doe","firstname":"John","address":null,"postal_code":null,"city":null,"country_code":null},"client_original":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":null,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"quotation":null,"lines":null,"terms":{"id":12,"text":"Test conditions","created_on":"2019-04-20T12:51:07.000Z"},"layout_id":null,"layout_footer_id":15}
Créer une commande dans un dossier
Point d'accès
Réponse de l'API
-
201 OK - Créé
La commande a été correctement créée. Un objet de type Commande est retourné.
Exemple - Créer une nouvelle commande dans le dossier 802
POST /folder/802/order
Réponse de l'API
HTTP 201 OK - Créé
{"id":890,"state":"running","status":10,"number":10,"date":"2020-05-04T16:58:02.000Z","comment":null,"shipping_date":null,"client":{"id":1000,"description":"Doe","firstname":"John","address":null,"postal_code":null,"city":null,"country_code":null},"client_original":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":{"id":802,"locked":false,"description":"Chantier","reference_internal":null,"reference_client":null,"location":null,"comment":null,"manager":{"id":808,"description":"Schmiedt","firstname":"Morgan","email":"morgan@example.fr","tel":null,"tel2":null,"fax":null,"role":null,"auth":null,"profile_img_url":null,"profile_img_url_small":null},"client":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"class":null,"task_rate":null,"task_rate_unit":null,"tax_rate":null},"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"quotation":null,"lines":null,"terms":{"id":12,"text":"Test conditions","created_on":"2019-04-20T12:51:07.000Z"},"layout_id":null,"layout_footer_id":15}
Obtenir une commande
Point d'accès
Paramètres de la requête
-
line
Indicateur pour recevoir les articles de la commande dans la réponse.
Réponse de l'API
-
200 OK
La commande a été trouvée. Un objet de type Commande est retourné.
Exemple - Obtenir la commande 889 sans les articles
GET /order/889
Réponse de l'API
HTTP 200 OK
{"id":889,"state":"running","status":10,"number":9,"date":"2020-05-04T16:54:06.000Z","comment":null,"shipping_date":null,"client":{"id":1000,"description":"Doe","firstname":"John","address":null,"postal_code":null,"city":null,"country_code":null},"client_original":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":null,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"quotation":null,"lines":null,"terms":{"id":12,"text":"Test conditions","created_on":"2019-04-20T12:51:07.000Z"},"layout_id":null,"layout_footer_id":15}
Exemple - Obtenir la commande 889 avec les articles
GET /order/889?line=true
Réponse de l'API
HTTP 200 OK
{"id":889,"state":"running","status":10,"number":9,"date":"2020-05-04T16:54:06.000Z","comment":null,"shipping_date":null,"client":{"id":1000,"description":"Doe","firstname":"John","address":null,"postal_code":null,"city":null,"country_code":null},"client_original":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":null,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"quotation":null,"lines":[{"id":9217,"description":"Recherche de panne","unit_price":10000,"quantity":100,"discount":0,"tax_rate":2000,"material_id":null,"task_id":null,"expense_id":null,"invoice_id":null}],"terms":{"id":12,"text":"Test conditions","created_on":"2019-04-20T12:51:07.000Z"},"layout_id":null,"layout_footer_id":15}
Obtenir le rendu HTML d'une commande
Point d'accès
Paramètres de la requête
-
attachment
Indicateur pour que l'en-tête
content-disposition: attachment
soit ajoutée à la réponse. La présence du paramètre vaut pourVRAI
, son absence pourFAUX
.
Réponse de l'API
-
200 OK
La commande est retourné au format HTML.
Exemple - Obtenir le rendu HTML de la commande 889
GET /order/889/file
Réponse de l'API
HTTP 200 OK
<!DOCTYPE html><meta charset=utf-8><style>*{box-sizing:border-box;color:inherit;font-weight:inherit;margin:0;padding:0;line-height:1.5}body{width:18cm;min-height:27cm;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:14px;margin:0 auto;padding:.5cm 0}h1{flex:auto;text-transform:uppercase;text-align:center;font-size:40px;font-weight:300}.client{margin:1em 0 1em 9cm;min-height:50px}table{border-collapse:collapse}.lines{margin:2em 0;width:100%;border:1px solid #ccc}.lines thead{background-color:#fafafa;border-bottom:1px solid #ccc;text-align:center;color:#4d4d4d;font-size:13px}.lines td,.lines th{border-right:1px solid #ccc;text-align:right;vertical-align:top;padding:.5em}.lines td:first-child,.lines th:first-child,.vat td:first-child{text-align:left}.col-desc{width:40%}.col-discount,.col-qty,.col-vat{width:10%}.col-tot,.col-unit{width:15%}.bottom{display:flex}.terms{flex:auto}.vat td{padding:.2em}.vat td:last-child{text-align:right;min-width:150px;padding-right:8px}.vat tbody td:first-child::before{content:'TVA '}.tot-w-tax{font-weight:600}.comment{margin-top:1em}.legal{color:#4d4d4d;margin-top:1em}footer{color:#4d4d4d;text-align:center}@media screen{main{min-height:25cm}}@page{size:A4 portrait;margin:2cm 1cm 1cm}@media print{.lines{page-break-inside:auto}.lines thead{page-break-inside:avoid;display:table-header-group}.lines tr{page-break-inside:avoid;page-break-after:auto}.text{page-break-inside:avoid}footer{width:18cm;position:fixed;margin:0 auto}}</style><main><div class=company><div>ABC Ltd</div><div>1 rue du Paradis</div><div>67100 Strasbourg</div><div></div></div><h1>Commande</h1><div class=client><div>Doe John</div><div></div><div> </div><div></div></div><table class=lines><thead><tr><th class=col-desc>Description<th class=col-unit>Prix Unit. HT<th class=col-qty>Quantité<th class=col-discount>%Remise<th class=col-vat>%TVA<th class=col-tot>Prix Total HT<tbody><tr><td>Recherche de panne</td><td>100,00 €</td><td>1</td><td></td><td>20 %</td><td>100,00 €</td></tr></table><div class=bottom><span class=terms><div>N°9</div><div>04/05/2020</div><div>Paiement 15 jours fin de mois</div><div>Escompte de 2 % dans le cas d'un paiement anticipé</div></span><table class=vat><thead><tr><td>Total HT<td>100,00 €<tbody><tr><td>20 %</td><td>20,00 €</td></tr><tfoot><tr><td>Total TVA<td>20,00 €<tr><td>Total TTC<td class=tot-w-tax>120,00 €</table></div><div class=comment></div><div class=legal>Test conditions</div></main><footer><p>Bla</p><p>Test metadata</p></footer>
Modifier une commande
📚 DocumentationPoint d'accès
Contenu de la requête
-
shipping_date
OptionnelDate de livraison des articles. La date doit être postérieure à la date de la commande.
-
payment_terms
OptionnelConditions de paiement de la commande.
-
comment
OptionnelCommentaire de la commande.
-
client
OptionnelNom et adresse du Client de la commande.
-
folder_id
OptionnelIdentifiant du dossier dans lequel la commande sera mise.
Réponse de l'API
-
204 OK
La commande a été modifiée.
-
403 Refusé
La commande n'a pas été modifiée car la commande est clôturée (code
order_closed
).
Exemple - Modifier l'adresse du client de la commande 889
PUT /order/772
Contenu de la requête
{"client":{"address":"5, rue des roses","postal_code":"68000","city":"COLMAR","country_code":"fr"}}
Réponse de l'API
HTTP 204 OK
Clôturer une commande
📚 DocumentationPoint d'accès
Réponse de l'API
-
204 OK
La commande a été clôturée.
-
403 Refusé
La commande n'a pas été clôturée. La commande est déjà clôturée (code
order_closed
) ou une facture a été créée pour cette commande et n'a pas été complétée (codeinvoice_running
avec l'identifiant de la facture en question).
Exemple - Clôturer la commande 889
POST /order/889/lock
Réponse de l'API
HTTP 204 OK
Ré-ouvrir une commande clôturée
📚 DocumentationPoint d'accès
Réponse de l'API
-
204 OK
La commande a été ré-ouverte.
-
403 Refusé
La commande n'a pas été ré-ouverte. La commande est déjà ouverte (code
order_running
) ou le dossier dans lequel elle appartient a été clôturé (codefolder_locked
).
Exemple - Ré-ouvrir la commande 889
DELETE /order/889/lock
Réponse de l'API
HTTP 204 OK
Générer un bon de livraison à partir d'une commande
📚 DocumentationPoint d'accès
Paramètres de la requête
-
attachment
Indicateur pour que l'en-tête
content-disposition: attachment
soit ajoutée à la réponse. La présence du paramètre vaut pourVRAI
, son absence pourFAUX
.
Réponse de l'API
-
200 OK
Le bon de livraison est retourné au format HTML.
Exemple - Générer un bon de livraison pour la commande 889
GET /order/889/delivery/file
Réponse de l'API
HTTP 200 OK
<!doctypehtml><meta charset=utf-8><style>*{box-sizing:border-box;color:inherit;font-weight:inherit;margin:0;padding:0;line-height:1.5}body{width:18cm;min-height:27cm;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:14px;margin:0 auto;padding:.5cm 0}h1{flex:auto;text-transform:uppercase;text-align:center;font-size:40px;font-weight:300}.client{margin:1em 0 1em 9cm;min-height:50px}table{border-collapse:collapse}.lines{margin:2em 0;width:100%;border:1px solid #ccc}.lines thead{background-color:#fafafa;border-bottom:1px solid #ccc;text-align:center;color:#4d4d4d;font-size:13px}.lines td,.lines th{border-right:1px solid #ccc;text-align:right;vertical-align:top;padding:.5em}.lines td:first-child,.lines th:first-child{text-align:left}.col-desc{width:90%}.col-qty{width:10%}.bottom{display:flex}.terms{flex:auto}.comment{margin-top:1em;min-height:2cm}.legal{color:#4d4d4d;margin-top:1em}footer{color:#4d4d4d;text-align:center}@media screen{main{min-height:25cm}}@page{size:A4 portrait;margin:2cm 1cm 1cm}@media print{.lines{page-break-inside:auto}.lines thead{page-break-inside:avoid;display:table-header-group}.lines tr{page-break-inside:avoid;page-break-after:auto}.text{page-break-inside:avoid}footer{width:18cm;position:fixed;margin:0 auto}}</style><main><div class=company><div>ABC Ltd</div><div>1 rue du Paradis</div><div>67100 Strasbourg</div><div></div></div><h1>Bon de livraison</h1><div class=client><div>Doe John</div><div>5, rue des roses</div><div>68000 COLMAR</div><div>France</div></div><table class=lines><thead><tr><th class=col-desc>Description<th class=col-qty>Quantité<tbody><tr><td>Recherche de panne</td><td>1</td></tr></table><div class=bottom><span class=terms><div>N°1588693689484</div><div>05/05/2020</div><div>Commande N°9</div></span></div><div class=comment></div><div class=legal>Test conditions</div></main><footer><p>Bla</p><p>Test metadata</p></footer>
Obtenir un article d'une commande
Point d'accès
Réponse de l'API
-
200 OK
L'article de la commande a été trouvé. Un objet de type Article de commande est retourné.
Exemple - Obtenir l'article 9217 du devis 889
GET /order/889/line/9217
Réponse de l'API
HTTP 200 OK
{"id":9217,"description":"Recherche de panne","unit_price":10000,"quantity":100,"discount":0,"tax_rate":2000,"material_id":null,"task_id":null,"expense_id":null,"invoice_id":null}
Ajouter un article à une commande
Point d'accès
Contenu de la requête
-
description
ObligatoireLibellé de l'article.
-
unit_price
OptionnelPrix unitaire hors-taxes de l'article.
-
quantity
OptionnelQuantité de l'article.
-
discount
OptionnelPourcentage de remise ou de majoration de l'article.
-
tax_rate
OptionnelPourcentage de TVA de l'article.
-
material_id
OptionnelIdentifiant de l'article du catalogue.
-
expense_id
Optionnel -
task_id
Optionnel
Réponse de l'API
-
201 OK - Créé
L'article a été ajouté à la commande. Un objet de type Article de commande contenant l'article fraichement créé est retourné.
-
403 Refusé
L'article n'a pas été ajouté à la commande car la commande est clôturée (code
order_closed
).
Exemple - Ajouter un article à la commande 889
POST /order/889/line
Contenu de la requête
{"description":"Recherche de panne","unit_price":10000,"quantity":100,"tax_rate":2000}
Réponse de l'API
HTTP 201 OK - Créé
{"id":9217,"description":"Recherche de panne","unit_price":10000,"quantity":100,"discount":0,"tax_rate":2000,"material_id":null,"task_id":null,"expense_id":null,"invoice_id":null}
Modifier un article d'une commande
Point d'accès
Contenu de la requête
-
description
OptionnelLibellé de l'article.
-
unit_price
OptionnelPrix unitaire hors-taxes de l'article.
-
quantity
OptionnelQuantité de l'article.
-
discount
OptionnelPourcentage de remise ou de majoration de l'article.
-
tax_rate
OptionnelPourcentage de TVA de l'article.
Réponse de l'API
-
204 OK
L'article de la commande a été modifié.
-
403 Refusé
L'article n'a pas été modifié car la commande est clôturée (code
order_closed
).
Exemple - Appliquer une remise de 20% à l'article 9217
PUT /order/889/line/9217
Contenu de la requête
{"discount":-2000}
Réponse de l'API
HTTP 204 OK
Retirer un article d'une commande
Point d'accès
Réponse de l'API
-
204 OK
L'article a été retiré de la commande.
-
403 Refusé
L'article n'a pas été retiré de la commande. La commande est clôturée (code
quotation_closed
) ou l'article a déjà été facturé (codeline_invoiced
).
Exemple - Retirer l'article 9217 de la commande 889
DELETE /order/889/line/9217
Réponse de l'API
HTTP 204 OK
Factures
Les factures sont créées obligatoirement à partir d'une commande (cf. Fonctionnement des factures.
Lorsque la facture est créée, les articles de la commande qui n'ont pas encore été facturés sont ajoutés à la facture. Il est alors possible de retirer certains articles de la facture. Il n'est pas contre pas possible de modifier les articles de la facture car les articles de la facture doivent correspondre avec ceux de la commande.
Lorsque la facture est prête, elle peut être validée. La facture ne peut alors plus être modifiée, ni supprimée. Elle peut cependant être annulée si elle comporte une erreur.
Toutes les opérations, à l'exception de la suppression de la facture et du retrait d'un article, sont possibles uniquement si la facture a été validée.
Créer une facture à partir d'une commande
📚 DocumentationPoint d'accès
Réponse de l'API
-
201 OK - Créé
Une facture est créée à partir de la commande. Les articles de la commande qui n'ont pas encore été facturés et les éventuels acomptes sont ajoutés à la facture. Un object de type Facture est retourné.
-
403 Refusé
Une facture ne peut pas être créée pour cette commande car la commande est cloturée (code
order_closed
) ou que tous les articles de la commande ont déjà été facturés (codeno_line_to_invoice
).
Exemple - Créer une facture pour la commande 889
POST /order/889/invoice
Réponse de l'API
HTTP 201 OK - Créé
{"id":938,"state":"draft","status":10,"number":null,"date":"2020-05-05T15:56:00.000Z","vat":true,"due_date":null,"due":null,"deposit":false,"deposit_invoice_id":null,"client":{"id":1000,"description":"Doe","firstname":"John","address":"5, rue des roses","postal_code":"68000","city":"COLMAR","country_code":"fr"},"client_original":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":null,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"order":{"id":889,"status":10,"number":9,"date":"2020-05-04T16:54:06.000Z"},"lines":[{"id":8911,"description":"Recherche de panne","unit_price":10000,"quantity":100,"discount":0,"tax_rate":2000,"order_line_id":9217,"deposit_id":null,"note_id":null,"early_payment_discount":false}],"terms":{"id":12,"text":"Test conditions","created_on":"2019-04-20T12:51:07.000Z"},"layout_id":null,"layout_footer_id":15,"payment_lines":null,"discount_on":null,"discount_by_id":null,"sendings":null}
Obtenir une facture
Point d'accès
Paramètres de la requête
-
line
Indicateur pour recevoir les articles de la facture dans la réponse.
Réponse de l'API
-
200 OK
La facture a été trouvée. Un objet de type Facture est retourné.
Exemple - Obtenir la facture 940 avec les articles
GET /order/889
Réponse de l'API
HTTP 200 OK
{"id":940,"state":"draft","status":10,"number":null,"date":"2020-05-06T09:42:39.000Z","vat":true,"due_date":null,"due":null,"deposit":false,"deposit_invoice_id":null,"client":{"id":1000,"description":"Doe","firstname":"John","address":"5, rue des roses","postal_code":"68000","city":"COLMAR","country_code":"fr"},"client_original":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":null,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"order":{"id":889,"status":10,"number":9,"date":"2020-05-04T16:54:06.000Z"},"lines":[{"id":8913,"description":"Recherche de panne","unit_price":10000,"quantity":100,"discount":0,"tax_rate":2000,"order_line_id":9217,"deposit_id":null,"note_id":null,"early_payment_discount":false}],"terms":{"id":12,"text":"Test conditions","created_on":"2019-04-20T12:51:07.000Z"},"layout_id":null,"layout_footer_id":15,"payment_lines":null,"discount_on":null,"discount_by_id":null,"sendings":null}
Obtenir le rendu HTML d'une facture
Point d'accès
Paramètres de la requête
-
attachment
Indicateur pour que l'en-tête
content-disposition: attachment
soit ajoutée à la réponse. La présence du paramètre vaut pourVRAI
, son absence pourFAUX
.
Réponse de l'API
-
200 OK
La facture est retourné au format HTML.
-
403 Refusé
Le rendu de la facture ne peut pas être généné car la facture est en préparation (code
invoice_draft
).
Exemple - Obtenir le rendu HTML de la facture 942
GET /invoice/942/file
Réponse de l'API
HTTP 200 OK
<!DOCTYPE html><meta charset=utf-8><style>*{box-sizing:border-box;color:inherit;font-weight:inherit;margin:0;padding:0;line-height:1.5}body{width:18cm;min-height:27cm;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:14px;margin:0 auto;padding:.5cm 0}h1{flex:auto;text-transform:uppercase;text-align:center;font-size:40px;font-weight:300}.client{margin:1em 0 1em 9cm;min-height:50px}table{border-collapse:collapse}.lines{margin:2em 0;width:100%;border:1px solid #ccc}.lines thead{background-color:#fafafa;border-bottom:1px solid #ccc;text-align:center;color:#4d4d4d;font-size:13px}.lines td,.lines th{border-right:1px solid #ccc;text-align:right;vertical-align:top;padding:.5em}.lines td:first-child,.lines th:first-child,.vat td:first-child{text-align:left}.col-desc{width:40%}.col-discount,.col-qty,.col-vat{width:10%}.col-tot,.col-unit{width:15%}.bottom{display:flex}.terms{flex:auto}.vat td{padding:.2em}.vat td:last-child{text-align:right;min-width:150px;padding-right:8px}.vat tbody td:first-child::before{content:'TVA '}.tot-w-tax{font-weight:600}.comment{margin-top:1em}.legal{color:#4d4d4d;margin-top:1em}footer{color:#4d4d4d;text-align:center}@media screen{main{min-height:25cm}}@page{size:A4 portrait;margin:2cm 1cm 1cm}@media print{.lines{page-break-inside:auto}.lines thead{page-break-inside:avoid;display:table-header-group}.lines tr{page-break-inside:avoid;page-break-after:auto}.text{page-break-inside:avoid}footer{width:18cm;position:fixed;margin:0 auto}}</style><main><div class=company><div>ABC Ltd</div><div>1 rue du Paradis</div><div>67100 Strasbourg</div><div>France</div></div><h1>Facture</h1><div class=client><div>Doe John</div><div>5, rue des roses</div><div>68000 COLMAR</div><div>France</div></div><table class=lines><thead><tr><th class=col-desc>Description<th class=col-unit>Prix Unit. HT<th class=col-qty>Quantité<th class=col-discount>%Remise<th class=col-vat>%TVA<th class=col-tot>Prix Total HT<tbody><tr><td>Recherche de panne</td><td>100,00 €</td><td>1</td><td></td><td>20 %</td><td>100,00 €</td></tr></table><div class=bottom><span class=terms><div>N°9</div><div>06/05/2020</div><div>Paiement 15 jours fin de mois</div><div>Escompte de 2 % dans le cas d'un paiement anticipé</div></span><table class=vat><thead><tr><td>Total HT<td>100,00 €<tbody><tr><td>20 %</td><td>20,00 €</td></tr><tfoot><tr><td>Total TVA<td>20,00 €<tr><td>Total TTC<td class=tot-w-tax>120,00 €</table></div><div class=comment></div><div class=legal>Test conditions</div></main><footer><p>Bla</p><p>Test metadata</p></footer>
Supprimer une facture
📚 DocumentationPoint d'accès
Réponse de l'API
-
204 OK
La facture a été supprimée.
-
403 Refusé
La facture n'a pas été supprimée car la facture a été validée (code
invoice_validated
).
Exemple - Supprimer la facture 940
POST /invoice/940
Réponse de l'API
HTTP 204 OK
Annuler une facture
📚 DocumentationPoint d'accès
Réponse de l'API
-
204 OK
La facture a été annulée. La commande associée à la facture est ré-ouverte et les articles peuvent à nouveau être facturés.
-
403 Refusé
La facture n'a pas été annulée. La facture est, soit en préparation (code
invoice_draft
), soit déjà annulée (codeinvoice_cancelled
) ou possède des paiements (codeinvoice_has_payment
).
Exemple - Annuler la facture 940
POST /order/940/lock
Réponse de l'API
HTTP 204 OK
Valider une facture
📚 DocumentationPoint d'accès
Réponse de l'API
-
204 OK
La facture a été validée. Si tous les articles de la commande sont facturés, la commande est aussi clôturée.
-
403 Refusé
La facture n'a pas été validée car elle est soit, annulée (code
invoice_cancelled
), soit validée (codeinvoice_validated
), soit d'un montant total négatif (codeinvoice_negativ
).
Exemple - Valider la facture 940
POST /invoice/940/stamp
Réponse de l'API
HTTP 204 OK
Retirer un article d'une facture
Point d'accès
Réponse de l'API
-
204 OK
L'article a été retiré de la facture.
-
403 Refusé
L'article n'a pas été retiré de la facture. La facture est validée (code
invoice_validated
) ou annulée (codeinvoice_cancelled
).
Exemple - Retirer l'article 1145 de la facture 940
DELETE /invoice/940/line/1145
Réponse de l'API
HTTP 204 OK
Ajouter un escompte à une facture
Lorsqu'un escompte est ajouté à une valeur, sa valeur est calculé à partir du pourcentage d'escompte défini dans les conditions de paiement de la facture. La valeur ne peut pas être modifiée.
📚 DocumentationPoint d'accès
Réponse de l'API
-
201 OK - Créé
L'escompte a été ajouté à la facture. La liste des articles qui ont été ajoutés à la facture sont retournés.
-
403 Refusé
L'escompte n'a pas été ajouté à la facture. La facture est, soit en préparation (code
invoice_draft
), soit annulée (codeinvoice_cancelled
), soit possède déjà un escompte (codeinvoice_discount_already_in
) ou la valeur de l'escompte des conditions de paiement est nulle (codeinvoice_discount_rate_null
).
Exemple - Ajouter un escompte à la facture 940
POST /order/940/lock
Réponse de l'API
HTTP 201 OK - Créé
[{"id":8914,"description":"Escompte 2 %","unit_price":-200,"quantity":100,"discount":0,"tax_rate":2000,"order_line_id":null,"deposit_id":null,"note_id":null,"early_payment_discount":true}]
Retirer un escompte d'une facture
Point d'accès
Réponse de l'API
-
204 OK
L'escompte a été retiré de la facture.
-
403 Refusé
L'escompte n'a pas été retiré de la facture. La facture est, soit en préparation (code
invoice_draft
), soit annulée (codeinvoice_cancelled
) ou ne possède pas d'escompte (codeno_early_payment_discount
).
Exemple - Retirer un escompte de la facture 940
DELETE /order/940/lock
Réponse de l'API
HTTP 204 OK
Envoyer une facture par e-mail
📚 DocumentationPoint d'accès
Contenu de la requête
-
contact_id
ObligatoireIdentifiant du contact qui recevra l'email.
-
title
ObligatoireTitre de l'e-mail.
-
body
ObligatoireContenu de l'e-mail.
Réponse de l'API
-
201 OK - Créé
La facture va être envoyé au destinataire par e-mail. Un objet contenant l'identifiant de l'envoi est retourné.
-
403 Refusé
La facture n'a pas été envoyée car elle n'est pas validée (code
invoice_status
).
Exemple - Envoyer la facture 942 au client
POST /invoice/942/email
Contenu de la requête
{"contact_id":1000,"title":"Facture N°9","body":"Bonjour,\nVous trouverez ci-joint la facture de votre achat de 120,00 €."}
Réponse de l'API
HTTP 201 OK - Créé
{"id":1648}
Générer un courrier de relance pour une facture impayée
📚 DocumentationPoint d'accès
Paramètres de la requête
-
attachment
Indicateur pour que l'en-tête
content-disposition: attachment
soit ajoutée à la réponse. La présence du paramètre vaut pourVRAI
, son absence pourFAUX
.
Réponse de l'API
-
200 OK
Le courrier de relance est retourné au format HTML.
-
403 Refusé
Le courrier ne peut pas être généré car la facture est, soit en préparation (code
invoice_draft
), soit annulée (codeinvoice_cancelled
).
Exemple - Générer un courrier de relance pour la facture 684
GET /invoice/684/reminder-letter
Réponse de l'API
HTTP 200 OK
<!doctypehtml><meta charset=utf-8><style>*{box-sizing:border-box;color:inherit;font-weight:inherit;margin:0;padding:0;line-height:1.5}body{width:18cm;min-height:26cm;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:14px;margin:0 auto;padding:.5cm 0}main{min-height:22cm}.client{margin:1em 0 1em 9cm;min-height:50px}h1{font-size:20px;margin-top:2em}h2{font-size:14px;margin-top:1em;font-style:italic}.location{text-align:right;margin-top:1em}.first{margin-top:2em}article>p{margin:1em 0}b{font-weight:700}footer{color:#4d4d4d;text-align:center;font-size:12px}@page{size:A4 portrait;margin:2cm 1cm 1cm}</style><main><div class=company><div>ABC Ltd</div><div>1 rue du Paradis</div><div>67100 Strasbourg</div><div>France</div></div><div class=client><div>Test Client</div><div></div><div> </div><div></div></div><h1>Objet : Relance - Facture n°4</h1><h2>Pièce-jointe : Duplicata de la facture N°4</h2><div class=location>Strasbourg, le 06/05/2020</div><div class=first>Madame, Monsieur,</div><article><p>Sauf erreur ou omission de notre part, le paiement de la facture n°4 datée du 20/03/2019 pour un montant de <b>120,00 €</b>, et arrivée à échéance le 30/04/2019, ne nous est pas parvenu.<p>Nous vous prions de bien vouloir procéder à son règlement dans les meilleurs délais, et vous adressons, à toutes fins utiles, un duplicata de cette facture en pièce jointe.<p>Si par ailleurs votre paiement venait à nous parvenir avant la réception de cette lettre, nous vous saurions gré de ne pas tenir compte de cette dernière.<p>Vous remerciant de faire le nécessaire, et restant à votre entière disposition pour toute éventuelle question, nous vous prions d'agréer, Madame, Monsieur, l'expression de nos salutations distinguées.</article><div class=sign></div></main><footer><p>Bla</p><p>Test metadata</p></footer>
Générer un courrier de mise en demeure pour une facture impayée
📚 DocumentationPoint d'accès
Paramètres de la requête
-
attachment
Indicateur pour que l'en-tête
content-disposition: attachment
soit ajoutée à la réponse. La présence du paramètre vaut pourVRAI
, son absence pourFAUX
.
Réponse de l'API
-
200 OK
Le courrier de mise en demeure est retourné au format HTML.
-
403 Refusé
Le courrier ne peut pas être généré car la facture est, soit en préparation (code
invoice_draft
), soit annulée (codeinvoice_cancelled
).
Exemple - Générer un courrier de mise en demeure pour la facture 684
GET /invoice/684/reminder-letter
Réponse de l'API
HTTP 200 OK
<!doctypehtml><meta charset=utf-8><style>*{box-sizing:border-box;color:inherit;font-weight:inherit;margin:0;padding:0;line-height:1.5}body{width:18cm;min-height:26cm;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:14px;margin:0 auto;padding:.5cm 0}main{min-height:23cm}.client{margin:1em 0 1em 9cm;min-height:50px}h1{font-size:20px;margin-top:2em}h2{font-size:14px;margin-top:1em;font-style:italic}.letter{font-size:14px}.location{text-align:right;margin-top:1em}.first{margin-top:2em}article>p{margin:1em 0}b{font-weight:700}footer{color:#4d4d4d;text-align:center;font-size:12px}@page{size:A4 portrait;margin:2cm 1cm 1cm}</style><main><div class=company><div>ABC Ltd</div><div>1 rue du Paradis</div><div>67100 Strasbourg</div><div>France</div></div><div class=client><div>Test Client</div><div></div><div> </div><div></div></div><h1>Objet : Mise en demeure</h1><div class=letter>Lettre recommandée avec accusé de réception</div><h2>Pièce-jointe : Duplicata de la facture N°4</h2><div class=location>Strasbourg, le 06/05/2020</div><div class=first>Madame, Monsieur,</div><article><p>A ce jour, le paiement de la facture n°4 datée du 20/03/2019 pour un montant de 120,00 €, et arrivée à échéance le 30/04/2019, ne nous est pas parvenu.<p>Ainsi, par la présente, <b>nous vous mettons en demeure de payer la somme de 120,00 €</b>.<p>À défaut de paiment sous huitaine, la juridiction compétente sera saisie afin d'obtenir le règlement des sommes dues, auxquelles s'ajouteront les intérêts de retard.<p>Vous remerciant de faire le nécessaire, et restant à votre entière disposition pour toute éventuelle question, nous vous prions d'agréer, Madame, Monsieur, l'expression de nos salutations distinguées.</article><div class=sign></div></main><footer><p>Bla</p><p>Test metadata</p></footer>
Factures d'acompte
Une ou plusieurs factures d'acompte peuvent être créées pour chaque commande.
Les factures d'acompte fonctionnent de la même façon que les factures traditionnelles. Seul le fonctionnement des articles diffère.
Lorsqu'une facture d'acompte est créée, un unique article est ajouté à la facture. Le montant hors-taxes de cette article équivaut au montant total de la commande, la quantité est initialisée à partir du taux d'acompte défini dans les paramètres de l'entreprise, et le taux de TVA est initialisé en fonction du taux de TVA le plus utilisé de la commande.
Contrairement aux articles des factures traditionnels, l'article comprenant l'acompte peut être modifié et personnalisé.
Créer une facture d'acompte à partir d'une commande
📚 DocumentationPoint d'accès
Réponse de l'API
-
201 OK - Créé
Une facture d'acompte est créée à partir de la commande. Un object de type Facture est retourné.
-
403 Refusé
Une facture d'acompte ne peut pas être créée pour cette commande car la commande est cloturée (code
order_closed
) ou que tous les articles de la commande ont déjà été facturés (codeno_line_to_invoice
).
Exemple - Créer une facture d'acompte pour la commande 889
POST /order/889/deposit
Réponse de l'API
HTTP 201 OK - Créé
{"id":939,"state":"draft","status":10,"number":null,"date":"2020-05-05T16:20:20.000Z","vat":true,"due_date":null,"due":null,"deposit":true,"deposit_invoice_id":null,"client":{"id":1000,"description":"Doe","firstname":"John","address":"5, rue des roses","postal_code":"68000","city":"COLMAR","country_code":"fr"},"client_original":{"id":1000,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null},"folder":null,"payment_terms":{"days_nb":15,"end_of_month":true,"early_payment_discount_rate":200},"order":{"id":889,"status":10,"number":9,"date":"2020-05-04T16:54:06.000Z"},"lines":[{"id":8912,"description":"Acompte","unit_price":10000,"quantity":10,"discount":0,"tax_rate":2000,"order_line_id":null,"deposit_id":null,"note_id":null,"early_payment_discount":false}],"terms":{"id":12,"text":"Test conditions","created_on":"2019-04-20T12:51:07.000Z"},"layout_id":null,"layout_footer_id":15,"payment_lines":null,"discount_on":null,"discount_by_id":null,"sendings":null}
Modifier le montant de l'acompte
Point d'accès
Contenu de la requête
-
description
OptionnelLibellé de l'article comprenant l'acompte
-
quantity
OptionnelQuantité de l'acompte de 1 à 99. Par exemple
10
pour 10%. -
tax_rate
OptionnelTaux de TVA de l'acompte.
Réponse de l'API
-
204 OK
L'acompte a été modifié.
-
403 Refusé
L'acompte n'a pas été modifié. La facture est déjà validée (code
invoice_validated
) ou annulée (codeinvoice_cancelled
).
Exemple - Modifier l'acompte de la facture 940 et définir un taux de 20%, avec un taux de TVA de 10%
POST /order/940/lock
Contenu de la requête
{"quantity":20,"tax_rate":1000}
Réponse de l'API
HTTP 204 OK
Paiements de facture
Obtenir le paiement d'une facture
Point d'accès
Réponse de l'API
-
200 OK
Le paiement de la facture a été trouvé. Un objet de type Paiement de facture est retourné.
Exemple - Obtenir le paiement 850 de la facture 684
GET /invoice/684/payment/850
Réponse de l'API
HTTP 200 OK
{"id":850,"received_on":"2020-08-07T16:02:06.000Z","amount":12000,"method":"wire_transfer","reference":null,"checked_on":null,"created_by":808,"created_on":"2020-08-07T16:03:25.000Z","card":null}
Ajouter un paiement à une facture
Point d'accès
Contenu de la requête
-
received_on
ObligatoireDate du paiement.
-
method
Obligatoire -
amount
ObligatoireMontant du paiement. Le montant ne doit pas être supérieur au montant restant dû.
-
fee
Optionnel -
reference
Optionnel -
checked_on
Optionnel
Réponse de l'API
-
201 OK - Créé
Le paiement a été ajoutée à la facture. Un objet de type Paiement de facture est retourné.
-
403 Refusé
Le paiement n'a pas été ajouté à la facture car elle est, soit en préparation (code
invoice_draft
), soit annulée (codeinvoice_cancelled
).
Exemple - Ajouter un paiement par chèque de 100,00€ à la facture 940
POST /invoice/940/payment
Contenu de la requête
{"received_on":"2020-05-06T15:25:08.230Z","amount":10000,"reference":"#TR45DM","method":"cheque"}
Réponse de l'API
HTTP 201 OK - Créé
{"id":822,"received_on":"2020-05-06T15:25:08.000Z","amount":10000,"method":"cheque","reference":"#TR45DM","checked_on":null,"card":null}
Supprimer un paiement d'une facture
Point d'accès
Réponse de l'API
-
204 OK
Le paiement a été retiré de la facture.
Exemple - Retirer le paiement 822 de la facture 940.
DELETE /invoice/940/payment/822
Réponse de l'API
HTTP 204 OK
Carnet d'adresses
Deux types de contacts peuvent se trouver dans le carnet d'adresses: les personnes physiques et les entreprises.
Tous deux se comportent de la même manière. Certaines opérations sont cependant réservées aux personnes physique comme la possibilité de créer un compte client.
Ajouter un contact au carnet d'adresses
Lorsqu'une personne physique est ajoutée au carnet d'adresse, ses coordonnées doivent être saisies manuellement.
Lorsqu'une entreprise est ajoutée au carnet d'adresse, ses coordonnées peuvent être récupérées automatiquement depuis le registre national des entreprises si le numéro SIREN est fourni. Les coordonnées peuvent aussi être saisies manuellement, si le numéro SIREN n'est pas connu, ou si l'entreprise n'est pas française.
Point d'accès
Contenu de la requête
-
siren
OptionnelNuméro SIREN de l'entreprise. Les propriétés
company
,description
,address
,postal_code
,city
,country_code
,birth_date
etvat_nb
de la requêtes seront ignorées et remplacées par les valeurs issues du registre national des entreprises. -
company
OptionnelBooléen indiquant si le contact est une entreprise (
VRAI
) ou une personne physique (FAUX
). -
description
OptionnelNom de l'entreprise ou nom de famille de la personne. Obligatoire si la propriété
siren
n'est pas fournie. -
firstname
OptionnelPrénom de la personne.
-
address
Optionnel -
postal_code
Optionnel -
city
Optionnel -
country_code
Optionnel -
birth_name
OptionnelNom de naissance de la personne.
-
birth_city
OptionnelVille de naissance de la personne.
-
birth_date
OptionnelDate de naissance de la personne ou date de création de la société.
-
birth_country_code
Optionnel -
vat_nb
OptionnelNuméro de TVA intracommunautaire de l'entreprise.
-
iban
OptionnelNuméro de compte bancaire au format IBAN.
-
parent_id
OptionnelIdentifiant de l'entreprise pour laquelle la personne travaille.
-
email
OptionnelAdresse e-mail.
-
tel
OptionnelNuméro de téléphone principal.
-
tel2
OptionnelNuméro de téléphone secondaire.
-
fax
OptionnelNuméro de fax.
-
website
OptionnelAdresse du site Internet.
-
comment
OptionnelCommentaire.
-
role
OptionnelRôle.
-
payment_terms
OptionnelConditions de paiement à utiliser pour les devis, commandes et factures créés pour ce contact
-
expense_class_id
OptionnelIdentifiant de la catégorie de dépense utilisée lorsqu'une dépense est créée pour ce contact.
Réponse de l'API
-
201 OK - Créé
Le contact a été créé et a été ajouté au carnet d'adresses. Un objet de type Contact est retourné.
-
403 Refusé
L'entreprise avec un numéro SIREN indentique existe dans le carnet d'adresse (code
siren_already_exist
). L'identifiant de l'entreprise existante est ajouté à la réponse. -
422 Valeur incorrecte
Aucune entreprise avec ce numéro n'a été trouvée (code
siren_not_found
).
Exemple - Ajouter une entreprise au carnet d'adresses à partir de son numéro SIREN
POST /contact
Contenu de la requête
{"siren":"356000000"}
Réponse de l'API
HTTP 201 OK - Créé
{"id":1001,"account_type":null,"company":true,"description":"LA POSTE","firstname":null,"birth_name":null,"birth_city":null,"birth_date":"1990-12-31T22:00:00.000Z","address":"9 Rue DU COLONEL PIERRE AVIA","postal_code":"75015","city":"PARIS 15","country_code":"fr","birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":"FR39356000000","iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":"https://example.com/la-poste.svg?68f3bce3d6","profile_img_url_small":null,"siren":356000000,"nic":48,"name_commercial":"LA POSTE","ape":"5310Z","association_nb":null,"last_imported_on":"2020-05-07T14:18:35.000Z","closed_on":null}
Exemple - Ajouter une entreprise au carnet d'adresses en saisissant les informations manuellement
POST /contact
Contenu de la requête
{"company":true,"description":"EXAMPLE SARL","address":"16 Avenue Principale","postal_code":"67120","city":"ALTORF","country_code":"fr"}
Réponse de l'API
HTTP 201 OK - Créé
{"id":1002,"account_type":null,"company":true,"description":"EXAMPLE SARL","firstname":null,"birth_name":null,"birth_city":null,"birth_date":null,"address":"16 Avenue Principale","postal_code":"67120","city":"ALTORF","country_code":"fr","birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"siren":null,"nic":null,"name_commercial":null,"ape":null,"association_nb":null,"last_imported_on":null,"closed_on":null}
Exemple - Ajouter une personne physique au carnet d'adresses
POST /contact
Contenu de la requête
{"description":"Doe","firstname":"John","email":"john.doe@example.com"}
Réponse de l'API
HTTP 201 OK - Créé
{"id":1003,"account_type":null,"company":false,"description":"Doe","firstname":"John","birth_name":null,"birth_city":null,"birth_date":null,"address":null,"postal_code":null,"city":null,"country_code":null,"birth_country_code":null,"email":"john.doe@example.com","tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":null,"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"parent":null}
Obtenir un contact du carnet d'adresses
Point d'accès
Réponse de l'API
-
200 OK
Le contact a été trouvée. Un objet de type Contact est retourné.
Exemple - Obtenir le contact 940
GET /contact/940
Réponse de l'API
HTTP 200 OK
{"id":1002,"account_type":null,"company":true,"description":"EXAMPLE SARL","firstname":null,"birth_name":null,"birth_city":null,"birth_date":null,"address":"16 Avenue Principale","postal_code":"67120","city":"ALTORF","country_code":"fr","birth_country_code":null,"email":null,"tel":null,"tel2":null,"fax":null,"website":null,"vat_nb":null,"iban":null,"comment":null,"role":null,"payment_terms":{"days_nb":7,"end_of_month":false,"early_payment_discount_rate":500},"expense_class":null,"profile_img_url":null,"profile_img_url_small":null,"siren":null,"nic":null,"name_commercial":null,"ape":null,"association_nb":null,"last_imported_on":null,"closed_on":null}
Modifier un contact du carnet d'adresses
Les informations des entreprises du carnet d'adresses dont le numéro SIREN a été saisi ne peuvent pas être modifiés car elles sont synchronisées avec le registre national des entreprises. Il s'agit des propriétés description
, address
, postal_code
, city
, country_code
, birth_date
et vat_nb
.
Les entreprises non synchronisées et les personnes physiques du carnet d'adresses peuvent être modifiées de la même façon.
Point d'accès
Contenu de la requête
-
siren
OptionnelNuméro SIREN de l'entreprise. Les propriétés
company
,description
,address
,postal_code
,city
,country_code
etbirth_date
de la requêtes seront ignorées et remplacées par les valeurs issues du registre national des entreprises. -
description
OptionnelNom de l'entreprise ou nom de famille de la personne.
-
firstname
OptionnelPrénom de la personne.
-
address
Optionnel -
postal_code
Optionnel -
city
Optionnel -
country_code
Optionnel -
birth_name
OptionnelNom de naissance de la personne.
-
birth_city
OptionnelVille de naissance de la personne.
-
birth_date
OptionnelDate de naissance de la personne ou date de création de la société.
-
birth_country_code
Optionnel -
vat_nb
OptionnelNuméro de TVA intracommunautaire de l'entreprise.
-
iban
OptionnelNuméro de compte bancaire au format IBAN.
-
parent_id
OptionnelIdentifiant de l'entreprise pour laquelle la personne travaille.
-
email
OptionnelAdresse e-mail.
-
tel
OptionnelNuméro de téléphone principal.
-
tel2
OptionnelNuméro de téléphone secondaire.
-
fax
OptionnelNuméro de fax.
-
website
OptionnelAdresse du site Internet.
-
comment
OptionnelCommentaire.
-
role
OptionnelRôle.
-
payment_terms
OptionnelConditions de paiement à utiliser pour les devis, commandes et factures créés pour ce contact
-
expense_class_id
OptionnelIdentifiant de la catégorie de dépense utilisée lorsqu'une dépense est créée pour ce contact.
Réponse de l'API
-
204 OK
Le contact a été modifié.
-
403 Refusé
L'entreprise avec un numéro SIREN indentique existe dans le carnet d'adresse (code
siren_already_exist
). L'identifiant de l'entreprise existante est ajouté à la réponse. -
422 Valeur incorrecte
Aucune entreprise avec ce numéro n'a été trouvée (code
siren_not_found
).
Exemple - Modifier les conditions de paiement d'un client à 7 jours, avec 5% d'acompte
PUT /contact/1002
Contenu de la requête
{"payment_terms":{"days_nb":7,"end_of_month":false,"early_payment_discount_rate":500}}
Réponse de l'API
HTTP 204 OK
Supprimer un contact du carnet d'adresses
Un contact peut être supprimé du carnet d'adresses uniquement s'il ne possède pas d'éléments rattachés à lui, c'est à dire des devis, commandes, factures, dossiers, dépenses ou employés, et s'il n'intervient pas dans un dossier.
Point d'accès
Réponse de l'API
-
204 OK
Le contact a été supprimé et retiré du carnet d'adresses.
-
403 Refusé
Le contact possède un devis (code
quotation_exist
), une commande (codeorder_exist
), une dépense (codeexpense_exist
), un dossier (codefolder_exist
), un employé (codefolder_contact_exist
).
Exemple - Supprimer le contact 1002 du carnet d'adresses
DELETE /contact/1002
Réponse de l'API
HTTP 204 OK
Créer un compte à un client
Un compte peut être crééé pour tous les clients pour leur permettre de se connecter et de consulter leurs informations.
Seuls les personnes peuvent bénéficier d'un compte (propriété company
à FAUX
).
Point d'accès
Réponse de l'API
-
204 OK
Un compte a été créé pour cette personne et ses identifiants vont lui être envoyés par e-mail.
-
403 Refusé
Un compte n'a pas pu être créé pour cette personne car elle possède déjà un compte (code
contact_already_account
), l'adresse e-mail n'a pas été saisi (codecontact_no_email
), ou une autre personne possède déjà un compte avec le même e-mail (codeaccount_exists_with_same_email
).
Exemple - Créer un compte pour le contact 1003
POST /contact/1003/account
Réponse de l'API
HTTP 204 OK
Supprimer le compte d'un client
Point d'accès
Réponse de l'API
-
204 OK
Le compte de la personne a été supprimé.
-
403 Refusé
Le compte de la personne n'a pas été supprimé car il n'en possède pas (code
contact_no_account
).
Exemple - Supprimer le compte du contact 1003
DELETE /contact/1003/account
Réponse de l'API
HTTP 204 OK
Catalogue
Ajouter un article au catalogue
Point d'accès
Contenu de la requête
-
description
ObligatoireLibellé de l'article.
-
unit_price
OptionnelPrix unitaire hors-taxes de l'article.
-
tax_rate
OptionnelPourcentage de TVA à appliquer lorsque l'article est vendu.
-
comment
OptionnelTexte descriptif de l'article..
-
stock
OptionnelQuantité en stock de l'article.
-
safety_stock
OptionnelStock de sécurité de l'article.
-
manufacturer_id
OptionnelIdentifiant du constructeur. Doit correspondre à l'identifiant d'un objet de type Contact existant.
Réponse de l'API
-
201 OK - Créé
L'article a été créé et ajouté au catalogue. Un objet de type Article est retourné.
Exemple - Ajouter un article au catalogue
POST /material
Contenu de la requête
{"description":"Tasse décorée","unit_price":1500,"tax_rate":2000}
Réponse de l'API
HTTP 201 OK - Créé
{"id":36,"description":"Tasse décorée","unit_price":1500,"stock":null,"safety_stock":null,"tax_rate":2000,"comment":null,"manufacturer":null}
Obtenir un article du catalogue
Point d'accès
Réponse de l'API
-
200 OK
L'article a été trouvé. Un objet de type Article est retourné.
Exemple - Obtenir l'article 36 du catalogue
GET /material/36
Réponse de l'API
HTTP 201 OK - Créé
{"id":36,"description":"Tasse décorée","unit_price":1500,"stock":null,"safety_stock":null,"tax_rate":2000,"comment":null,"manufacturer":null}
Modifier un article du catalogue
Point d'accès
Contenu de la requête
-
description
OptionnelLibellé de l'article.
-
unit_price
OptionnelPrix unitaire hors-taxes de l'article.
-
tax_rate
OptionnelPourcentage de TVA à appliquer lorsque l'article est vendu.
-
comment
OptionnelTexte descriptif de l'article..
-
stock
OptionnelQuantité en stock de l'article.
-
safety_stock
OptionnelStock de sécurité de l'article.
-
manufacturer_id
OptionnelIdentifiant du constructeur. Doit correspondre à l'identifiant d'un objet de type Contact existant.
Réponse de l'API
-
204 OK
L'article du catalogue a été modifié.
Exemple - Modifier l'article 36 du catalogue
PUT /material/36
Contenu de la requête
{"unit_price":3000}
Réponse de l'API
HTTP 204 OK
Supprimer un article du catalogue
Point d'accès
Réponse de l'API
-
204 OK
L'article a été supprimé et retiré du catalogue.
-
403 Refusé
L'article n'a pas été supprimé car il est présent sur un devis ou une commande (code
material_in_use
).
Exemple - Supprimer l'article 36 du catalogue
DELETE /material/36
Réponse de l'API
HTTP 204 OK
Ajouter un tarif négocié pour un client
Les articles du catalogue peuvent posséder un prix public. Ce prix est utilisé lorsque l'article est ajouté à un devis ou une commande.
Il est possible de personnaliser ce prix à la hausse ou à la baisse pour chaque client.
Si un tarif est déjà présent pour ce client, l'ancien tarif est supprimé.
Point d'accès
Contenu de la requête
-
unit_price
ObligatoirePrix unitaire hors-taxes négocié de l'article.
Réponse de l'API
-
204 OK
Le tarif négocié de l'article a été ajouté.
Exemple - Ajouter un tarif négocié de l'article 36 pour le client 1002
POST /material/36/client/1002
Contenu de la requête
{"unit_price":1000}
Réponse de l'API
HTTP 204 OK
Supprimer un tarif négocié d'un client
Point d'accès
Réponse de l'API
-
204 OK
Le tarif négocié de l'article a été supprimé.
Exemple - Supprimer le tarif négocié de l'article 36 pour le client 1002
DELETE /material/36/client/1002
Réponse de l'API
HTTP 204 OK
Dépense
Créer une dépense
Obtenir une dépense
Modifier une dépense
Supprimer une dépense
Ajouter une article à une dépense
Modifier un article d'une dépense
Supprimer un article d'une dépense
Ajouter un justificatif à une dépense
Modifier un justificatif d'une dépense
Retirer un justificatif d'une dépense
Télécharger un justificatif d'une dépense
Ajouter le paiement d'une dépense
Modifier le paiement d'une dépense
Supprimer le paiement d'une dépense
Dossier
Créer un dossier
Modifier un dossier
Catégorie de dépense
Objets retournés par l'API
Les objets retournés par l'API possèdent une liste de propriétés qui sont détaillées par la suite.
Les valeurs de ces propriétés peuvent être plusieurs types:
- Une chaine de caractères, c'est à dire une suite de chiffres et lettres.
- Un nombre entier, positif, négatif, ou nul.
- Un nombre décimal, c'est à dire un nombre avec des chiffres après la virgule.
- Des dates.
Objet - Informations du compte
-
tenant_id
Nombre entier positif, ObligatoireIdentifiant de l'entreprise.
-
id
Nombre entier positif, ObligatoireIdentifiant de l'utilisateur.
-
token
Chaîne de caractères, ObligatoireSignature numérique de la session.
-
description
Chaîne de caractères, ObligatoireNom de famille de l'utilisateur.
-
firstname
Chaîne de caractèresPrénom de l'utilisateur.
-
email
Chaîne de caractères, ObligatoireE-mail de l'utilisateur.
-
company
Objet, ObligatoireEntreprise rattachée au compte de l'utilisateur
Objet - Entreprise
-
siren
Nombre entier positif, ObligatoireNuméro SIREN de l'entreprise.
-
description
Chaîne de caractères, ObligatoireNom de l'entreprise.
-
address
Chaîne de caractèresAdresse du siège social de l'entreprise.
-
postal_code
Chaîne de caractères, ObligatoireCode postal du siège social de l'entreprise.
-
city
Chaîne de caractères, ObligatoireVille du siège social de l'entreprise.
-
country_code
Code pays, ObligatoirePays du siège social de l'entreprise
-
email
Chaine de caractèresAdresse e-mail de l'entreprise.
-
tel
Numéro de téléphoneNuméro de téléphone principal de l'entreprise.
-
tel2
Numéro de téléphoneNuméro de téléphone secondaire de l'entreprise.
-
fax
Numéro de téléphoneNuméro de télécopie de l'entreprise.
-
website
Chaine de caractèresSite Internet de l'entreprise.
-
vat_nb
Chaine de caractèresNuméro de TVA intra-communautaire de l'entreprise.
-
vat
Booléen, ObligatoireIndicateur si l'entreprise est assujetti à la TVA.
-
quotation_valid_until
Nombre entier positif, ObligatoireNombre de jours pendant lesquels les devis sont valides.
-
deposit_rate
Nombre entier positif, ObligatoireTaux d'acompte initial des factures d'acompte. Les pourcentages acceptés vont de 0% à 100% inclus. Montant avec deux décimales et sans virgule. Par exemple
1000
pour 10%. -
tax_rate
Nombre entier positif, ObligatoireTaux de TVA le plus utilisé par l'entreprise. Les pourcentages acceptés vont de 0 % à 100% inclus. Montant avec deux décimales et sans virgule. Par exemple
2000
pour 20%. -
payment_terms
Objet, ObligatoireConditions de paiement à utiliser pour les devis, commandes et factures créés par l'entreprise. Objet de type Conditions de paiement.
-
client_create_folder
Booléen, ObligatoireIndicateur si les clients ont l'autorisation de créer de nouveaux dossiers.
-
notif_folder_new_by_client_email
Booléen, ObligatoireIndicateur si un e-mail est envoyé au gestionnaire du dossier lorsqu'un nouveau dossier est créé par un client.
-
task_rate
Nombre entier positif, ObligatoireTaux initial utilisé lorsqu'une activité est facturée au client. Montant avec deux décimales et sans virgule. Par exemple
5000
pour 50,00 €. -
task_rate_unit
Nombre entier positif, ObligatoireNombre d'heures associé au taux.
1
pour un taux horaire,24
pour un taux journalier.
Objet - Contact du carnet d'adresses
-
id
Nombre entier positif, ObligatoireIdentifiant du contact.
-
company
Booléen, ObligatoireBooléen indiquant si le contact est une entreprise (
VRAI
) ou une personne physique (FAUX
).FAUX
par défaut. -
description
Chaine de caractères, ObligatoireNom de l'entreprise ou nom de famille de la personne.
-
firstname
Chaine de caractèresPrénom de la personne.
-
address
Chaine de caractèresAdresse postale du contact. Peut contenir des sauts de lignes.
-
postal_code
Chaine de caractèresCode postal du contact.
-
city
Chaine de caractèresVille du contact.
-
country_code
Code paysPays du contact.
-
birth_name
Chaine de caractèresNom de naissance de la personne.
-
birth_city
Chaine de caractèresVille de naissance de la personne.
-
birth_date
DateDate de naissance de la personne ou date de création de la société.
-
birth_country_code
Chaine de caractèresCode du pays de naissance selon la codification ISO-3166.
-
email
Chaine de caractèresAdresse e-mail.
-
tel
Numéro de téléphoneNuméro de téléphone principal.
-
tel2
Numéro de téléphoneNuméro de téléphone secondaire.
-
fax
Numéro de téléphoneNuméro de fax.
-
website
Chaine de caractèresAdresse du site Internet.
-
vat_nb
Chaine de caractèresNuméro de TVA intracommunautaire de l'entreprise.
-
iban
Chaine de caractèresNuméro de compte bancaire au format IBAN.
-
comment
Chaine de caractèresCommentaire.
-
role
Chaine de caractèresRôle de la personne.
-
profile_img_url
URLAdresse de la photo à afficher.
-
profile_img_url_small
URLAdresse de la petite photo à afficher.
-
payment_terms
ObjetConditions de paiement à utiliser pour les devis, commandes et factures créés pour ce contact. Objet de type Conditions de paiement.
-
expense_class
ObjetCatégorie de dépense à utiliser lorsqu'une dépense est créée pour ce contact. Objet de type Catégorie de dépense.
-
parent
ObjetEntreprise pour laquelle la personne travaille. Objet de type Contact.
-
account_created_on
DateDate à laquelle un compte a été créé pour cette personne.
-
account_last_connection
DateDate à laquelle la personne s'est connectée.
-
account_notif_type
NombreType de notifications que l'utilisateur souhaite recevoir:
NULL
pour recevoir des notifications de l'ensemble des dossiers,1
pour recevoir des notifications uniquement des dossiers dans lesquels l'utilisateur intervient. -
account_notif_file_email
BooléenIndique si l'utilisateur souhaite recevoir un e-mail de notification lorsqu'un document est ajouté.
-
account_notif_msg_email
BooléenIndique si l'utilisateur souhaite recevoir un e-mail de notification lorsqu'un message est ajouté.
-
account_notif_event_email
BooléenIndique si l'utilisateur souhaite recevoir un e-mail de notification lorsqu'un événement est ajouté.
-
siren
Nombre positifNuméro SIREN de l'entreprise
-
nic
Nombre positifNuméro NIC de l'entreprise
-
name_commercial
Chaine de caractèresNom commercial de l'entreprise. Uniquement si le numéro SIREN a été saisi.
-
ape
Chaine de caractèresCode APE de l'entreprise. Uniquement si le numéro SIREN a été saisi.
-
association_nb
Chaine de caractèresNuméro d'inscription au répertoire national des associations. Uniquement si le numéro SIREN a été saisi et que le contact est une association.
-
closed_on
DateDate à laquelle l'entreprise a été radiée. Uniquement si le numéro SIREN a été saisi.
-
last_imported_on
DateDate à laquelle les informations ont été importées du registre national des entreprises. Uniquement si le numéro SIREN a été saisi.
Objet - Devis
-
id
Nombre entier positif, ObligatoireIdentifiant interne du devis.
-
state
Chaîne de caractères, ObligatoireStatut du devis. Les statuts possibles sont:
closed
lorsque le devis est clôturé,running
quand n'est pas signé etvalidated
lorsque le devis est signé. -
number
Nombre entier positif, ObligatoireNuméro du devis. Lorsque le devis est créé, un numéro unique est assigné au devis.
-
date
Date et heure, ObligatoireDate de création du devis.
-
comment
Chaîne de caractèresCommentaire du devis.
-
valid_until
Date et heure, ObligatoireDate de fin de validité du devis.
-
shipping_date
Date et heureDate à laquelle les articles seront envoyés au client.
-
terms
ObjetConditions générales de l'entreprise. Voir l'objet Conditions générales.
-
client
Objet, ObligatoireNom et adresse du client du devis.
-
client_original
Objet, ObligatoireInformations du client issues du carnet d'adresses. Le nom et l'adresse du client peuvent être différents de la propriété
client
si les informations du devis ont été modifiées manuellement par l'utilisateur. Voir l'objet Contact. -
folder
ObjetDossier dans lequel le devis a été classé. Voir l'objet Dossier.
-
payment_terms
Objet, ObligatoireConditions de paiement du devis. Voir l'objet Conditions de paiement
-
validated_by
Nombre entier positifIdentifiant de l'utilisateur ayant signé le devis.
-
validated_on
Date et heureDate à laquelle le devis a été signé.
-
order
ObjetCommande issue du devis lorsque le devis a été signé. Contient le statut de la commande, son numéro et sa date de création.
-
layout_id
ObjetInformations du modèle à utiliser lors du rendu papier ou électronique du devis.
-
layout_footer_id
Nombre positifIdentifiant du pied de page à intégrer dans le rendu.
-
lines
ListeListe des articles du devis. Voir l'objet Article du devis.
-
sendings
ListeInformations des envois, lorsque le devis est envoyé au client. Voir l'objet Envoi.
-
is_sent
Booléen, ObligatoireIndicateur de l'envoi ou non du devis au client.
-
esignature
Objet, ObligatoireInformations sur la signature électronique du devis.
Objet - Article de devis
-
id
Nombre entier positif, ObligatoireIdentifiant de l'article.
-
description
Chaine de caractères, ObligatoireLibellé de l'article.
-
unit_price
Nombre entier, ObligatoirePrix unitaire hors-taxes de l'article en centimes. Le montant peut être négatif pour représenter une remise. Par exemple
10000
pour 100,00€. -
quantity
Nombre entier positif ou nul, ObligatoireQuantité. Montant avec deux décimales et sans virgule. Par exemple
100
pour 1. -
discount
Nombre entier, ObligatoirePourcentage de remise si négatif, ou de majoration si positif. Les pourcentages acceptés vont de -100% à 300% inclus. Montant avec deux décimales et sans virgule. Par exemple
-2000
pour -20%. -
tax_rate
Nombre entier positif ou nul, ObligatoirePourcentage de TVA. Les pourcentages acceptés vont de 0 % à 100% inclus. Montant avec deux décimales et sans virgule. Par exemple
2000
pour 20%. -
material_id
Nombre entier positif ou nulIdentifiant de l'article du catalogue.
Objet - Recherche de devis
-
count
Nombre positifNombre d'éléments trouvés correspondant aux critères de recherches. Seulement si le paramètre
total
estVRAI
. -
sum
NombreMontant total hors-taxes en centimes des devis correspondant aux critères de recherches. Par exemple
631055
pour 6310,55€. Seulement si le paramètretotal
estVRAI
. -
sum_tax
NombreMontant total des taxes en centimes des devis correspondant aux critères de recherches. Seulement si le paramètre
total
estVRAI
. -
result
Liste, ObligatoireListe des devis correspondant aux critères de recherches. Le nombre maximal de devis dépend du paramètre
page_size
. -
has_more
Booléen, ObligatoireIndicateur vrai si la réponse (
result
) ne contient pas tous les devis, car la limite (page_size
) a été atteinte.
Objet - Commande
-
id
Nombre entier positif, ObligatoireIdentifiant interne de la commande.
-
state
Chaîne de caractères, ObligatoireStatut de la commande. Les statuts possibles sont:
running
quand la commande est modifiable etclosed
lorsque le commande est clôturée. -
number
Nombre entier positif, ObligatoireNuméro de la commande. Lorsque la commande est créée, un numéro unique est assigné au commande.
-
date
Date et heure, ObligatoireDate de création de la commande.
-
comment
Chaîne de caractèresCommentaire de la commande.
-
shipping_date
Date et heureDate à laquelle les articles seront envoyés au client.
-
terms
ObjetConditions générales de l'entreprise. Voir l'objet Conditions générales.
-
client
Objet, ObligatoireNom et adresse du client de la commande.
-
client_original
Objet, ObligatoireInformations du client issues du carnet d'adresses. Le nom et l'adresse du client peuvent être différents de la propriété
client
si les informations de la commande ont été modifiées manuellement par l'utilisateur. Voir l'objet Contact. -
folder
ObjetDossier dans lequel la commande a été classée. Voir l'objet Dossier.
-
payment_terms
Objet, ObligatoireConditions de paiement de la commande. Voir l'objet Conditions de paiement
-
quotation
ObjetDevis que le client a signé et qui a généré cette commande. Contient le statut du devis, son numéro et sa date de création.
-
layout_id
ObjetInformations du modèle à utiliser lors du rendu papier ou électronique de la commande.
-
layout_footer_id
Nombre positifIdentifiant du pied de page à utiliser dans le rendu de la commande.
-
lines
ListeListe des articles de la commande. Voir l'objet Article de la commande.
Objet - Article de commande
-
id
Nombre entier positif, ObligatoireIdentifiant de l'article.
-
description
Chaine de caractères, ObligatoireLibellé de l'article.
-
unit_price
Nombre entier, ObligatoirePrix unitaire hors-taxes de l'article en centimes. Le montant peut être négatif pour représenter une remise. Par exemple
10000
pour 100,00€. -
quantity
Nombre entier positif ou nul, ObligatoireQuantité. Montant avec deux décimales et sans virgule. Par exemple
100
pour 1. -
discount
Nombre entier, ObligatoirePourcentage de remise si négatif, ou de majoration si positif. Les pourcentages acceptés vont de -100% à 300% inclus. Montant avec deux décimales et sans virgule. Par exemple
-2000
pour -20%. -
tax_rate
Nombre entier positif ou nul, ObligatoirePourcentage de TVA. Les pourcentages acceptés vont de 0 % à 100% inclus. Montant avec deux décimales et sans virgule. Par exemple
2000
pour 20%. -
material_id
Nombre entier positif ou nulIdentifiant de l'article du catalogue.
-
task_id
Nombre entier positif ou nulIdentifiant de l'activité lorsque l'article correspond à une activité.
-
expense_id
Nombre entier positif ou nulIdentifiant de la dépense lorsque l'article correspond à une dépense que l'utilisateur souhaite facturer au client.
-
invoice_id
Nombre entier positif ou nulIdentifiant de la facture lorsque l'article a été facturé.
Objet - Facture
-
id
Nombre entier positif, ObligatoireIdentifiant interne de la facture.
-
state
Chaîne de caractères, ObligatoireStatut de la facture. Les statuts possibles sont:
draft
quand la facture est en préparation,validated
lorsque le facture est validée etcancelled
quand la facture a été annulée. -
number
Nombre entier positifNuméro de la facture. Uniquement lorsque la facture est validée.
-
date
Date et heure, ObligatoireDate de création de la facture.
-
vat
Booléen, ObligatoireIndicateur si l'entreprise qui émet la facture est d'assujettie à la TVA.
-
due_date
DateDate maximale à laquelle la facture doit être réglée. La valeur est présente uniquement lorsque la facture est validée.
-
due
Nombre entier positif ou nulMontant restant à régler. La valeur est présente uniquement lorsque la facture est validée.
-
deposit
Booléen, ObligatoireIndicateur si la facture est une facture d'acompte.
-
deposit_invoice_id
Nombre entier positifIdentifiant de la facture ayant ajouté en déduction l'acompte. Pour les factures d'acompte uniquement.
-
discount_by
Nombre entier positifIdentifiant de l'utilisateur ayant ajouté l'escompte à facture. Présent uniquement si un escompte a été ajouté à la facture.
-
discount_on
DateDate à laquelle l'escompte à été ajoutée à la facture. Présent uniquement si un escompte a été ajouté à la facture.
-
terms
ObjetConditions générales de l'entreprise. Voir l'objet Conditions générales.
-
client
Objet, ObligatoireNom et adresse du client de la facture.
-
client_original
Objet, ObligatoireInformations du client issues du carnet d'adresses. Voir l'objet Contact.
-
folder
ObjetDossier dans lequel la facture a été classée. Voir l'objet Dossier.
-
payment_terms
Objet, ObligatoireConditions de paiement de la facture. Voir l'objet Conditions de paiement
-
order
ObjetCommande ayant générée la facture. Contient le statut de la commande, son numéro et sa date de création.
-
layout_id
ObjetInformations du modèle à utiliser lors du rendu papier ou électronique de la facture.
-
layout_footer_id
Nombre positifIdentifiant du pied de page à utiliser dans le rendu de la facture.
-
lines
ListeListe des articles de la facture. Voir l'objet Article de la facture.
-
payment_lines
ListeListe des paiement effectués par le client. Voir l'objet Paiement de facture.
-
sendings
ListeInformations des envois, lorsque la facture est envoyée au client. Voir l'objet Envoi.
Objet - Article de facture
-
id
Nombre entier positif, ObligatoireIdentifiant de l'article.
-
description
Chaine de caractères, ObligatoireLibellé de l'article.
-
unit_price
Nombre entier, ObligatoirePrix unitaire hors-taxes de l'article en centimes. Le montant peut être négatif pour représenter une remise. Par exemple
10000
pour 100,00€. -
quantity
Nombre entier positif ou nul, ObligatoireQuantité. Montant avec deux décimales et sans virgule. Par exemple
100
pour 1. -
discount
Nombre entier, ObligatoirePourcentage de remise si négatif, ou de majoration si positif. Les pourcentages acceptés vont de -100% à 300% inclus. Montant avec deux décimales et sans virgule. Par exemple
-2000
pour -20%. -
tax_rate
Nombre entier positif ou nul, ObligatoirePourcentage de TVA. Les pourcentages acceptés vont de 0 % à 100% inclus. Montant avec deux décimales et sans virgule. Par exemple
2000
pour 20%. -
order_line_id
Nombre entier positif ou nul, ObligatoireIdentifiant de l'article de la commande.
-
deposit_id
Nombre entier négatif ou nulIdentifiant de la facture d'acompte lorsque un acompte a été créé précédemment à cette facture.
-
early_payment_discount
Booléen, ObligatoireIndicateur si l'article correspond à un escompte
Objet - Paiement de facture
-
id
Nombre entier positif, ObligatoireIdentifiant interne du paiement.
-
received_on
Date, ObligatoireDate à laquelle le paiement a été effectué par le client.
-
amount
Date, ObligatoireMontant en centimes payé par le client. Par exemple
10000
pour 100,00€. -
fee
Nombre entier positif ou nul, ObligatoireFrais en centimes de la transaction. Par exemple
120
pour 1,20€. -
method
Chaîne de caractères, ObligatoireType de paiement:
cash
pour Espèces,wire_transfer
pour Virement bancaire,cheque
pour Chèque,credit_card
pour Carte Bancaire,direct_debit
pour Prélèvement,paypal
pour PayPal. -
reference
Chaîne de caractèresRéférence de la transaction.
-
checked_on
DateDate à laquelle le paiement a été encaissé.
-
card
DateInformations de la carte bancaire dans le cas d'un paiement par carte bancaire. Contient les propriétés:
brand
avec le type de la carte,last4
avec les quatres derniers numéros de la carte,exp_month
etexp_year
avec le mois et l'année d'expiration de la carte.
Objet - Conditions de paiement
-
days_nb
Nombre entier positif ou nul, ObligatoireNombre en jours accordé au client pour régler la facture. Zéro dans le cas d'un paiement comptant.
-
end_of_month
Booléen, ObligatoireIndicateur de fin de mois permettant de retarder l'échéance au dernier jour du mois.
-
early_payment_discount_rate
Nombre entier positif ou nul, ObligatoireEscompte représenté sous forme de pourcentage du montant total hors taxes. La valeur a deux décimales et ne possède pas de virgule. Par exemple
100
pour 1% ou550
pour 5,5%.
Objet - Envoi
-
tenant_id
Nombre entier positif, ObligatoireIdentifiant de l'envoi.
-
title
Chaine de caractères, ObligatoireTitre du courrier/courriel.
-
body
Chaine de caractères, ObligatoireCorps du courrier/courriel.
-
created_by
Chaine de caractères, ObligatoireIdentifiant de l'utilisateur ayant effectué l'envoi.
-
created_on
Chaine de caractères, ObligatoireDate à laquelle la demande d'envoi a été faite.
-
contact
Objet, ObligatoireDestinataire du courrier/courriel.
Objet - Article du catalogue
-
id
Nombre entier positif, ObligatoireIdentifiant de l'article.
-
description
Chaîne de caractères, ObligatoireLibellé de l'article.
-
unit_price
Nombre entier positif ou nul, ObligatoirePrix unitaire hors-taxes en centimes. Par exemple
10000
pour 100,00€. -
tax_rate
Nombre entier positif ou nul, ObligatoirePourcentage de TVA à appliquer lorsque l'article est vendu. Les pourcentages acceptés vont de 0 % à 100% inclus. Montant avec deux décimales et sans virgule. Par exemple
2000
pour 20%. -
stock
Nombre entier positif ou nul, ObligatoireQuantité en stock. Montant avec deux décimales et sans virgule. Par exemple
1000
pour 10 articles. -
safety_stock
Nombre entier positif ou nul, ObligatoireStock de sécurité. Quantité en-desous de laquelle l'article doit être recommandé. Montant avec deux décimales et sans virgule. Par exemple
200
pour 2 articles. -
comment
Chaîne de caractères, ObligatoireTexte descriptif de l'article.
-
manufacturer
Objet, ObligatoireConstructeur de l'article. Objet de type Contact simplifié.
Objet - Activité
-
id
Nombre entier positif, ObligatoireIdentifiant de l'activité.
Objet - Dépense
-
id
Nombre entier positif, ObligatoireIdentifiant de la dépense.