L’API est accessible via l’URL https://api.lemotel.fr/v1
Les paramètres sont à passer en POST.
curl -X POST https://api.lemotel.fr/v1/etablissement \
-H "Content-Type: application/json" \
-d '{"id_etablissement":"12871","token":"IiY27r0u9MjZXwaKvBLT6Wn4gmGHzlP3"}'
/etablissement
Chaque établissement possède un ou plusieurs points de vente. Dans M-System, les points de ventes s’appellent des caisses.
Récupère la liste des points de vente du compte, ainsi que quelques informations générales.
| Champ | Type | Description |
|---|---|---|
| id_etablissement | String | Obligatoire. Le numéro de compte du client. Il se trouve en bas de la page ‘Profil’ du back office. |
| token | String | Obligatoire. Le token du client. Une chaîne de caractères que que client demande à M-System. |
Un objet JSON avec la structure suivante
{
"message":"OK",
"nom":"Démo FOOD",
"caisses":[
{
"id_caisse":"11943",
"libelle":"Caisse 1"
}
],
"types_paiement":[
{
"libelle":"Espèces"
},
{
"libelle":"CB"
}
]
}
| Champ | Type | Description |
|---|---|---|
| message | String | Des informations sur l’éxecution de l’appel. “OK” en cas de succès, un message d’erreur sinon |
| nom | String | Le nom de l’établissement |
| caisses | JSON Array | Un tableau JSON contenant la liste des points de vente de l’établissement |
| caisses.id_caisse | String | L’identifiant de la caisse |
| caisses.libelle | String | Le libellé de la caisse |
| types_paiement | JSON Array | Un tableau contenant les libellés des types de paiement |
| types_paiement.libelle | String | Le libellé du type de paiement |
/produits
Récupère la liste des produits du compte. Tous les produits actifs sont renvoyés.
| Champ | Type | Description |
|---|---|---|
| id_etablissement | String | Obligatoire. Le numéro de compte du client. Il se trouve en bas de la page ‘Profil’ du back office. |
| token | String | Obligatoire. Le token du client. Une chaîne de caractères que que client demande à M-System. |
Un onjet JSON avec la structure suivante
{
"message":"OK",
"data":[
{
"id_produit":"483130",
"id_categorie":"850",
"categorie":"CHAUD",
"libelle":"PIZZA",
"prix_ttc":"9.00",
"taux_tva":"0.100"
},
{
"id_produit":"483131",
"id_categorie":"848",
"categorie":"SALÉ",
"libelle":"BURGER",
"prix_ttc":"5.00",
"taux_tva":"0.100"
}
]
}
| Champ | Type | Description |
|---|---|---|
| message | String | Des informations sur l’éxecution de l’appel. “OK” en cas de succès, un message d’erreur sinon |
| data | JSON Array | Un tableau JSON contenant la liste des produits |
| data.id_produit | String | L’identifiant du produit |
| data.id_categorie | String | L’identifiant de la catégorie du produit |
| data.categorie | String | La catégorie du produit |
| data.libelle | String | Le libellé du produit |
| data.taux_tva | String | Le taux de TVA du produit. 0.1 = TVA 10% |
/ventes
Récupère la liste des ventes sur une période donnée. Les résultats sont renvoyés de la table du journal par rowid croissant. Les résultats sont paginés par paquets de 500.
| Champ | Type | Description |
|---|---|---|
| id_etablissement | String | Obligatoire. Le numéro de compte du client. Il se trouve en bas de la page ‘Profil’ du back office. |
| token | String | Obligatoire. Le token du client. Une chaîne de caractères que que client demande à M-System. |
| date_debut | String | Obligatoire. La date de début de la période des ventes à récupérer. Format à saisir : YYYY-MM-DD |
| date_fin | String | Obligatoire. La date de fin de la période des ventes à récupérer. Format à saisir : YYYY-MM-DD |
| current_page | String | Optionnel. Le numéro de page du journal à récupérer. Si il n’est pas spécifié, la page 1 est renvoyée. |
| id_caisse | String | Optionnel. Filtre pour ne récupérer les ventes que sur certaines caisses. Séparateur : virgule |
Un onjet JSON avec la structure suivante
{
"message":"OK",
"total_pages":31,
"current_page":6,
"data":[
{
"id":"706519",
"id_transaction":"175",
"date_transaction":"2020-05-01 12:08:08",
"id_produit":"483146",
"produit":"MARGARITA",
"id_caisse":"11943",
"caisse":"Caisse 1",
"type_paiement":"CB",
"quantite":"1.0000",
"montant_ttc":"7.00",
"montant_ht":"6.3636364",
"taux_tva":"0.100"
},
{
"id":"706565",
"id_transaction":"176",
"date_transaction":"2020-05-01 15:30:00",
"id_produit":"483145",
"produit":"TARTE",
"id_caisse":"11943",
"caisse":"Caisse 1",
"type_paiement":"CB",
"quantite":"2.0000",
"montant_ttc":"6.00",
"montant_ht":"5.4545455",
"taux_tva":"0.100"
}
]
}
| Champ | Type | Description |
|---|---|---|
| message | String | Des informations sur l’éxecution de l’appel. “OK” en cas de succès, un message d’erreur sinon |
| total_pages | Int | Le nombre total de pages qui correspond à l’intervalle demandé |
| current_page | Int | Le numéro de la page courante |
| data | JSON Array | Un tableau JSON contenant la liste des ventes |
| data.id | String | Le numéro de la ligne dans la table du journal |
| data.id_transaction | String | L’identifiant de la transaction. Une transaction comporte un ou plusieurs produits. |
| data.id_produit | String | L’identifiant du produit |
| data.produit | String | Le libellé du produit |
| data.taux_tva | String | Le taux de TVA du produit. 0.1 = TVA 10% |
| data.id_caisse | String | L’identifiant de la caisse où a eu lieu la transaction |
| data.caisse | String | Le libellé de la caisse où a eu lieu la transaction |
| data.type_paiement | String | Le libellé du type de paiement de la transaction |
| data.quantite | String | La quantité du produit dans la transaction |
| data.montant_ttc | String | Le montant ttc du produit dans la transaction (est égal au prix unitaire x la quantité) |
| data.montant_ht | String | Le montant ht du produit dans la transaction (est égal au prix unitaire ht x la quantité) |
/ventes2
Récupère la liste des ventes sur une période donnée. Les résultats sont renvoyés de la table du journal par id_transaction croissant. Les résultats sont paginés par paquets de 500. Les données sont présentées sous une autre forme que dans /ventes
Si une vente a été annulée, au lieu de remonter la vente en question et son équilavent négatif, on ne remonte rien.
| Champ | Type | Description |
|---|---|---|
| id_etablissement | String | Obligatoire. Le numéro de compte du client. Il se trouve en bas de la page ‘Profil’ du back office. |
| token | String | Obligatoire. Le token du client. Une chaîne de caractères que que client demande à M-System. |
| date_debut | String | Obligatoire. La date de début de la période des ventes à récupérer. Format à saisir : YYYY-MM-DD |
| date_fin | String | Obligatoire. La date de fin de la période des ventes à récupérer. Format à saisir : YYYY-MM-DD |
| current_page | String | Optionnel. Le numéro de page du journal à récupérer. Si il n’est pas spécifié, la page 1 est renvoyée. |
| id_caisse | String | Optionnel. Filtre pour ne récupérer les ventes que sur certaines caisses. Séparateur : virgule |
Un onjet JSON avec la structure suivante
{
"message":"OK",
"total_pages":1,
"current_page":1,
"data":[
{
"id_transaction":"254",
"date_transaction":"2020-07-16 16:25:38",
"id_caisse":"7031",
"total_ttc":20,
"total_ht":18.1818182,
"produits":[
{
"produit":"MARGARITA",
"id_produit":"483146",
"taux_tva":"0.100",
"quantite":2,
"montant_ttc":14,
"montant_ht":12.7272727
},
{
"produit":"DESSERT",
"id_produit":"495091",
"taux_tva":"0.100",
"quantite":1,
"montant_ttc":6,
"montant_ht":5.4545455
}
],
"paiements":[
{
"type":"CB",
"montant":20
}
]
},
{
"id_transaction":"255",
"date_transaction":"2020-07-16 16:26:03",
"id_caisse":"7031",
"total_ttc":13,
"total_ht":11.8181819,
"produits":[
{
"produit":"BROWNIE",
"id_produit":"483144",
"taux_tva":"0.100",
"quantite":1,
"montant_ttc":4,
"montant_ht":3.6363637
},
{
"produit":"TARTE",
"id_produit":"483145",
"taux_tva":"0.100",
"quantite":3,
"montant_ttc":9,
"montant_ht":8.1818182
}
],
"paiements":[
{
"type":"Espèces",
"montant":11
},
{
"type":"CB",
"montant":2
}
]
}
]
}
| Champ | Type | Description |
|---|---|---|
| message | String | Des informations sur l’éxecution de l’appel. “OK” en cas de succès, un message d’erreur sinon |
| total_pages | Int | Le nombre total de pages qui correspond à l’intervalle demandé |
| current_page | Int | Le numéro de la page courante |
| data | JSON Array | Un tableau JSON contenant la liste des ventes |
| data.id_transaction | String | L’identifiant de la transaction. Une transaction comporte un ou plusieurs produits. |
| data.id_caisse | String | L’identifiant du point de vente sur lequel la transaction a eu lieu. |
| data.total_ttc | Float | Le moontant total TTC de la transaction |
| data.total_ht | Float | Le moontant total HT de la transaction |
| data.produits | JSON Array | Un tableau JSON avec la liste des produits de la transaction |
| data.produits.produit | String | Le libellé du produit |
| data.produits.id_produit | String | L’identifiant du produit |
| data.produits.taux_tva | String | Le taux de TVA du produit. 0.1 = TVA 10% |
| data.produits.quantite | String | La quantité du produit dans la transaction |
| data.produits.montant_ttc | Float | Le montant ttc du produit dans la transaction (est égal au prix unitaire x la quantité) |
| data.produits.montant_ht | Float | Le montant ht du produit dans la transaction (est égal au prix unitaire ht x la quantité) |
| data.paiements | JSON Array | La liste des paiements de la transaction |
| data.paiements.type | String | Le type de paiement |
| data.paiements.montant | Float | Le montant de la transaction encaissé avec ce type de paiement |
/insert_vente
Insère une commande dans M-System. Cette commande est écrite directement dans le journal des ventes. On ne peut envoyer qu’une seule commande à la fois.
| Champ | Type | Description |
|---|---|---|
| id_etablissement | String | Obligatoire. Le numéro de compte du client. Il se trouve en bas de la page ‘Profil’ du back office. |
| token | String | Obligatoire. Le token du client. Une chaîne de caractères que que client demande à M-System. |
| commandes | JSON Array | Obligatoire. Un tableau de longueur 1 avec la commande à envoyer. |
| commandes[0].id_caisse | String | Obligatoire. L’identifiant de la caisse. |
| commandes[0].id_type_paiement | String | Obligatoire. L’identifiant du type de paiement de la commande. |
| commandes[0].date_transaction | String | Obligatoire. La date de la commande. Format aaaa-mm-jj hh:mm:ss |
| commandes[0].produits | JSON Array | Obligatoire. Un tableau avec les produits de la commande |
| commandes[0].produits.id_produit | String | Obligatoire. L’identifiant du produit. |
| commandes[0].produits.quantite | Float | Obligatoire. La quantité du produit. |
Exemple de paramètres à passer en appel à la page
{
"id_etablissement":"12871",
"token":"UPfsFABWgh8b20X72rHu6xV5QGNdzqOa",
"commandes":[
{
"id_caisse":"11943",
"id_type_paiement":"1",
"date_transaction":"2024-12-20 15:07:00",
"produits":[
{
"id_produit":"483130",
"quantite":2
},
{
"id_produit":"483160",
"quantite":3
}
]
}
]
}
Un onjet JSON avec la structure suivante
{
"id_transaction": 1044,
"id_caisse": 11943,
"message": "OK",
"nb_produits": 5,
"montant_commande": 27.6
}
| Champ | Type | Description |
|---|---|---|
| message | String | Des informations sur l’éxecution de l’appel. “OK” en cas de succès, un message d’erreur sinon |
| id_caisse | Int | L’identifiant de la caisse de la commande insérée |
| id_transaction | Int | L’identifiant de la transaction insérée |
| nb_produits | Float | Le nombre de produits de la commande |
| montant_commande | Float | Le montant total de la commande |
La valeur id_caisse,id_transaction est unique dans l’application.
/insert_commande
Insère une commande dans M-System. Cette commande apparait sous forme de note dans l’application.
| Champ | Type | Description |
|---|---|---|
| id_etablissement | String | Obligatoire. Le numéro de compte du client. Il se trouve en bas de la page ‘Profil’ du back office. |
| token | String | Obligatoire. Le token du client. Une chaîne de caractères que que client demande à M-System. |
| libelle | String | Obligatoire. Le libellé de la note qui sera affichée dans M-System. |
| date_commande | String | Facultatif. La date à laquelle la commande est passée. Si non spécifiée, l’heure d’appel à la page est utilisée. Format : YYYY-MM-DD HH:MM:SS |
| id_type_paiement | String | Facultatif. L’identifiant du type de paiement avec lequel cette commande sera encaissée. Si non spécifié, la commande pourra être encaissée avec un type de paiement choisi par l’utilisateur M-System |
| id_externe | String | Facultatif. L’identifiant dde la commande dans le système appelant. |
| etat_commande | String | Facultatif. L’état de la commande dans le système appelant. |
| contenu_commande | Json Array | Obligatoire. Le contenu de la commande |
| contenu_commande.id_produit | String | Obligatoire. L’identifiant du produit de la commande |
| contenu_commande.quantite | String | Obligatoire. La quantité du produit de la commande |
| contenu_commande.prix_unitaire | String | Obligatoire. Le prix unitaire du produit |
Exemple de paramètres à passer en appel à la page
{
"id_etablissement":"12871",
"token":"UPfsFABWgh8b30X72rHu6xV5QGNdzqOa",
"libelle":"Alice",
"id_type_paiement":"2",
"date_commande":"2020-06-18 19:03:36",
"id_externe":"99f55ed2-ca74-11ea-89bb-a484d00fb427",
"etat_commande":"en_preparation",
"contenu_commande":[
{
"id_produit":"483157",
"quantite":"1",
"prix_unitaire":"3.5"
},
{
"id_produit":"483149",
"quantite":"2",
"prix_unitaire":"17"
}
]
}
Un onjet JSON avec la structure suivante
{
"message":"OK",
"id_note":"ab078272-1eba-45a3-923a-66f09ea35f7e",
"nb_produits":3,
"montant_commande":37.5
}
| Champ | Type | Description |
|---|---|---|
| message | String | Des informations sur l’éxecution de l’appel. “OK” en cas de succès, un message d’erreur sinon |
| id_note | String | L’identifiant de la note nouvellement insérée dans M-System |
| nb_produits | Float | Le nombre de produits de la note |
| montant_commande | Float | Le montant total de la note |
Après chaque validation de commande, il est possible d’appeler un webhook. Les ventes insérées dans le journal sont passées en paramètre.
L’appel qui est lancé à chaque nouvelle commande :
curl -X POST https://monsite.fr/path/to/webhook \
-H "Content-Type: application/json" \
-d
{
"id_etablissement": "12871",
"data": [
{
"id_transaction": 2151,
"date_transaction": "2024-10-20 10:56:49",
"total_ttc": 13,
"total_ht": 10.8333333,
"id_caisse": "21579",
"id_appareil": "2300",
"produits": [
{
"produit": "COCKTAIL",
"id_produit": "885",
"taux_tva": 0.2,
"quantite": 1,
"montant_ttc": 7,
"montant_ht": 5.833333333333334
},
{
"produit": "VIN BLANC",
"id_produit": "508",
"taux_tva": 0.2,
"quantite": 1,
"montant_ttc": 6,
"montant_ht": 5
}
],
"paiements": [
{
"type": "CB",
"montant": 13
}
]
}
]
}
| Champ | Type | Description |
|---|---|---|
| id_etablissement | String | Le numéro de compte du client. |
| data | JSON Array | Un tableau des transactions qui viennent d’être insérées en base. Le format est le même que pour celui de /ventes2, avec en plus un identifiant de l’appareil qui a enregistré les ventes. |
Si vous souhaitez le mettre en place, vous nous transmettez votre url, et nous la paramétrons dans votre compte.