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,PUTetDELETE.

Les requêtesPOSTpermettent 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êtesPUTpermettent 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êtesDELETEpermettent de supprimer une ressource.

Codes HTTP des réponses de l'API

Lescodes HTTPconventionnels sont utilisés pour indiquer le succès ou l'échec d'une requête.

Les codes200,201et204sont utilisés pour indiquer le succès de la requête. Plus précisément:

  • 200indique que la requête a correctement été traitée et que la réponse contient un message.
  • 201indique que la ressource a bien été créée. La réponse peut contenir un message.
  • 204indique que la requête a bien été traitée et que la réponse ne contient pas de message.

Les codes entre400et499sont 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:

  • 400indique une erreur dans le format du corps de la requête.
  • 401indique une erreur d'authentification.
  • 403indique que l'opération n'est pas permise.
  • 404indique que la ressource n'existe pas.
  • 409indique une erreur de conflits entre plusieurs requêtes simultanées.
  • 422indique qu'une valeur du corps de la requête est incorrecte.

Enfin, les codes500et 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-timestampetdk-hash.

L'en-têtedk-timestampcorrespond à la date de création de la requête au format JSON (ISO 8601), par exemple2020-04-29T15:08:10.404Z, et l'en-têtedk-hashcorrespond à l'empreinte numérique de la requête.

L'empreinte numérique est générée en codant enBase64le résultat de la fonction de hachageSHA-256du texte composé des éléments suivants concaténés:

  • La valeur du paramètredk-timestamp;
  • La méthode de la requête,GET,POST,PUTouDELETE;
  • 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 formatJSON. L'entêtecontent-typede 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'empreintedk-hashde 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-timestampetdk-hmac.

Le paramètredk-tenantcorrespond à l'identifiant de l'entreprise fourni lors de l'authentification.

Le paramètredk-usercorrespond à l'identifiant de l'utilisateur également fourni lors l'authentification.

Le paramètredk-timestampcorrespond à la date de création de la requête au format JSON (ISO 8601), par exemple2020-04-29T15:08:10.404Z.

Le paramètredk-hmaccorrespond à la signature numérique de la requête. Elle est générée en codant enBase64le résultat de l'algorithmeHMAC-SHA-256en 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êtedk-timestamp;
  • La méthode de la requête,GET,POST,PUTouDELETE;
  • L'adresse du point d'accès, en excluant le nom de domaine et les paramètres de l'adresse. Par exemple/contactet non pashttps://api.deskeen.fr/contactni/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 formatJSON. L'entêtecontent-typede 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:

  • trueou1pour représenter la valeurVRAI.
  • falseou0pourFAUX.

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+33123456789pour un numéro français.

Les pays sont représentés par leurs codesISO-3166. Par exempleFRpour 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

post/login[/{Identifiant_de_l_entreprise}]

Contenu de la requête

  • emailObligatoire

    Adresse e-mail du compte de l'utilisateur.

  • passwordObligatoire

    Mot de passe du compte de l'utilisateur.

  • tokenOptionnel

    Nombre TOTP à six chiffres généré par l'application d'authentification. Obligatoire si l'authentification à deux facteursest 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 typeinformations du compteest retourné. Il contient notamment lasignature 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 objetDevisest 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

post/contact/{Identifiant_du_client}/quotation

Réponse de l'API

  • 201 OK - Créé

    Le devis a été correctement créé. Un objet de typeDevisest 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

post/folder/{Identifiant_du_dossier}/quotation

Réponse de l'API

  • 201 OK - Créé

    Le devis a été correctement créé. Un objet de typeDevisest 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

📚 Documentation

Point d'accès

post/quotation/{Identifiant_du_devis}/clone

