API ioi

Mise à jour le 18 septembre 2026·

L’API ioi permet d’exploiter les classes ioi suivantes :

  • ioi Customer,
  • ioi Supplier,
  • ioi Item,
  • ioi Sales Quote,
  • ioi Sales Order,
  • ioi Sales Delivery,
  • ioi Sales Invoice,
  • ioi Purchases Price Request,
  • ioi Purchases Order,
  • ioi Purchases Receipt,
  • ioi Purchases Invocie.

→ Elle fonctionne sur le même principe que l’API REST de FRAPPE : https://frappeframework.com/docs/user/en/api/rest

Authentification et permissions #

Mêmes principes que l’API REST de FRAPPE.

→ Pour l’authentification :

  1. Token Based Authentication,
  2. Password Based Authentication,
  3. Access Token.

→ Pour les permissions, on se base sur les permissions utilisateurs par doctype (standard).

Structure du body #

→ Type : Body raw de type json.

Exemple :

{
    "mandatory_field": "ID",
    "my_data":{
        ""overriding_field": "DATE"
    },
    "line_detail": [{
           "mandatory_field": "ITEM",
           "my_data": {
                "overriding_field": "PRICE"
           }
        }
    ]
}

→ Un des avantages d’utiliser les classes est de bénéficier des populates de l’objet.

Exemple : Lorsque l’on indique la référence d’un client, toutes les zones concernant ce client seront complétées par le populate du client.

→ Par ailleurs, toutes les données se trouvant dans l’objet « my_data » viendront écraser les données du populate.

Exemple : Si l’on a un populate du client mais que l’on veut quand même forcer la valeur de la condition de vente, il faudra indiquer :

    "my_data":{
        "sales_condition_id": "NORMAL"
    }

L’objet « line_detail » est un tableau destiné pour les lignes de détails. Cela concerne uniquement les documents de ventes et d’achats. Le principe expliqué ci-dessus est le même pour les lignes de détails. En résumé :

  • On retrouve dans le « main » objet : les champs obligatoires et les champs qui vont déclencher un populate.
  • On retrouve dans le « my_data » objet : tous les autres champs.
  • On retrouve dans le « line_detail » tableau : les lignes de détails.

Liste des populates #

Customer/Supplier #

  • full_name
  • mode
  • postal_code_id

Sales / Purchases documents #

  • document_date
  • period_id
  • order_customer_id / order_supplier_id
  • order_customer_contact_id order_supplier_contact_id
  • delivery_customer_id / delivery_supplier_id
  • delivery_customer_contact_id / delivery_supplier_contact_id
  • invoice_customer_id / invoice_supplier_id
  • invoice_customer_contact_id / invoice_supplier_contact_id
  • currency_id
  • currency_rate
  • currency_rate_inv
  • cashdesk_id

Detail : #

  • sales_condition_id / purchases_condition_id
  • item_id
  • manufacter_ref
  • unit_id
  • unit_price
  • fixed_price
  • base_discount
  • extra_discount
  • value_discount
  • unit_price_tvac
  • account_id
  • vat_type
  • vat_service
  • vat_matching_id
  • vat_rate
  • vatcode_id
  • warehouse_id

CRUD Operations #

Create #

Méthode : POST

Requête : api/method/silicon_ioi.api.resource/:doctype

ioi Customer #

Requête : api/method/silicon_ioi.api.resource/ioi Customer

→ Body :

{
    "identification": "ACE",
    "ioistatus": 4,
    "full_name": "ACE SA",
    "my_data":{
        "address": "Avenue Louise 222",
        "city": "Brussel",
        "postal_code": "1010",
        "country_id": "FR",
        "phone_1": "02\/758.25.69",
        "email": "info@ace.be",
        "language": "fr",
        "currency_id": "EUR",
        "family_1_id": "INDUSTRIE",
        "payment_term_id": "30,J",
        "general_memo": "<!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01 Transitional\/\/EN\">\n<html>\n<head>\n<title><\/title>\n<meta http-equiv=\"Content-Type\" content=\"text\/html; charset=iso-8859-1\">\n<\/head>\n\n<body>\n\n<div align=\"left\"><font face=\"Courier new\" size=\"2\" color=\"#000000\"><u><i><b>TEST Rtf<br><\/b><\/i><\/u>\n<\/div>\n<div align=\"center\">je test la conversio du rtf en hml via la dll<\/font><\/div>\n<\/body>\n<\/html>",
        "vat_number": "BE432-112-630",
        "dimension_type": "N",
        "website": "www.ace.be",
        "delivery_condition_id": "EXWORKS",
        "delivery_copy": 1,
        "invoice_copy": 1,
        "mode": 2,
        "id_ioi": "ACE",
        "last_sync_dt_ioi": "2023-04-26T13:25:06.210Z",
        "sync_dt_ioi": "2023-04-24T09:36:39.923Z"
    }
}

