Documentation API – Product

Product Endpoint

Gérez les produits à travers différents systèmes ERP avec une API REST unifiée.
Créez, lisez et mettez à jour les informations de produits incluant les prix, inventaire et classifications pour Acomba, QuickBooks Online et autres systèmes ERP.

GET/Entity/Product
POST/Entity/Product
PUT/Entity/Product/{id}

Aperçu

L’entité Product représente un produit ou un article dans votre système ERP.
Cette API permet d’effectuer des opérations CRUD (Create, Read, Update) sur les produits
de manière standardisée, incluant les informations de prix, d’inventaire et de classification.

L’API utilise des endpoints REST standards avec les méthodes HTTP appropriées :

  • GET /Entity/Product – Récupérer une liste de produits
  • GET /Entity/Product/{id} – Récupérer un produit spécifique
  • POST /Entity/Product – Créer un nouveau produit
  • PUT /Entity/Product/{id} – Mettre à jour un produit existant
💡 Note importante

Les champs disponibles et requis varient selon le système ERP. Consultez la matrice de support ci-dessous pour connaître les opérations supportées par chaque système.

Matrice de Support

Opérations CRUD supportées pour l’entité Product par système ERP :

Système ERP GET POST PUT
Acomba ✓ Oui ✓ Oui ✓ Oui
QuickBooks Online ✓ Oui ✗ Non ✗ Non
Avantage ✗ Non ✗ Non ✗ Non
Sage 50 ✗ Non ✗ Non ✗ Non
Servex ✗ Non ✗ Non ✗ Non
Servicentre ✗ Non ✗ Non ✗ Non

GET Product

Récupère une liste de produits avec support de filtrage, pagination et sélection de champs. Inclut les informations de prix, inventaire et classification.

GET/Entity/Product

Paramètres de requêtes

Paramètre Type Requis Description
$filter string Optionel Expression de filtrage de style OData (ex: EstActif eq true)
$select string Optionel Champs à retourner (séparés par des virgules)
$expand string Optionel Champs à épandre (ex: ExtendedProperties)
$orderby string Optionel Permet de trier les résultats (ex: NoProduit asc)
$top integer Optionel Nombre maximum de résultats
$skip integer Optionel Nombre de résultats à ignorer

Champs principaux de Product

Champ Type Description
NoProduit string Code/numéro unique du produit (clé business)
NoUniqueSystemeSource string Identifiant unique interne de l’ERP
Description1 string Description principale du produit
Description2 string Description secondaire
EstActif boolean Indique si le produit est actif
PrixVendant_Liste0_Prix1 decimal Prix de vente principal (niveau 1)
PrixCoutant_DernierCoutant decimal Dernier prix coûtant
Inventaire_QteEnMain decimal Quantité en inventaire
Inventaire_QteDisponible decimal Quantité disponible
CodeUPC1 string Code UPC/barre du produit
GroupeProduit object Catégorie/groupe du produit
💡 Segmentation Acomba

Pour Acomba, les produits peuvent être segmentés (par couleur, grandeur, etc.). Utilisez les propriétés IsAProductItem, Caracteristique01_*, Caracteristique02_* et Caracteristique03_* pour gérer ces variantes.

💡 Note pour composer une requête

Pour plus de détails, veuillez consulter cet article : Composer une requête à l’API d’ERP Connector

Get Products
GET /Entity/Product?$select=NoProduit,Description1,PrixVendant_Liste0_Prix1,Inventaire_QteEnMain&$filter=EstActif eq true&$top=2
Host: https://v4.api.onlineerp.solution.quebec/api
Content-Type: application/json
Response (200 OK)
[
    {
        "NoProduit": "WIDGET-001",
        "Description1": "Widget Standard",
        "PrixVendant_Liste0_Prix1": 99.99,
        "Inventaire_QteEnMain": 150
    },
    {
        "NoProduit": "WIDGET-002",
        "Description1": "Widget Premium",
        "PrixVendant_Liste0_Prix1": 149.99,
        "Inventaire_QteEnMain": 75
    }
]

POST Product (Création)

Crée un nouveau produit dans le système ERP. Le produit ne doit pas déjà exister.

POST/Entity/Product
💡 Headers recommandés

Utilisez le header If-None-Match: * pour garantir que la création échouera si l’entité existe déjà.

Champs principaux

