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.
/Entity/Product/Entity/Product/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 produitsGET /Entity/Product/{id}– Récupérer un produit spécifiquePOST /Entity/Product– Créer un nouveau produitPUT /Entity/Product/{id}– Mettre à jour un produit existant
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.
/Entity/ProductParamè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 |
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.
Pour plus de détails, veuillez consulter cet article : Composer une requête à l’API d’ERP Connector
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
[
{
"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.
/Entity/ProductUtilisez 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 |
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
}
]
}
{
"ResultType": "Success",
"IsTaskCompleted": true,
"ResultPayload": {
"BusinessKey": "produit2",
"ErpInternalId": "12345",
"Success": true
},
"ResultMessage": "Produit créé avec succès"
}
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.
/Entity/Product/{id}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) |
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
}
{
"ResultType": "Success",
"IsTaskCompleted": true,
"ResultPayload": {
"BusinessKey": "WIDGET-001",
"ErpInternalId": "12345",
"Success": true
},
"ResultMessage": "Produit mis à jour avec succès"
}
Vous n’avez pas besoin d’envoyer tous les champs. Seuls les champs fournis seront modifiés, les autres conserveront leurs valeurs existantes.
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)
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 |