Documentation API M-System /v1

L’API est accessible via l’URL https://api.lemotel.fr/v1

Les paramètres sont à passer en POST.

Exemple d’appel en cURL

curl -X POST https://api.lemotel.fr/v1/etablissement \
-H "Content-Type: application/json" \
-d '{"id_etablissement":"12871","token":"IiY27r0u9MjZXwaKvBLT6Wn4gmGHzlP3"}'

Etablissement

/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.

Paramètres

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.

Sortie

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

/produits

Récupère la liste des produits du compte. Tous les produits actifs sont renvoyés.

Paramètres

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.

Sortie

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%

Journal des ventes

/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.

Paramètres

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

Sortie

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

Journal des ventes (autre présentation)

/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.

Paramètres

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

Sortie

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

Insérer une commande

/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.

Paramètres

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
            }
         ]
      }
   ]
}

Sortie

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.

Insérer une commande (note)

/insert_commande

Insère une commande dans M-System. Cette commande apparait sous forme de note dans l’application.

Paramètres

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"
      }
   ]
}

Sortie

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

Webhook de fin de commande

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
                    }
                ]
            }
        ]
    }

Paramètres

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.