Champ Type Acomba Description
NoProduit string ✓ Required Code/numéro unique du produit
Description1 string ✓ Required Description principale du produit
Description2 string Optionel Description secondaire (ex: anglais)
Description3 string Optionel Description tertiaire (ex: espagnol)
Description_Courte1 string Optionel Description courte (correspond à “Clé de tri” dans Acomba)
EstActif boolean Optionel Permet de créer des produits actifs/inactifs dès la création (défaut: true)
CodeUPC1 string Optionel Code UPC/code-barres du produit
CodeUnite_Court string Optionel Code d’unité court (ex: “SAC”, “UN”)
CodeUnite_Long string Optionel Code d’unité long
PrixVendant_Liste0_Prix1 decimal Optionel Prix de vente liste 0, niveau 1
PrixVendant_Liste0_Prix2-5 decimal Optionel Prix de vente additionnels (niveaux 2 à 5)
PrixCoutant_DernierCoutant decimal Optionel Dernier prix coûtant
PrixCoutant_ProchainCoutant decimal Optionel Prochain prix coûtant
Inventaire_Localisation string Optionel Localisation physique dans l’entrepôt (Acomba uniquement)
GroupeProduit.CodeGroupe string Optionel Code du groupe de produit
ListeProduitsFournisseurs array Optionel Liste des produits-fournisseurs associés (voir structure ci-dessous)

Structure des Produits-Fournisseurs

Certains ERP supportent le concept de produits-fournisseurs. Vous devez passer une liste de ces produits dans le champ ListeProduitsFournisseurs.

Champ Type Requis Description
No_Fournisseur string ✓ Required Numéro du fournisseur dans l’ERP
NoProduit_Fournisseur string ✓ Required Numéro du produit chez le fournisseur
prix_ProchainCoutant decimal Optionel Prochain prix coûtant chez ce fournisseur
CodeUPC_Fournisseur string Optionel Code UPC du fournisseur
Description string Optionel Description du produit-fournisseur
Qte_Economique number Optionel Quantité économique de commande
Créer un produit
POST /Entity/Product
Host: https://v4.api.onlineerp.solution.quebec/api
Content-Type: application/json
If-None-Match: *

{
  // Le numéro de produit est la clé primaire naturelle (business Key) dans la plupart des ERP"NoProduit": "produit2",

  // Il est possible de créer des produits actif/inactif dès leur création"EstActif": true,

  // La description1 sera la description principale dans la plupart des ERP"Description1": "Engrais à gazon en sac",
  "Description2": "description2...anglais",
  "Description3": "description3...espagnol",

  // DescriptionCourte correspond à "Clé de tri" dans Acomba. Aucune correspondance ailleurs"Description_Courte1": "Engrais gazon",
  "Description_Courte2": "Engrais gazon",

  "CodeUPC1": "1326884361",
     
  "PrixVendant_Liste0_Prix1": 11,
  "PrixVendant_Liste0_Prix2": 12.1,
  "PrixVendant_Liste0_Prix3": 13.2,
  "PrixVendant_Liste0_Prix4": 14.3,
  "PrixVendant_Liste0_Prix5": 15.54,
  "PrixCoutant_DernierCoutant": 9.44,
  "PrixCoutant_ProchainCoutant": 10.1,

  // Dans Acomba, un champ de localisation permet d'écrire où se trouve le produit physiquement dans l'entrepôt"Inventaire_Localisation": "R26Gauche",

  "CodeUnite_Court": "SAC",
  "CodeUnite_Long": "SAC",

  "GroupeProduit": {
    "CodeGroupe": "140"
  },

  // Certains ERP supportent le concept de Produits->ProduitsFournisseurs. Vous devez en passer la liste ici"ListeProduitsFournisseurs": [
    // La base d'un produit fournisseur est le numéro du fournisseur, et le numéro du produit chez ce fournisseur
    {
      "No_Fournisseur": "2707181", // Obligatoire, le numéro du fournisseur Acomba"NoProduit_Fournisseur": "NoProdFour123", // Obligatoire, le numéro du Produit-fournisseur Acomba"prix_ProchainCoutant": 10.0,
      
      "CodeUPC_Fournisseur": "123456789",
      "CodeUnite_Long": "LIVRE",
      "CodeUnite_Court": "LBS",
      "Description": "Description du prodfour123",
      "Qte_Economique": 1000
    }
  ]
}
Response (201 Created)
{
  "ResultType": "Success",
  "IsTaskCompleted": true,
  "ResultPayload": {
    "BusinessKey": "produit2",
    "ErpInternalId": "12345",
    "Success": true
  },
  "ResultMessage": "Produit créé avec succès"
}
⚠️ Important

La création de produits est uniquement supportée pour Acomba. Le NoProduit et la Description1 sont obligatoires.

PUT Product (Update)

Met à jour un produit existant. Supporte la mise à jour partielle – seuls les champs fournis sont modifiés.