ioi Sales Order #

Requête : api/method/silicon_ioi.api.resource/ioi Sales Order

→ Body :

{
    "prefix_id": "CMD",
    "document_date": "2023-10-12",
    "ioistatus": 1,
    "order_customer_id": "VOLVO",
    "delivery_customer_id": "GARDENANS",
    "invoice_customer_id": "GARDENANS",
    "currency_id": "EUR",
    "my_data":{
        "sales_condition_id": "DISTRIB",
        "delivery_condition_id": "NORMAL",
        "language": "fr",
        "external_ref": "TEST external ref",
        "shipping_datetime": "2023-10-16 23:00:11.000",
        "expected_arrival_on": "2023-10-23",
        "responsible_id": "Administrator",
        "base_discount": 0,
        "extra_discount": 0,
        "financial_discount": 0,
        "vat_type": "NAT",
        "spec_vat_rate": 21,
        "wo_vat1": 810,
        "wo_vat2": 0,
        "wo_vat3": 0,
        "wo_vat4": 0,
        "wo_vat5": 0,
        "base_vat1": 810,
        "base_vat2": 0,
        "base_vat3": 0,
        "base_vat4": 0,
        "base_vat5": 0,
        "vat_type1": "NAT",
        "rate_vat1": 21,
        "rate_vat2": 0,
        "rate_vat3": 0,
        "rate_vat4": 0,
        "rate_vat5": 0,
        "vat1": 170.1,
        "vat2": 0,
        "vat3": 0,
        "vat4": 0,
        "vat5": 0,
        "inc_vat1": 980.1,
        "inc_vat2": 0,
        "inc_vat3": 0,
        "inc_vat4": 0,
        "inc_vat5": 0,
        "sales_agent_id": "ANDRE",
        "credit_mode": 0,
        "payment_term_id": "FDM,30,J",
        "asked_arrival_date": "2015-10-13"
    },
    "line_detail": [{
           "sales_condition_id": "DISTRIB",
           "item_id": "B02-LAWNMOWER",
           "unit_id": "PCS",
           "ordered_qty": 1,
           "unit_price": 1350,
           "unit_price_tvac": 1633.5,
           "base_discount": 10,
           "extra_discount": 5,
           "value_discount":5,
           "vat_type": "NAT",
           "vat_service": "G",
           "vat_rate": 21,
           "my_data": {
                "expected_arrival_on": "2023-10-20 12:30:45",
                "warehouse_id": "BXL",
                "to_execute": 0,
                "shipping_datetime": "2023-10-15 18:57:11.000",
                "weight": 1000,
                "external_ref": 10,
                "item_cost": 572.22,
                "item_cost_std_stamp": 485.293105,
                "value_paid": 810,
                "barcode_reference": "1234567001609",
                "reserved_qty": 10,
                "free_part_qty": 0
           }
        }
    ]
}

Read #

Méthode : GET

Requête : api/method/silicon_ioi.api.resource/:doctype/:name

ioi Customer #

Requête : api/method/silicon_ioi.api.resource/silicon_ioi.api.resource/ACE

→ Body :