Réponse de l'API

  • 201 OK - Créé

    Un devis identique a été créé. Un objet de typeDevisest retourné.

  • 403 Refusé

    Le devis n'a pas été créé. Soit, l'entreprise cliente du devis est radiée (codeentreprise_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

📚 Documentation

Point d'accès

get/quotation/{Identifiant_du_devis}

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 typeDevisest 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

📚 Documentation

Point d'accès

get/quotation/{Identifiant_du_devis}/file

Paramètres de la requête

  • attachment

    Indicateur pour que l'en-têtecontent-disposition: attachmentsoit 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

📚 Documentation

Point d'accès

delete/quotation/{Identifiant_du_devis}

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é (codequotation_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

📚 Documentation

Point d'accès

put/quotation/{Identifiant_du_devis}

Contenu de la requête

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é (codequotation_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

📚 Documentation

Point d'accès

post/quotation/{Identifiant_du_devis}/lock

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é (codequotation_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é

📚 Documentation

Point d'accès

delete/quotation/{Identifiant_du_devis}/lock

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 (codequotation_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

get/quotation/{Identifiant_du_devis}/line/{Identifiant_de_l_article}

Réponse de l'API

  • 200 OK

    L'article du devis a été trouvé. Un objet de typeArticle de devisest 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

📚 Documentation

Point d'accès

post/quotation/{Identifiant_du_devis}/line

Contenu de la requête

Réponse de l'API

  • 201 OK - Créé

    L'article a été ajouté au devis. Un objet de typeArticle de devisest retourné.

  • 403 Refusé

    L'article n'a pas été ajouté au devis. Le devis est, soit signé (codequotation_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

put/quotation/{Identifiant_du_devis}/line/{Identifiant_de_l_article}

Contenu de la requête

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é (codequotation_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

delete/quotation/{Identifiant_du_devis}/line/{Identifiant_de_l_article}

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é (codequotation_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

📚 Documentation

Point d'accès

post/quotation/{Identifiant_du_devis}/email

Contenu de la requête

  • contact_idObligatoire

    Identifiant du contact qui recevra l'email.

  • titleObligatoire

    Titre de l'e-mail.

  • bodyObligatoire

    Contenu 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é (codequotation_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

📚 Documentation

Point d'accès

post/quotation/{Identifiant_du_devis}/order

Réponse de l'API

  • 204 OK

    Le devis a été confirmé. Un objet de typeCommandeest créé et retourné.

  • 403 Refusé

    Le devis n'a pas été confirmé. Le devis est, soit déjà signé (codequotation_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

get/quotation

Paramètres de la requête

  • state

    État du devis:closedpour les devis clôturés,runningpour les devis non-signés,expiredpour les devis dont la date de validité est expirée, etvalidatedpour 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éscount,totalettotal_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 typeRecherche 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

📚 Documentation

Point d'accès

post/quotation/line

Contenu de la requête

Réponse de l'API

  • 201 OK - Créé

    L'article a été ajouté au devis. Un objet de typeArticle de devisest 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

put/quotation/line/{Identifiant_de_l_article_initial}

Contenu de la requête

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

delete/quotation/line/{Identifiant_de_l_article_initial}

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

get/quotation/line/{Identifiant_de_l_article_initial}

Réponse de l'API

  • 200 OK

    L'article initial du devis a été trouvé. Un objet de typeArticle de devisest 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

get/quotation/line

Réponse de l'API

  • 200 OK

    Si des articles initiaux ont été préalablement créés, une liste d'objets de typeArticle de devisest 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 objetCommandeest retourné. Le fonctionnement est identique ensuite.

Créée une commande

Point d'accès

post/contact/{Identifiant_du_client}/order

Réponse de l'API

  • 201 OK - Créé

    La commande a été correctement créée. Un objet de typeCommandeest 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

post/folder/{Identifiant_du_dossier}/order

Réponse de l'API

  • 201 OK - Créé

    La commande a été correctement créée. Un objet de typeCommandeest 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

get/order/{Identifiant_de_la_commande}

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 typeCommandeest 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

get/order/{Identifiant_de_la_commande}/file

Paramètres de la requête

  • attachment

    Indicateur pour que l'en-têtecontent-disposition: attachmentsoit 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

📚 Documentation

Point d'accès

put/order/{Identifiant_de_la_commande}

Contenu de la requête

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 (codeorder_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

📚 Documentation

Point d'accès

post/order/{Identifiant_de_la_commande}/lock

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 (codeorder_closed) ou une facture a été créée pour cette commande et n'a pas été complétée (codeinvoice_runningavec 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

📚 Documentation

Point d'accès

delete/order/{Identifiant_de_la_commande}/lock

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 (codeorder_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

📚 Documentation

Point d'accès

get/order/{Identifiant_de_la_commande}/delivery/file

Paramètres de la requête

  • attachment

    Indicateur pour que l'en-têtecontent-disposition: attachmentsoit 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

get/order/{Identifiant_de_la_commande}/line/{Identifiant_de_l_article}

Réponse de l'API

  • 200 OK

    L'article de la commande a été trouvé. Un objet de typeArticle de commandeest 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

post/order/{Identifiant_de_la_commande}/line

Contenu de la requête

Réponse de l'API

  • 201 OK - Créé

    L'article a été ajouté à la commande. Un objet de typeArticle de commandecontenant l'article fraichement créé est retourné.

  • 403 Refusé

    L'article n'a pas été ajouté à la commande car la commande est clôturée (codeorder_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

put/order/{Identifiant_de_la_commande}/line/{Identifiant_de_l_article}

Contenu de la requête

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 (codeorder_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

delete/order/{Identifiant_de_la_commande}/line/{Identifiant_de_l_article}

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 (codequotation_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

📚 Documentation

Point d'accès

post/order/{Identifiant_de_la_commande}/invoice

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 typeFactureest retourné.

  • 403 Refusé

    Une facture ne peut pas être créée pour cette commande car la commande est cloturée (codeorder_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

get/invoice/{Identifiant_de_la_facture}

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 typeFactureest 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

get/invoice/{Identifiant_de_la_facture}/file

Paramètres de la requête

  • attachment

    Indicateur pour que l'en-têtecontent-disposition: attachmentsoit 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 (codeinvoice_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

📚 Documentation

Point d'accès

delete/invoice/{Identifiant_de_la_facture}

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 (codeinvoice_validated).

Exemple - Supprimer la facture 940

POST /invoice/940
Réponse de l'API
HTTP 204 OK

Annuler une facture

📚 Documentation

Point d'accès

post/invoice/{Identifiant_de_la_facture}/lock

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 (codeinvoice_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

📚 Documentation

Point d'accès

post/invoice/{Identifiant_de_la_facture}/stamp

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 (codeinvoice_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

delete/invoice/{Identifiant_de_la_facture}/line/{Identifiant_de_l_article}

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 (codeinvoice_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 dupourcentage d'escomptedéfini dans les conditions de paiement de la facture. La valeur ne peut pas être modifiée.

📚 Documentation

Point d'accès

post/invoice/{Identifiant_de_la_facture}/discount

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 (codeinvoice_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

delete/invoice/{Identifiant_de_la_facture}/discount

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 (codeinvoice_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

📚 Documentation

Point d'accès

post/invoice/{Identifiant_de_la_facture}/email

Contenu de la requête

  • contact_idObligatoire

    Identifiant du contact qui recevra l'email.

  • titleObligatoire

    Titre de l'e-mail.

  • bodyObligatoire

    Contenu 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 (codeinvoice_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

📚 Documentation

Point d'accès

get/invoice/{Identifiant_de_la_facture}/reminder-letter

Paramètres de la requête

  • attachment

    Indicateur pour que l'en-têtecontent-disposition: attachmentsoit 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 (codeinvoice_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

📚 Documentation

Point d'accès

get/invoice/{Identifiant_de_la_facture}/formal-reminder-letter

Paramètres de la requête

  • attachment

    Indicateur pour que l'en-têtecontent-disposition: attachmentsoit 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 (codeinvoice_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 dutaux d'acomptedé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

📚 Documentation

Point d'accès

post/order/{Identifiant_de_la_commande}/deposit

Réponse de l'API

  • 201 OK - Créé

    Une facture d'acompte est créée à partir de la commande. Un object de typeFactureest retourné.

  • 403 Refusé

    Une facture d'acompte ne peut pas être créée pour cette commande car la commande est cloturée (codeorder_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

put/invoice/{Identifiant_de_la_facture}/line/{Identifiant_de_l_article_-_acompte}

Contenu de la requête

  • descriptionOptionnel

    Libelléde l'article comprenant l'acompte

  • quantityOptionnel

    Quantitéde l'acompte de 1 à 99. Par exemple10pour 10%.

  • tax_rateOptionnel

    Taux de TVAde 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 (codeinvoice_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

get/invoice/{Identifiant_de_la_facture}/payment/{Identifiant_du_paiement}

Réponse de l'API

  • 200 OK

    Le paiement de la facture a été trouvé. Un objet de typePaiement de factureest 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

post/invoice/{Identifiant_de_la_facture}/payment

Contenu de la requête

Réponse de l'API

  • 201 OK - Créé

    Le paiement a été ajoutée à la facture. Un objet de typePaiement de factureest retourné.

  • 403 Refusé

    Le paiement n'a pas été ajouté à la facture car elle est, soit en préparation (codeinvoice_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

delete/invoice/{Identifiant_de_la_facture}/payment/{Identifiant_du_paiement}

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é decré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

post/contact

Contenu de la requête

  • sirenOptionnel

    Numéro SIRENde l'entreprise. Les propriétéscompany,description,address,postal_code,city,country_code,birth_dateetvat_nbde la requêtes seront ignorées et remplacées par les valeurs issues du registre national des entreprises.

  • companyOptionnel

    Booléen indiquant si le contact est une entreprise (VRAI) ou une personne physique (FAUX).

  • descriptionOptionnel

    Nom de l'entreprise ou nom de famille de la personne. Obligatoire si la propriétésirenn'est pas fournie.

  • firstnameOptionnel

    Prénomde la personne.

  • addressOptionnel
  • postal_codeOptionnel
  • cityOptionnel
  • country_codeOptionnel
  • birth_nameOptionnel

    Nom de naissancede la personne.

  • birth_cityOptionnel

    Ville de naissancede la personne.

  • birth_dateOptionnel

    Date de naissancede la personne ou date de création de la société.

  • birth_country_codeOptionnel
  • vat_nbOptionnel
  • ibanOptionnel
  • parent_idOptionnel

    Identifiant de l'entreprise pour laquelle la personne travaille.

  • emailOptionnel

    Adresse e-mail.

  • telOptionnel

    Numéro de téléphone principal.

  • tel2Optionnel

    Numéro de téléphone secondaire.

  • faxOptionnel

    Numéro de fax.

  • websiteOptionnel

    Adresse du site Internet.

  • commentOptionnel

    Commentaire.

  • roleOptionnel

    Rôle.

  • payment_termsOptionnel

    Conditions de paiementà utiliser pour les devis, commandes et factures créés pour ce contact

  • expense_class_idOptionnel

    Identifiant 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 typeContactest retourné.

  • 403 Refusé

    L'entreprise avec un numéro SIREN indentique existe dans le carnet d'adresse (codesiren_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 (codesiren_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

get/contact/{Identifiant_du_contact}

Réponse de l'API

  • 200 OK

    Le contact a été trouvée. Un objet de typeContactest 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ésdescription,address,postal_code,city,country_code,birth_dateetvat_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

put/contact/{Identifiant_du_contact}

Contenu de la requête

  • sirenOptionnel

    Numéro SIRENde l'entreprise. Les propriétéscompany,description,address,postal_code,city,country_codeetbirth_datede la requêtes seront ignorées et remplacées par les valeurs issues du registre national des entreprises.

  • descriptionOptionnel

    Nom de l'entreprise ou nom de famille de la personne.

  • firstnameOptionnel

    Prénomde la personne.

  • addressOptionnel
  • postal_codeOptionnel
  • cityOptionnel
  • country_codeOptionnel
  • birth_nameOptionnel

    Nom de naissancede la personne.

  • birth_cityOptionnel

    Ville de naissancede la personne.

  • birth_dateOptionnel

    Date de naissancede la personne ou date de création de la société.

  • birth_country_codeOptionnel
  • vat_nbOptionnel
  • ibanOptionnel
  • parent_idOptionnel

    Identifiant de l'entreprise pour laquelle la personne travaille.

  • emailOptionnel

    Adresse e-mail.

  • telOptionnel

    Numéro de téléphone principal.

  • tel2Optionnel

    Numéro de téléphone secondaire.

  • faxOptionnel

    Numéro de fax.

  • websiteOptionnel

    Adresse du site Internet.

  • commentOptionnel

    Commentaire.

  • roleOptionnel

    Rôle.

  • payment_termsOptionnel

    Conditions de paiementà utiliser pour les devis, commandes et factures créés pour ce contact

  • expense_class_idOptionnel

    Identifiant 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 (codesiren_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 (codesiren_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

delete/contact/{Identifiant_du_contact}

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 (codequotation_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

post/contact/{Identifiant_du_contact}/account

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 (codecontact_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

delete/contact/{Identifiant_du_contact}/account

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 (codecontact_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

post/material

Contenu de la requête

Réponse de l'API

  • 201 OK - Créé

    L'article a été créé et ajouté au catalogue. Un objet de typeArticleest 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

get/material/{Identifiant_de_l_article}

Réponse de l'API

  • 200 OK

    L'article a été trouvé. Un objet de typeArticleest 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

put/material/{Identifiant_de_l_article}

Contenu de la requête

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

delete/material/{Identifiant_de_l_article}

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 (codematerial_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 unprix 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

post/material/{Identifiant_de_l_article}/client/{Identifiant_du_client}

Contenu de la requête

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

delete/material/{Identifiant_de_l_article}/client/{Identifiant_du_client}

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

Lesobjetsretourné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_idNombre entier positif, Obligatoire

    Identifiant de l'entreprise.

  • idNombre entier positif, Obligatoire

    Identifiant de l'utilisateur.

  • tokenChaîne de caractères, Obligatoire

    Signature numérique de la session.

  • descriptionChaîne de caractères, Obligatoire

    Nom de famille de l'utilisateur.

  • firstnameChaîne de caractères

    Prénom de l'utilisateur.

  • emailChaîne de caractères, Obligatoire

    E-mail de l'utilisateur.

  • companyObjet, Obligatoire

    Entreprise rattachée au compte de l'utilisateur

Objet - Entreprise

  • sirenNombre entier positif, Obligatoire

    Numéro SIREN de l'entreprise.

  • descriptionChaîne de caractères, Obligatoire

    Nom de l'entreprise.

  • addressChaîne de caractères

    Adresse du siège social de l'entreprise.

  • postal_codeChaîne de caractères, Obligatoire

    Code postal du siège social de l'entreprise.

  • cityChaîne de caractères, Obligatoire

    Ville du siège social de l'entreprise.

  • country_codeCode pays, Obligatoire

    Pays du siège social de l'entreprise

  • emailChaine de caractères

    Adresse e-mail de l'entreprise.

  • telNuméro de téléphone

    Numéro de téléphone principal de l'entreprise.

  • tel2Numéro de téléphone

    Numéro de téléphone secondaire de l'entreprise.

  • faxNuméro de téléphone

    Numéro de télécopie de l'entreprise.

  • websiteChaine de caractères

    Site Internet de l'entreprise.

  • vat_nbChaine de caractères

    Numéro de TVA intra-communautaire de l'entreprise.

  • vatBooléen, Obligatoire

    Indicateur si l'entreprise est assujetti à la TVA.

  • quotation_valid_untilNombre entier positif, Obligatoire

    Nombre de jours pendant lesquels les devis sont valides.

  • deposit_rateNombre entier positif, Obligatoire

    Taux 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 exemple1000pour 10%.

  • tax_rateNombre entier positif, Obligatoire

    Taux 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 exemple2000pour 20%.

  • payment_termsObjet, Obligatoire

    Conditions de paiement à utiliser pour les devis, commandes et factures créés par l'entreprise. Objet de typeConditions de paiement.

  • client_create_folderBooléen, Obligatoire

    Indicateur si les clients ont l'autorisation de créer de nouveaux dossiers.

  • notif_folder_new_by_client_emailBooléen, Obligatoire

    Indicateur si un e-mail est envoyé au gestionnaire du dossier lorsqu'un nouveau dossier est créé par un client.

  • task_rateNombre entier positif, Obligatoire

    Taux initial utilisé lorsqu'une activité est facturée au client. Montant avec deux décimales et sans virgule. Par exemple5000pour 50,00 €.

  • task_rate_unitNombre entier positif, Obligatoire

    Nombre d'heures associé au taux.1pour un taux horaire,24pour un taux journalier.

Objet - Contact du carnet d'adresses

  • idNombre entier positif, Obligatoire

    Identifiant du contact.

  • companyBooléen, Obligatoire

    Booléen indiquant si le contact est une entreprise (VRAI) ou une personne physique (FAUX).FAUXpar défaut.

  • descriptionChaine de caractères, Obligatoire

    Nom de l'entreprise ou nom de famille de la personne.

  • firstnameChaine de caractères

    Prénom de la personne.

  • addressChaine de caractères

    Adresse postale du contact. Peut contenir des sauts de lignes.

  • postal_codeChaine de caractères

    Code postal du contact.

  • cityChaine de caractères

    Ville du contact.

  • country_codeCode pays

    Pays du contact.

  • birth_nameChaine de caractères

    Nom de naissance de la personne.

  • birth_cityChaine de caractères

    Ville de naissance de la personne.

  • birth_dateDate

    Date de naissance de la personne ou date de création de la société.

  • birth_country_codeChaine de caractères

    Code du pays de naissance selon la codificationISO-3166.

  • emailChaine de caractères

    Adresse e-mail.

  • telNuméro de téléphone

    Numéro de téléphone principal.

  • tel2Numéro de téléphone

    Numéro de téléphone secondaire.

  • faxNuméro de téléphone

    Numéro de fax.

  • websiteChaine de caractères

    Adresse du site Internet.

  • vat_nbChaine de caractères

    Numéro de TVA intracommunautaire de l'entreprise.

  • ibanChaine de caractères

    Numéro de compte bancaire au format IBAN.

  • commentChaine de caractères

    Commentaire.

  • roleChaine de caractères

    Rôle de la personne.

  • profile_img_urlURL

    Adresse de la photo à afficher.

  • profile_img_url_smallURL

    Adresse de la petite photo à afficher.

  • payment_termsObjet

    Conditions de paiement à utiliser pour les devis, commandes et factures créés pour ce contact. Objet de typeConditions de paiement.

  • expense_classObjet

    Catégorie de dépense à utiliser lorsqu'une dépense est créée pour ce contact. Objet de typeCatégorie de dépense.

  • parentObjet

    Entreprise pour laquelle la personne travaille. Objet de typeContact.

  • account_created_onDate

    Date à laquelle un compte a été créé pour cette personne.

  • account_last_connectionDate

    Date à laquelle la personne s'est connectée.

  • account_notif_typeNombre

    Type de notifications que l'utilisateur souhaite recevoir:NULLpour recevoir des notifications de l'ensemble des dossiers,1pour recevoir des notifications uniquement des dossiers dans lesquels l'utilisateur intervient.

  • account_notif_file_emailBooléen

    Indique si l'utilisateur souhaite recevoir un e-mail de notification lorsqu'un document est ajouté.

  • account_notif_msg_emailBooléen

    Indique si l'utilisateur souhaite recevoir un e-mail de notification lorsqu'un message est ajouté.

  • account_notif_event_emailBooléen

    Indique si l'utilisateur souhaite recevoir un e-mail de notification lorsqu'un événement est ajouté.

  • sirenNombre positif

    NuméroSIRENde l'entreprise

  • nicNombre positif

    NuméroNICde l'entreprise

  • name_commercialChaine de caractères

    Nom commercial de l'entreprise. Uniquement si le numéro SIREN a été saisi.

  • apeChaine de caractères

    Code APEde l'entreprise. Uniquement si le numéro SIREN a été saisi.

  • association_nbChaine de caractères

    Numé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_onDate

    Date à laquelle l'entreprise a été radiée. Uniquement si le numéro SIREN a été saisi.

  • last_imported_onDate

    Date à laquelle les informations ont été importées du registre national des entreprises. Uniquement si le numéro SIREN a été saisi.

Objet - Devis

  • idNombre entier positif, Obligatoire

    Identifiant interne du devis.

  • stateChaîne de caractères, Obligatoire

    Statut du devis. Les statuts possibles sont:closedlorsque le devis est clôturé,runningquand n'est pas signé etvalidatedlorsque le devis est signé.

  • numberNombre entier positif, Obligatoire

    Numéro du devis. Lorsque le devis est créé, un numéro unique est assigné au devis.

  • dateDate et heure, Obligatoire

    Date de création du devis.

  • commentChaîne de caractères

    Commentaire du devis.

  • valid_untilDate et heure, Obligatoire

    Date de fin de validité du devis.

  • shipping_dateDate et heure

    Date à laquelle les articles seront envoyés au client.

  • termsObjet

    Conditions générales de l'entreprise. Voir l'objetConditions générales.

  • clientObjet, Obligatoire

    Nom et adresse du client du devis.

  • client_originalObjet, Obligatoire

    Informations du client issues du carnet d'adresses. Le nom et l'adresse du client peuvent être différents de la propriétéclientsi les informations du devis ont été modifiées manuellement par l'utilisateur. Voir l'objetContact.

  • folderObjet

    Dossier dans lequel le devis a été classé. Voir l'objetDossier.

  • payment_termsObjet, Obligatoire

    Conditions de paiement du devis. Voir l'objetConditions de paiement

  • validated_byNombre entier positif

    Identifiant de l'utilisateur ayant signé le devis.

  • validated_onDate et heure

    Date à laquelle le devis a été signé.

  • orderObjet

    Commande 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_idObjet

    Informations du modèle à utiliser lors du rendu papier ou électronique du devis.

  • layout_footer_idNombre positif

    Identifiant du pied de page à intégrer dans le rendu.

  • linesListe

    Liste des articles du devis. Voir l'objetArticle du devis.

  • sendingsListe

    Informations des envois, lorsque le devis est envoyé au client. Voir l'objetEnvoi.

  • is_sentBooléen, Obligatoire

    Indicateur de l'envoi ou non du devis au client.

  • esignatureObjet, Obligatoire

    Informations sur la signature électronique du devis.

Objet - Article de devis

  • idNombre entier positif, Obligatoire

    Identifiant de l'article.

  • descriptionChaine de caractères, Obligatoire

    Libellé de l'article.

  • unit_priceNombre entier, Obligatoire

    Prix unitaire hors-taxes de l'article en centimes. Le montant peut être négatif pour représenter une remise. Par exemple10000pour 100,00€.

  • quantityNombre entier positif ou nul, Obligatoire

    Quantité. Montant avec deux décimales et sans virgule. Par exemple100pour 1.

  • discountNombre entier, Obligatoire

    Pourcentage 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-2000pour -20%.

  • tax_rateNombre entier positif ou nul, Obligatoire

    Pourcentage de TVA. Les pourcentages acceptés vont de 0 % à 100% inclus. Montant avec deux décimales et sans virgule. Par exemple2000pour 20%.

  • material_idNombre entier positif ou nul

    Identifiant de l'article du catalogue.

Objet - Recherche de devis

Objet - Commande

  • idNombre entier positif, Obligatoire

    Identifiant interne de la commande.

  • stateChaîne de caractères, Obligatoire

    Statut de la commande. Les statuts possibles sont:runningquand la commande est modifiable etclosedlorsque le commande est clôturée.

  • numberNombre entier positif, Obligatoire

    Numéro de la commande. Lorsque la commande est créée, un numéro unique est assigné au commande.

  • dateDate et heure, Obligatoire

    Date de création de la commande.

  • commentChaîne de caractères

    Commentaire de la commande.

  • shipping_dateDate et heure

    Date à laquelle les articles seront envoyés au client.

  • termsObjet

    Conditions générales de l'entreprise. Voir l'objetConditions générales.

  • clientObjet, Obligatoire

    Nom et adresse du client de la commande.

  • client_originalObjet, Obligatoire

    Informations du client issues du carnet d'adresses. Le nom et l'adresse du client peuvent être différents de la propriétéclientsi les informations de la commande ont été modifiées manuellement par l'utilisateur. Voir l'objetContact.

  • folderObjet

    Dossier dans lequel la commande a été classée. Voir l'objetDossier.

  • payment_termsObjet, Obligatoire

    Conditions de paiement de la commande. Voir l'objetConditions de paiement

  • quotationObjet

    Devis 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_idObjet

    Informations du modèle à utiliser lors du rendu papier ou électronique de la commande.

  • layout_footer_idNombre positif

    Identifiant du pied de page à utiliser dans le rendu de la commande.

  • linesListe

    Liste des articles de la commande. Voir l'objetArticle de la commande.

Objet - Article de commande

  • idNombre entier positif, Obligatoire

    Identifiant de l'article.

  • descriptionChaine de caractères, Obligatoire

    Libellé de l'article.

  • unit_priceNombre entier, Obligatoire

    Prix unitaire hors-taxes de l'article en centimes. Le montant peut être négatif pour représenter une remise. Par exemple10000pour 100,00€.

  • quantityNombre entier positif ou nul, Obligatoire

    Quantité. Montant avec deux décimales et sans virgule. Par exemple100pour 1.

  • discountNombre entier, Obligatoire

    Pourcentage 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-2000pour -20%.

  • tax_rateNombre entier positif ou nul, Obligatoire

    Pourcentage de TVA. Les pourcentages acceptés vont de 0 % à 100% inclus. Montant avec deux décimales et sans virgule. Par exemple2000pour 20%.

  • material_idNombre entier positif ou nul

    Identifiant de l'article du catalogue.

  • task_idNombre entier positif ou nul

    Identifiant de l'activitélorsque l'article correspond à une activité.

  • expense_idNombre entier positif ou nul

    Identifiant de ladépenselorsque l'article correspond à une dépense que l'utilisateur souhaite facturer au client.

  • invoice_idNombre entier positif ou nul

    Identifiant de lafacturelorsque l'article a été facturé.

Objet - Facture

  • idNombre entier positif, Obligatoire

    Identifiant interne de la facture.

  • stateChaîne de caractères, Obligatoire

    Statut de la facture. Les statuts possibles sont:draftquand la facture est en préparation,validatedlorsque le facture est validée etcancelledquand la facture a été annulée.

  • numberNombre entier positif

    Numéro de la facture. Uniquement lorsque la facture est validée.

  • dateDate et heure, Obligatoire

    Date de création de la facture.

  • vatBooléen, Obligatoire

    Indicateur si l'entreprise qui émet la facture est d'assujettie à la TVA.

  • due_dateDate

    Date maximale à laquelle la facture doit être réglée. La valeur est présente uniquement lorsque la facture est validée.

  • dueNombre entier positif ou nul

    Montant restant à régler. La valeur est présente uniquement lorsque la facture est validée.

  • depositBooléen, Obligatoire

    Indicateur si la facture est une facture d'acompte.

  • deposit_invoice_idNombre entier positif

    Identifiant de la facture ayant ajouté en déduction l'acompte. Pour les factures d'acompte uniquement.

  • discount_byNombre entier positif

    Identifiant de l'utilisateur ayant ajouté l'escompte à facture. Présent uniquement si un escompte a été ajouté à la facture.

  • discount_onDate

    Date à laquelle l'escompte à été ajoutée à la facture. Présent uniquement si un escompte a été ajouté à la facture.

  • termsObjet

    Conditions générales de l'entreprise. Voir l'objetConditions générales.

  • clientObjet, Obligatoire

    Nom et adresse du client de la facture.

  • client_originalObjet, Obligatoire

    Informations du client issues du carnet d'adresses. Voir l'objetContact.

  • folderObjet

    Dossier dans lequel la facture a été classée. Voir l'objetDossier.

  • payment_termsObjet, Obligatoire

    Conditions de paiement de la facture. Voir l'objetConditions de paiement

  • orderObjet

    Commande ayant générée la facture. Contient le statut de la commande, son numéro et sa date de création.

  • layout_idObjet

    Informations du modèle à utiliser lors du rendu papier ou électronique de la facture.

  • layout_footer_idNombre positif

    Identifiant du pied de page à utiliser dans le rendu de la facture.

  • linesListe

    Liste des articles de la facture. Voir l'objetArticle de la facture.

  • payment_linesListe

    Liste des paiement effectués par le client. Voir l'objetPaiement de facture.

  • sendingsListe

    Informations des envois, lorsque la facture est envoyée au client. Voir l'objetEnvoi.

Objet - Article de facture

  • idNombre entier positif, Obligatoire

    Identifiant de l'article.

  • descriptionChaine de caractères, Obligatoire

    Libellé de l'article.

  • unit_priceNombre entier, Obligatoire

    Prix unitaire hors-taxes de l'article en centimes. Le montant peut être négatif pour représenter une remise. Par exemple10000pour 100,00€.

  • quantityNombre entier positif ou nul, Obligatoire

    Quantité. Montant avec deux décimales et sans virgule. Par exemple100pour 1.

  • discountNombre entier, Obligatoire

    Pourcentage 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-2000pour -20%.

  • tax_rateNombre entier positif ou nul, Obligatoire

    Pourcentage de TVA. Les pourcentages acceptés vont de 0 % à 100% inclus. Montant avec deux décimales et sans virgule. Par exemple2000pour 20%.

  • order_line_idNombre entier positif ou nul, Obligatoire

    Identifiant de l'article de la commande.

  • deposit_idNombre entier négatif ou nul

    Identifiant de lafacture d'acomptelorsque un acompte a été créé précédemment à cette facture.

  • early_payment_discountBooléen, Obligatoire

    Indicateur si l'article correspond à un escompte

Objet - Paiement de facture

  • idNombre entier positif, Obligatoire

    Identifiant interne du paiement.

  • received_onDate, Obligatoire

    Date à laquelle le paiement a été effectué par le client.

  • amountDate, Obligatoire

    Montant en centimes payé par le client. Par exemple10000pour 100,00€.

  • feeNombre entier positif ou nul, Obligatoire

    Frais en centimes de la transaction. Par exemple120pour 1,20€.

  • methodChaîne de caractères, Obligatoire

    Type de paiement:cashpour Espèces,wire_transferpour Virement bancaire,chequepour Chèque,credit_cardpour Carte Bancaire,direct_debitpour Prélèvement,paypalpour PayPal.

  • referenceChaîne de caractères

    Référence de la transaction.

  • checked_onDate

    Date à laquelle le paiement a été encaissé.

  • cardDate

    Informations de la carte bancaire dans le cas d'un paiement par carte bancaire. Contient les propriétés:brandavec le type de la carte,last4avec les quatres derniers numéros de la carte,exp_monthetexp_yearavec le mois et l'année d'expiration de la carte.

Objet - Conditions de paiement

  • days_nbNombre entier positif ou nul, Obligatoire

    Nombre en jours accordé au client pour régler la facture. Zéro dans le cas d'un paiement comptant.

  • end_of_monthBooléen, Obligatoire

    Indicateur de fin de mois permettant de retarder l'échéance au dernier jour du mois.

  • early_payment_discount_rateNombre entier positif ou nul, Obligatoire

    Escompte 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 exemple100pour 1% ou550pour 5,5%.

Objet - Envoi

  • tenant_idNombre entier positif, Obligatoire

    Identifiant de l'envoi.

  • titleChaine de caractères, Obligatoire

    Titre du courrier/courriel.

  • bodyChaine de caractères, Obligatoire

    Corps du courrier/courriel.

  • created_byChaine de caractères, Obligatoire

    Identifiant de l'utilisateur ayant effectué l'envoi.

  • created_onChaine de caractères, Obligatoire

    Date à laquelle la demande d'envoi a été faite.

  • contactObjet, Obligatoire

    Destinataire du courrier/courriel.

Objet - Article du catalogue

  • idNombre entier positif, Obligatoire

    Identifiant de l'article.

  • descriptionChaîne de caractères, Obligatoire

    Libellé de l'article.

  • unit_priceNombre entier positif ou nul, Obligatoire

    Prix unitaire hors-taxes en centimes. Par exemple10000pour 100,00€.

  • tax_rateNombre entier positif ou nul, Obligatoire

    Pourcentage 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 exemple2000pour 20%.

  • stockNombre entier positif ou nul, Obligatoire

    Quantité en stock. Montant avec deux décimales et sans virgule. Par exemple1000pour 10 articles.

  • safety_stockNombre entier positif ou nul, Obligatoire

    Stock de sécurité. Quantité en-desous de laquelle l'article doit être recommandé. Montant avec deux décimales et sans virgule. Par exemple200pour 2 articles.

  • commentChaîne de caractères, Obligatoire

    Texte descriptif de l'article.

  • manufacturerObjet, Obligatoire

    Constructeur de l'article. Objet de typeContactsimplifié.

Objet - Activité

  • idNombre entier positif, Obligatoire

    Identifiant de l'activité.

Objet - Dépense

  • idNombre entier positif, Obligatoire

    Identifiant de la dépense.