PUT/Entity/Product/{id}
💡 Headers recommandés

Utilisez le header If-Match: * pour garantir que la mise à jour échouera si l’entité n’existe pas.

Paramètres de l’URI

Paramètre Type Requis Description
{id} string ✓ Required Identifiant unique du produit (NoProduit)
Mettre à jour le produit
PUT /Entity/Product/WIDGET-001
Host: https://v4.api.onlineerp.solution.quebec/api
Content-Type: application/json
If-Match: *

{
  "PrixVendant_Liste0_Prix1": 109.99,
  "Description2": "Version améliorée",
  "EstActif": true
}
Response (200 OK)
{
  "ResultType": "Success",
  "IsTaskCompleted": true,
  "ResultPayload": {
    "BusinessKey": "WIDGET-001",
    "ErpInternalId": "12345",
    "Success": true
  },
  "ResultMessage": "Produit mis à jour avec succès"
}
💡 Mise à jour partielle

Vous n’avez pas besoin d’envoyer tous les champs. Seuls les champs fournis seront modifiés, les autres conserveront leurs valeurs existantes.

⚠️ Important

La modification de produits est uniquement supportée pour Acomba.

Propriétés détaillées de Product

Identification

Propriété Type Description
NoProduit string Code/numéro du produit (clé business)
NoUniqueSystemeSource string Clé unique interne de l’ERP
CodeUPC1 string Code UPC/barre
EstActif bool? Indique si le produit est actif

Descriptions

Propriété Type Description
Description1 string Description principale
Description2 string Description secondaire
Description3 string Description tertiaire
Description_Courte1 string Description courte 1
Description_Courte2 string Description courte 2
Commentaire string Commentaire interne

Prix de vente (5 niveaux)

Propriété Type Description
PrixVendant_Liste0_Prix1 decimal? Prix de vente niveau 1
PrixVendant_Liste0_Prix2 decimal? Prix de vente niveau 2
PrixVendant_Liste0_Prix3 decimal? Prix de vente niveau 3
PrixVendant_Liste0_Prix4 decimal? Prix de vente niveau 4
PrixVendant_Liste0_Prix5 decimal? Prix de vente niveau 5

Prix coûtants

Propriété Type Description
PrixCoutant_DernierCoutant decimal? Dernier prix coûtant
PrixCoutant_CoutantMoyen decimal? Prix coûtant moyen
PrixCoutant_ProchainCoutant decimal? Prochain prix coûtant

Inventaire – Quantités

Propriété Type Description
Inventaire_QteEnMain decimal? Quantité physique en stock
Inventaire_QteDisponible decimal? Quantité disponible à la vente
Inventaire_QteReservee decimal? Quantité réservée
Inventaire_QteEnCommande decimal? Quantité en commande client
Inventaire_QteEnAchat decimal? Quantité en commande fournisseur
Inventaire_QteMininum decimal? Quantité minimum
Inventaire_QteMaximum decimal? Quantité maximum

Classification & Organisation

Propriété Type Description
GroupeProduit GroupeProduit Groupe/catégorie du produit
CodeUnite_Court string Code d’unité court (ex: UN, BTE)
CodeUnite_Long string Description longue de l’unité
Inventaire_Entrepôt string Code de l’entrepôt
Inventaire_Localisation string Localisation dans l’entrepôt

Segmentation (Acomba)

💡 Produits segmentés

Acomba supporte la segmentation de produits par caractéristiques (couleur, taille, etc.). Ces propriétés permettent de gérer les variantes de produits.

Propriété Type Description
IsAProductItem bool Indique si c’est un produit segmenté
ItemProduit_ProduitParent_No string Numéro du produit parent
Caracteristique01_Nom string Nom de la 1ère caractéristique (ex: Couleur)
Caracteristique01_ValeurNom string Valeur de la 1ère caractéristique (ex: Bleu)
Caracteristique02_Nom string Nom de la 2ème caractéristique (ex: Taille)
Caracteristique02_ValeurNom string Valeur de la 2ème caractéristique (ex: XL)
Caracteristique03_Nom string Nom de la 3ème caractéristique
Caracteristique03_ValeurNom string Valeur de la 3ème caractéristique

Autres propriétés

Propriété Type Description
Fiche_DerniereModification DateTime? Date de dernière modification
ListeProduitsFournisseurs List<FicheProduitFournisseur> Liste des fournisseurs du produit
ListeRabaisVolume List<RabaisVolume> Liste des rabais de volume
ListeQteEntrepot List<EntrepotInventaire> Quantités par entrepôt
ExtendedProperties Dictionary<string, object> Propriétés étendues personnalisées