{
    "data": {
        "name": "ACE",
        "owner": "Administrator",
        "creation": "2023-10-25 14:29:39.937475",
        "modified": "2023-10-25 14:29:40.216554",
        "modified_by": "Administrator",
        "docstatus": 0,
        "idx": 0,
        "is_warning": 0,
        "warninfo": "",
        "identification": "ACE",
        "id_prefix": null,
        "id_number": 0,
        "lib_ioistatus": "Active",
        "full_name": "ACE SA",
        "language": "en",
        "supplier_id": null,
        "mode": "0",
        "currency_id": "EUR",
        "address": null,
        "postal_code_id": null,
        "latitude": 0.0,
        "postal_code": "1000",
        "city": "Brussel",
        "longitude": 0.0,
        "country_id": "FR",
        "contact_title": null,
        "contact_lastname": null,
        "contact_firstname": null,
        "phone_1": "02/758.25.69",
        "email": "info@ace.be",
        "phone_2": null,
        "website": "www.ace.be",
        "select_image": null,
        "vat_number": "BE432-112-630",
        "external_reference": null,
        "vat_matching_id": null,
        "duns_number": null,
        "vat_type": "NAT",
        "payment_term_id": "30,J",
        "payment_reminder_category_id": null,
        "payment_last_reminder_date": null,
        "payment_last_reminder_level": 0,
        "payment_reminder_last_level": null,
        "accounting_collective_account_id": null,
        "accounting_default_account_id": null,
        "specific_vat_code_id": null,
        "financial_discount": 0.0,
        "financial_delay": 0,
        "financial_discount_mode": "0",
        "domiciliation_sign_date": null,
        "domiciliation_active": 0,
        "domiciliation_id": null,
        "domiciliation_type": null,
        "sales_catalog_id": "STANDARD",
        "sales_condition_id": "NORMAL",
        "specific_condition_id": null,
        "delivery_condition_id": "EXWORKS",
        "delivery_delay": 0,
        "base_discount": 0.0,
        "extra_discount": 0.0,
        "sales_agent_id": null,
        "default_order_to": null,
        "delivery_flow": "0",
        "default_deliver_to": null,
        "default_invoice_to": null,
        "end_user_id": null,
        "not_for_order": 0,
        "invoice_mode": "PAPER",
        "summary_invoice": 0,
        "not_for_delivery": 0,
        "invoice_email": null,
        "delivery_copy": 1,
        "edi_identification": null,
        "not_for_invoice": 0,
        "invoice_format": "PDF",
        "invoice_copy": 1,
        "document_calc_mode": "0",
        "batch_invoice_grouping_mode": "0",
        "batch_invoice_grouping_cadency": 0,
        "batch_invoice_grouping_except_bo": 0,
        "family_1_id": "INDUSTRIE",
        "family_2_id": null,
        "marketing_action_disabled": 0,
        "activity_summary": "",
        "sector_summary": "",
        "sla_category_id": null,
        "geographic_index_id": null,
        "distance": 0,
        "visible": 0,
        "sale_name": null,
        "vweb": null,
        "id_nav": null,
        "ioistatus": "2",
        "imported_data": 1,
        "ioiuserstatus": "0",
        "lib_ioiuserstatus": null,
        "accounting_memo": null,
        "general_memo": "\n\n\n<title></title>\n<meta content=\"text/html; charset=iso-8859-1\">\n\n\n\n\n<div align=\"left\"><font color=\"#000000\" face=\"Courier new\" size=\"2\"><u><i><b>TEST Rtf<br></b></i></u>\n</font></div><font color=\"#000000\" face=\"Courier new\" size=\"2\">\n</font><div align=\"center\"><font color=\"#000000\" face=\"Courier new\" size=\"2\">je test la conversio du rtf en hml via la dll</font></div>\n\n",
        "reconciliation_number": 0,
        "doctype": "ioi Customer",
        "bank_detail": [],
        "activity_detail": [],
        "sector_detail": [],
        "preconfigured_imputations": [],
        "cust_discount_detail": []
    }
}

ioi Sales Order #

Requête : api/method/silicon_ioi.api.resource/silicon_ioi.api.resource/ioi Sales Order?filters=[[“order_customer_id”,“=”,“GARDENANS”]]&fields=[“name”, “total_htva”, “currency_id”]

→ Body :

{
    "data": [
        {
            "name": "CMD • 2020000040",
            "total_htva": 36000.0,
            "currency_id": "EUR"
        },
        {
            "name": "CMD • 2020000055",
            "total_htva": 19980.0,
            "currency_id": "EUR"
        },
        {
            "name": "CMD • 2020000071",
            "total_htva": 600.0,
            "currency_id": "EUR"
        },
        {
            "name": "ORD • 2020000027",
            "total_htva": 133.88,
            "currency_id": "EUR"
        },
        {
            "name": "ORD • 2020000042",
            "total_htva": 918.0,
            "currency_id": "EUR"
        }
    ]
}

Update #

Méthode : PUT

Requête : api/method/silicon_ioi.api.resource/:doctype/:name

ioi Customer #

Requête : api/method/silicon_ioi.api.resource/ioi Customer/ACE

→ Body :

{
    "my_data":
        {
        "city": "Brussel",
        "postal_code": "1000",
        "country_id": "BE"
        }
}

ioi Sales Order #

Requête : api/method/silicon_ioi.api.resource/ioi Sales Order/CMD • 2020000087

→ Body :

{
    "document_date": "2050-10-12",
    "order_customer_id": "GARDENANS",
    "line_detail":[{
        "name": "d2c19403c1",
        "unit_price": 1400,
        "my_data": {
            "weight": 1100
        }
    }
    ]
}

Delete #

Méthode : DELETE

Requête : api/method/silicon_ioi.api.resource/:doctype/:name

ioi Customer #

Requête : api/method/silicon_ioi.api.resource/ioi Customer/ACE

→ Réponse :

{
    "message": "ok"
}

ioi Sales Order #

Requête : api/method/silicon_ioi.api.resource/ioi Sales Order/CMD • 2020000087

→ Réponse :

{
    "message": "ok"
}

Changement de statut #

Méthode : POST

Requête : api/method/silicon_ioi.api.resource/:doctype/:name?run_method=change_status

→ Body :

{
    "ioistatus": 2
}

Changement du statut utilisateur #

Méthode : POST

Requête : api/method/silicon_ioi.api.resource/:doctype/:name?run_method= change_user_status

→ Body :

{
    "ioiuserstatus": 2
}

Méthodes spécifiques #

Il est possible aussi de créer un document à partir d’un autre.

Méthode : POST

Requête : api/method/silicon_ioi.api.resource/:doctype/:name?run_method=method_name

→ Remarques : normalement il n’y a pas besoin de paramètres dans le body pour utiliser ces méthodes, sauf 2 exceptions pour create_delivery et add_lines_to_delivery dans lesquelles il faut indiquer en plus le paramètre qty_rule (voir exemple). Ci-dessous les valeurs acceptées de qty_rule :

  • 1 : Fill limited to site stock,
  • 2 : Fill limited to available,
  • 3 : Fill limited to scheduled available (par défaut),
  • 5 : Fill with order qty.

Création d’une livraison à partir d’une commande #

Requête : api/method/silicon_ioi.api.resource/ioi Sales Order/CMD • 2020000087?run_method=create_delivery

→ Body :

{
    "qty_rule": 3
}

Ajout d’une ligne détail dans une livraison à partir d’une commande #

Requête : api/method/silicon_ioi.api.resource/ioi Sales Order/CMD • 2020000087?run_method=add_lines_to_delivery

→ Body :

{
    "name": "LIV • 2020000054",
    "qty_rule": 3
}

Liste des méthodes spécifiques #

ioi Sales/Purchases Quote #

  • create_order
  • add_lines_to_order

ioi Sales Order #

  • create_delivery
  • add_lines_to_delivery
  • create_invoice
  • add_lines_to_invoice

ioi Purchases Order #

  • create_receipt
  • add_lines_to_receipt
  • create_invoice
  • add_lines_to_invoice

ioi Sales/Purchases Delivery/Receipt #

  • create_invoice
  • add_lines_to_invoice

Contrat #

Pour créer un contrat, il faut ajouter le paramètre document_type: CONTRACT dans l’objet principal du doctype ioi Sales Quote.

Méthode : POST

Requête : api/method/silicon_ioi.api.resource/ioi Sales Quote

→ Body :

{
    "prefix_id": "CTC",
    "document_date": "2023-10-12",
    "ioistatus": 1,
    "order_customer_id": "ASMA",
    "delivery_customer_id": "ASMA",
    "invoice_customer_id": "ASMA",
    "currency_id": "EUR",
    "document_type": "CONTRACT",
    "my_data":{
        "sales_condition_id": "NORMAL",
        "sales_catalog_id": "STANDARD",
        "delivery_condition_id": "NORMAL",
        "language": "fr",
        "external_ref": "TEST external ref",
        "shipping_datetime": "2023-10-16 23:00:11.000",
        "expected_arrival_on": "2023-10-23",
        "responsible_id": "Administrator",
        "base_discount": 0,
        "extra_discount": 0,
        "financial_discount": 0,
        "vat_type": "NAT",
        "wo_vat1": 810,
        "wo_vat2": 0,
        "wo_vat3": 0,
        "wo_vat4": 0,
        "wo_vat5": 0,
        "base_vat1": 810,
        "base_vat2": 0,
        "base_vat3": 0,
        "base_vat4": 0,
        "base_vat5": 0,
        "vat_type1": "NAT",
        "rate_vat1": 21,
        "rate_vat2": 0,
        "rate_vat3": 0,
        "rate_vat4": 0,
        "rate_vat5": 0,
        "vat1": 170.1,
        "vat2": 0,
        "vat3": 0,
        "vat4": 0,
        "vat5": 0,
        "inc_vat1": 980.1,
        "inc_vat2": 0,
        "inc_vat3": 0,
        "inc_vat4": 0,
        "inc_vat5": 0,
        "sales_agent_id": "ANDRE",
        "credit_mode": 0,
        "payment_term_id": "FDM,30,J",
        "asked_arrival_date": "2015-10-13"
    },
    "line_detail": [{
           "item_id": "B02-LAWNMOWER",
           "unit_id": "PCS",
           "quoted_qty": 5,
           "my_data": {
                "expected_arrival_on": "2023-10-20 12:30:45",
                "warehouse_id": "BXL",
                "spec_vat_rate": 21,
                "to_execute": 0,
                "shipping_datetime": "2023-10-15 18:57:11.000",
                "weight": 1000,
                "external_ref": 10,
                "item_cost": 572.22,
                "item_cost_std_stamp": 485.293105,
                "value_paid": 810,
                "barcode_reference": "1234567001609",
                "reserved_qty": 10,
                "free_part_qty": 0
           }
        }
    ]
}

Credit Note #

Pour créer une note de crédit, il faut ajouter le paramètre document_type: CNOTE dans l’objet principal du doctype ioi Sales Invoice.

Méthode : POST

Requête : api/method/silicon_ioi.api.resource/ioi Sales Invoice

→ Body :

{
    "prefix_id": "NDC",
    "document_date": "2023-10-12",
    "ioistatus": 1,
    //"order_customer_id": "VOLVO",
//    "delivery_customer_id": "ASMA",
    "invoice_customer_id": "ASMA",
    "document_type": "CNOTE",
    "currency_id": "EUR",
    "my_data":{
        "sales_condition_id": "DISTRIB",
        "sales_catalog_id": "STANDARD",
        "delivery_condition_id": "NORMAL",
        "language": "fr",
        "external_ref": "TEST external ref",
        "shipping_datetime": "2023-10-16 23:00:11.000",
        "expected_arrival_on": "2023-10-23",
        "responsible_id": "Administrator",
        "base_discount": 0,
        "extra_discount": 0,
        "financial_discount": 0,
        "vat_type": "NAT",
        "wo_vat1": 810,
        "wo_vat2": 0,
        "wo_vat3": 0,
        "wo_vat4": 0,
        "wo_vat5": 0,
        "base_vat1": 810,
        "base_vat2": 0,
        "base_vat3": 0,
        "base_vat4": 0,
        "base_vat5": 0,
        "vat_type1": "NAT",
        "rate_vat1": 21,
        "rate_vat2": 0,
        "rate_vat3": 0,
        "rate_vat4": 0,
        "rate_vat5": 0,
        "vat1": 170.1,
        "vat2": 0,
        "vat3": 0,
        "vat4": 0,
        "vat5": 0,
        "inc_vat1": 980.1,
        "inc_vat2": 0,
        "inc_vat3": 0,
        "inc_vat4": 0,
        "inc_vat5": 0,
        "sales_agent_id": "ANDRE",
        "credit_mode": 0,
        "payment_term_id": "FDM,30,J",
        "asked_arrival_date": "2015-10-13"
    },
    "line_detail": [{
        "sales_condition_id": "DISTRIB",
        "sales_catalog_id": "STANDARD",
           "item_id": "B02-LAWNMOWER",
           "unit_id": "PCS",
           "invoiced_qty": 1,
//           "unit_price": 1350,
//            "vat_type": "NAT",
            "vat_rate": 21,
//            "vat_code":
           "my_data": {
                "expected_arrival_on": "2023-10-20 12:30:45",
                "warehouse_id": "BXL",
                "spec_vat_rate": 21,
                "to_execute": 0,
                "shipping_datetime": "2023-10-15 18:57:11.000",
                "weight": 1000,
                "value_paid": 810,
                "barcode_reference": "1234567001609",
                "reserved_qty": 0,
                "free_part_qty": 0
           }
        }
    ]
}

Cette page vous a-t-elle aidé ?