API des pièces
Commencer
Comme décrit dans la section Partage de données, DCP est entièrement consacré aux données, et les données envoyées à votre DMS par BRP sont tout aussi essentielles que celles envoyées par le concessionnaire à BRP. Un élément essentiel est le catalogue des pièces, accessoires et vêtements (PAA) de BRP, couramment appelé catalogue des pièces.
L’API des pièces permet aux concessionnaires d’accéder au dernier catalogue de pièces BRP dans leur DMS. Puisque le catalogue des pièces est utilisé dans de nombreuses activités en concession, disposer de la version la plus récente dans votre DMS est bénéfique pour les concessionnaires de plusieurs façons, par exemple :
- La possibilité de référencer des numéros de pièces cohérents lors de discussions avec BRP.
- Une commande de pièces plus précise.
- Une meilleure connaissance des dernières modifications apportées aux pièces, telles que les remplacements et la disponibilité.
En résumé, l’API des pièces est un élément central de votre intégration avec BRP.
L’API des pièces fournit 3 types de requêtes :
- Obtenir le catalogue complet des pièces.
- Obtenir les modifications du catalogue des pièces effectuées après une date spécifiée.
- Obtenir des informations sur une pièce spécifique.
Comme décrit dans la section Comprendre les Parties , les pièces avec ces codes sont incluses dans l'API.
Comme décrit dans la section Exigences Fonctionnelles , vous devez appeler l'API des Pièces au moins une fois pour récupérer le catalogue complet des pièces.
Le catalogue complet des pièces doit être disponible pour le concessionnaire.
Par où commencer ? Lisez-moi en premier !
Avant de commencer à travailler sur cette API, vous devez lire les sections suivantes si vous ne les avez pas déjà consultées :
- Informations techniques pour des informations techniques générales sur l'API et les environnements.
- Authentification et informations d’identification pour des détails sur l’authentification et les identifiants.
Quand appeler l’API
Pour les opérations du concessionnaire, il est essentiel d'utiliser un catalogue de pièces à jour.
C’est pourquoi vous devez appeler l’API Pièces quotidiennement pour obtenir les dernières modifications !
❗ Comme décrit dans la section Exigences Fonctionnelles , vous devez appeler l’API Pièces quotidiennement pour récupérer les modifications des 2 derniers jours. ❗
Cependant, il s’agit de l’exigence minimale. Nous pouvons appeler l’API Pièces quotidiennement pour récupérer les modifications effectuées la semaine dernière, comme indiqué dans la section Obtenir les Modifications de la Semaine Dernière . De cette façon, vous vous assurez que le concessionnaire dispose d’un catalogue de pièces à jour même si la mise à jour ne fonctionne pas un jour.
Les données de l’API Pièces sont mises à jour quotidiennement, et la mise à jour se termine à 4h00, heure de l'Est (ET). Par conséquent, le meilleur moment pour appeler l’API Pièces afin de mettre à jour votre DMS est après 4h00 ET.
👉 Pour éviter de manquer des changements, nous recommandons que votre DMS appelle périodiquement l’API Pièces pour récupérer les changements sur une période plus longue.
Par exemple, votre DMS peut appeler l’API Pièces une fois par mois pour obtenir les changements.
Comment appeler l’API
La section Référence API explique que l’API Pièces offre deux services : un pour récupérer le catalogue complet des pièces ou les dernières modifications, et un pour obtenir une pièce spécifique.
Le service permettant d’obtenir une pièce spécifique est appelé selon les besoins lorsque le concessionnaire recherche un numéro de pièce particulier. En d’autres termes, le service est appelé manuellement.
Comme décrit dans la section Exigences fonctionnelles le service permettant de récupérer le catalogue complet des pièces ou les dernières modifications doit être automatisé.
Le concessionnaire n’a pas à intervenir pour mettre à jour quotidiennement le catalogue des pièces.
Informations techniques
Caractéristiques
Type d'API | Type DSP | Version DCP | Complexité |
|---|---|---|---|
Obtenir des données de BRP | DMS | V3 - International | Faible |
Envoyer des données à BRP | CRM | V4 - Amérique du Nord | Un peu plus |
Transaction avec BRP | | | Quelque peu plus |
Authentification
L'API utilise Authentification de l'application.
Vous avez besoin d’un jeton d’accès valide avant d’appeler cette API, ou vous devez appeler l’API d'authentification d'application pour en obtenir un.
Le jeton d’accès est valide pendant 30 minutes ! (1799 secondes)
URL de base
Test | https://qa-cloud-api.brp.com/dcp/<v3 ou v4> |
|---|---|
Production | https://cloud-api.brp.com/dcp/<v3 ou v4> |
Ressource : Pièce
Lorsqu’elle est appelée pour demander le catalogue complet des pièces ou les dernières modifications, l’API des Pièces renvoie un tableau de ressources Pièce. Chaque ressource Pièce, présentée ci‑dessous, contient toutes les informations concernant une pièce.
Lorsqu’elle est appelée pour obtenir une pièce spécifique, l’API des Pièces renvoie une seule ressource Pièce.
Représentation JSON
{
"product_code": "080037100",
"product_descr": "CASTING COVER",
"product_type": "30",
"gross_weight": 919,
"gross_weight_uom": "G",
"first_year_utilization": 1996,
"last_year_utilization": 2007,
"product_lines": [
"SNO"
],
"sales_status_code": "7",
"minimum_order_quantity": 1,
"sales_uom": "PC",
"market_classification": "",
"is_bom": false,
"units_of_measure": [
{
"volume": 6300,
"uom": "PC",
"weight_unit": "G",
"volume_unit": "CCM",
"length": 35,
"width": 20,
"gross_weight": 919,
"net_weight": 919,
"dimension_unit": "CM",
"numerator": 1,
"denominator": 1,
"height": 9
}
],
"pricings": [
{
"price_type": "retail",
"valid_from": "2014-10-01",
"price_price_uom": 134.99,
"price_sales_uom": 134.99,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
},
{
"price_type": "dealer",
"valid_from": "2014-10-01",
"price_price_uom": 80.98,
"price_sales_uom": 80.98,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
}
],
"supersessions": [
{
"superseded_product": "204071507",
"superseding_product": "080037100",
"direction": "forward"
}
]
}
Propriétés
Tous les champs numériques avec décimales utilisent le point(.) comme séparateur décimal. La virgule (,) n’est PAS prise en charge comme séparateur décimal.
Propriété | Type | Définition | Notes |
|---|---|---|---|
product_code* | chaîne | Code qui identifie de manière unique un produit. | Longueur maximale : 18 |
- Les propriétés marquées d'une dague (†) sont renvoyées dans la langue demandée.
- Les propriétés marquées d'un astérisque (*) sont toujours renvoyées dans la réponse.
- 🛑 Différences entre V3 et V4.
Devise
Organisation commerciale | Devise | Version 3 | Version 4 |
|---|---|---|---|
1010 | CAD | | X |
3020 | USD | | X |
6030 | EUR | X | |
6030 | NOK | X | |
6050 | SEK | X | |
6050 | EUR | X | |
6050 | GBP | X | |
8070 | MXN | X | |
8075 | BRL | X | |
7080 | AUD | X | |
7080 | NZD | X | |
Gammes de produits
Clé | Valeur | Marque |
|---|---|---|
2WV | Véhicules à deux roues | Can-Am On-Road |
3WV | Véhicules à trois roues | Can-Am On-Road |
ATV | Véhicules tout-terrain | Can-Am Off-Road |
OE | Moteurs hors-bord | Sea-Doo |
PTN | Bateaux pontons | Sea-Doo |
PWC | Motomarines | Sea-Doo |
SNO | Motoneiges | Ski-Doo |
SSV | Véhicules côte à côte | Can-Am Off-Road |
Classification du marché des produits
Clé | Valeur |
|---|---|
CAP | Captif |
COM | Compétitif |
NA | Lorsqu’aucune correspondance parmi les éléments ci-dessus (Indéfini) |
Types de produits
Clé | Valeur |
|---|---|
10 | Véhicule |
20 | Moteur |
30 | Pièces |
40 | Accessoires |
50 | Vêtements |
60 | Licences et Jeux |
80 | Manuels |
90 | Remorque |
100 | Reconstruit |
110 | Huiles et Produits chimiques |
NA | Lorsqu'aucune correspondance ci-dessus (Indéfini) |
Code d'état des ventes
Clé | Valeur | Description |
|---|---|---|
4 | Vendable | Le matériel est actif sans restriction de commande |
5 | Utiliser sans épuisement | Le matériel peut être saisi dans une commande mais est directement remplacé par son matériel de substitution |
7 | Millésime | Matériel vendu par un tiers lorsqu'il n'est plus approvisionné par BRP |
E | Fin de vie | Le matériel est disponible mais ne sera plus réapprovisionné |
H | Obsolète | Le matériel est abandonné et ne peut pas être commandé |
NA | Lorsqu'aucune correspondance ci-dessus (Indéfini) | |
Unité de mesures
Code | Description | Dimension |
|---|---|---|
BT | Bouteille | Quantité |
CAN | Bidon | Quantité |
CM | Centimètre | Longueur |
CS | Caisse | Quantité |
FT | Pieds | Longueur |
G | Gramme | Poids |
M | Mètre | Longueur |
ML | Millilitre | Volume |
MM | Millimètre | Longueur |
OZ | Onces | Poids |
PAC | Paquet | Quantité |
PC | Pièce | Quantité |
PR | Paire | Quantité |
TB | Tube | Quantité |
Ressource : Liste des pièces
Lorsqu’elle est appelée pour demander le catalogue complet des pièces ou les dernières modifications, l’API des pièces retourne un tableau de Pièce ressources.
Les réponses renvoyées contiennent deux objets qui vous aident à naviguer dans les pages du catalogue de pièces.
Représentation JSON
{
"items": [
{
List of Parts resources
}
],
"links": {
"previous": "https://api.brp.com/dcp/v4/parts?language=en-US&last_changed_date=1900-01-01&sales_org=canada¤cy=CAD&limit=200&page=1",
"next": "https://api.brp.com/dcp/v4/parts?language=en-US&last_changed_date=1900-01-01&sales_org=canada¤cy=CAD&limit=200&page=3"
},
"meta": {
"total_records": 9999,
"total_pages": 87,
"current_page": 2,
"limit": 200
}
}
Propriétés
Propriété | Type | Définition |
|---|---|---|
items | Liste d’objets | Liste de Pièce ressources qui sont renvoyées. |
links | objet | Liens de pagination. |
links.previous | chaîne | URL à utiliser pour récupérer la page précédente. NULL s’il n’y a pas de page précédente. |
links.next | chaîne | URL à utiliser pour récupérer la page suivante. NULL s’il n’y a pas de page suivante. |
meta | objet | Statistiques de la requête. |
meta.total_records | nombre | Le nombre d’enregistrements renvoyés par la requête. |
meta.total_pages | nombre | Le nombre de pages est utilisé pour calculer la limite. |
meta.current_page | nombre | Le numéro de la page actuelle ou le numéro de page demandé. |
meta.limit | nombre | Limite provenant des paramètres de la requête. |
Liens
L'objet Liens peut être utilisé pour naviguer dans les pages renvoyées par l'API des pièces.
Lorsqu'un lien n'est pas NULL, il peut être utilisé pour accéder à la page précédente ou suivante. Cela simplifie la navigation entre les pages, car vous n'avez pas à enregistrer vos paramètres de requête ; l'URL du lien contient les paramètres de requête que vous avez fournis ainsi que les paramètres par défaut pour ceux que vous n'avez pas fournis.
Métadonnées
Le Méta objet fournit des statistiques sur le nombre de ressources renvoyées par votre requête et le nombre de pages que vous pouvez attendre.
Ces informations peuvent être utiles pour le diagnostic et pour vérifier que toutes les Pièce ressources ont été reçues.
Limitations et contraintes
Format numérique
Tous les champs numériques avec décimales utilisent le point(.) comme séparateur décimal. La virgule (,) n’est PAS prise en charge comme séparateur décimal.
Date de dernière modification
Lorsque le paramètre de requête last_changed_date est utilisé pour récupérer les changements à partir d’une date spécifique, il est essentiel de comprendre quand le catalogue des pièces est mis à jour.
La première étape de la mise à jour d’une pièce est effectuée dans SAP. Ensuite, les tâches de base de données s’exécutent pour mettre à jour le catalogue.
Les tâches de base de données qui mettent à jour le catalogue des pièces à partir des systèmes backend s’exécutent en fin de journée, à partir de 22 h, heure de l’Est (ET UTC-05:00). Elles se terminent généralement avant minuit le même jour.
Si vous appelez l’API des pièces avec une last_changed_date correspondant à la date d’aujourd’hui, aucune pièce n’est renvoyée car les dernières modifications du catalogue de pièces ont été effectuées hier.
Pour mieux comprendre la séquence, examinons un scénario.
À 10h00 ET le 14 octobre :
- 10 pièces sont modifiées dans SAP.
À 22h00 ET le 14 octobre :
- Les tâches de base de données s’exécutent et mettent à jour le catalogue.
- Les 10 pièces modifiées sont mises à jour dans le catalogue.
À 2h00 ET le 15 octobre :
- Votre DMS appelle l’API des pièces, et la date de dernière modification est le 15 octobre.
- Aucune pièce ne sera renvoyée puisque les pièces ont été modifiées le 14 octobre.
❗ ❗ Si votre DMS appelle l’API des pièces et ne reçoit jamais de pièces mises à jour, assurez-vous d’utiliser une last_change_date 2 ou 3 jours avant la date actuelle ❗ ❗
Historique des prix et pièces obsolètes
Lorsqu'une pièce devient non vendable (par ex., obsolète, vintage), son prix est défini à 0 dans le système backend.
👉 Pour ces pièces, l’API Parts conserve le dernier prix disponible.
Comprendre les pièces
Cette section présente des informations essentielles sur la gestion du catalogue de pièces.
Code de statut de vente
Les pièces non vendables ne sont pas retirées afin de maintenir la cohérence du catalogue de pièces et les références entre les données des concessionnaires et le catalogue de pièces.
La sales_status_codepropriété, trouvée dans l’objet Part décrit dans la section Représentation JSON de la pièce détermine si la pièce est vendable ou non. Les valeurs possibles de sales_status_codesont présentées dans le tableau ci-dessous.
Vous devez afficher le code de statut de vente ou un équivalent dans votre DMS pour indiquer au concessionnaire si une pièce peut être commandée.
Code d'état des ventes
Clé | Valeur | Description |
|---|---|---|
4 | Vendable | Le matériel est actif sans restrictions de commande |
5 | Utiliser sans déplétion | Le matériel peut être saisi dans la commande mais est directement remplacé par son matériel de substitution |
7 | Millésime | Matériel vendu par un tiers lorsqu'il n’est plus approvisionné par BRP |
E | Fin de vie | Le matériel est disponible mais ne sera plus réapprovisionné |
H | Obsolète | Le matériel est discontinué et ne peut pas être commandé |
NA | Quand aucune correspondance ci-dessus (Indéfini) | |
Vendable
La valeur du code de statut de vente la plus simple est '4' : la pièce peut être vendue, ce qui signifie que le concessionnaire peut commander la pièce sans restriction.
Utiliser sans diminution
La valeur du code de statut de vente '5' indique que le concessionnaire peut commander la pièce, mais qu'il recevra une pièce de substitution à la place.
Élimination progressive
La valeur du code de statut de vente 'E' indique que le concessionnaire peut commander la pièce tant que BRP a du stock. Une fois le stock disponible épuisé, la pièce de substitution est livrée au concessionnaire lors de la réception de la commande.
Vintage
La valeur du code de statut de vente '7' indique que le concessionnaire ne peut pas commander la pièce auprès de BRP mais pourrait la commander auprès d’un tiers.
Obsolète
La valeur du code de statut de vente 'H' indique que le concessionnaire ne peut pas commander la pièce. Une pièce de substitution peut exister dans certains cas et est identifiée dans la propriété supersessions.
Kit et nomenclature de vente
Commençons par deux définitions :
- Un kit est un groupe de pièces représenté par un seul numéro de pièce, qui est commandé et expédié en une seule unité.
- Un BOM de vente est un groupe de pièces représenté par un seul numéro de pièce, mais qui est commandé et expédié sous forme de plusieurs pièces.
Un exemple de kit
Un exemple de kit est la pièce 715009632, un kit de pare-chocs arrière pour un VTT.
Lorsque vous appelez l’API des pièces pour demander cette pièce, vous obtenez la réponse suivante.
{
"product_code": "715009632",
"product_descr": "BUMPER REAR B-487 KIT",
"product_type": "30",
"gross_weight": 9,
"gross_weight_uom": "KG",
"first_year_utilization": 2024,
"last_year_utilization": 2025,
"product_lines": [
"ATV"
],
"sales_status_code": "4",
"minimum_order_quantity": 1,
"sales_uom": "PC",
"market_classification": "COM",
"is_bom": true,
"units_of_measure": [
{
"volume": 32589,
"uom": "PC",
"weight_unit": "KG",
"volume_unit": "CCM",
"length": 71,
"width": 51,
"gross_weight": 9,
"net_weight": 9,
"dimension_unit": "CM",
"numerator": 1,
"denominator": 1,
"height": 9
}
],
"pricings": [
{
"price_type": "retail",
"valid_from": "2025-06-07",
"price_price_uom": 223.49,
"price_sales_uom": 223.49,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
},
{
"price_type": "dealer",
"valid_from": "2025-06-07",
"price_price_uom": 150.48,
"price_sales_uom": 150.48,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
}
],
"supersessions": []
}Vous voyez que le champ is_bom est true, ce qui indique qu’il existe d’autres pièces liées à cette pièce.
Lorsque le concessionnaire commande cette pièce, une seule pièce est expédiée, comme indiqué dans BOSSWeb.

Et dans la réponse de l’API Parts Order, une pièce est commandée (ordered_line) et une est expédiée (shipping_lines).
{
"pac_order_id": "79f15a68-1671-4468-a9f8-18489553ea34",
"sales_order_no": "",
"creation_date": "2025-06-19T10:18:11Z",
"dealer_po_no": "PO0001234",
"dealer_no": "0000694307",
"order_type": "regular",
"shipping_carrier": {
"shipping_condition": "S0",
"shipping_condition_descr": "Standard Ground"
},
"payment_terms": "M120",
"payment_terms_descr": "Due on day 20 of the next mont",
"partners": [],
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 150.48,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 8.52,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 20,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 170.48,
"currency": "USD"
}
],
"header_texts": [],
"header_statuses": [
{
"type": "warning",
"code": "",
"descr": "Your PAA order is less than 250.00$, handling fee of 20.00$ will be applied to the invoice."
},
{
"type": "success",
"code": "",
"descr": "Simulation has been done successfully"
}
],
"items": [
{
"ordered_line": {
"item_id": "184a2148-3cb3-4f51-85c2-8101cf40aa64",
"item_no": "000100",
"parent_item_no": "000000",
"product_code": "715009632",
"product_descr": "BUMPER REAR B-487 KIT",
"order_qty": 1,
"dealer_po_item_no": "A-0010",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "ATV",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000101",
"parent_item_no": "000100",
"product_code": "715009632",
"product_descr": "BUMPER REAR B-487 KIT",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 223.49,
"wholesale_unit_price": 150.48,
"net_unit_price": 170.48,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "ATV",
"product_type": "30",
"plant": {
"name": "BRP - FORT WORTH PAA",
"city": "FORT WORTH",
"state": "TX",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 150.48,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 8.52,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 20,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 170.48,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2025-06-19T10:18:11Z",
"status_descr": "",
"qty": 1,
"availability_date": "2025-06-20",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": [
{
"type": "success",
"code": "",
"descr": "Simulation of the part has been done successfully"
}
]
}
]
}
]
}👉 Avec un kit, la liste des pièces incluses dans le kit n’est pas disponible.
En général, les pièces incluses dans le kit ne peuvent pas être commandées séparément.
Il existe des exceptions. Par exemple, ce kit de pare-chocs arrière inclut la pièce 704902778 Avertissement, porte-bagages, qui peut être commandée séparément.
Cependant, le concessionnaire n’est pas au courant que la pièce 704902778 est incluse dans le kit.
Un exemple de nomenclature de vente
Un exemple de nomenclature de vente est la pièce 505074936, des amortisseurs avant pour une motoneige.
Lorsque vous appelez l’API des pièces pour demander cette pièce, vous obtenez la réponse suivante.
{
"product_code": "505074936",
"product_descr": "FRONT SHOCK",
"product_type": "30",
"gross_weight": 2.424,
"gross_weight_uom": "KG",
"first_year_utilization": 2020,
"last_year_utilization": 2020,
"product_lines": [
"SNO"
],
"sales_status_code": "5",
"minimum_order_quantity": 1,
"sales_uom": "PC",
"market_classification": "COM",
"is_bom": true,
"units_of_measure": [
{
"volume": 13104,
"uom": "PC",
"weight_unit": "KG",
"volume_unit": "CCM",
"length": 56,
"width": 18,
"gross_weight": 2.424,
"net_weight": 2.424,
"dimension_unit": "CM",
"numerator": 1,
"denominator": 1,
"height": 13
}
],
"pricings": [
{
"price_type": "retail",
"valid_from": "2021-04-15",
"price_price_uom": 749.99,
"price_sales_uom": 749.99,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
},
{
"price_type": "dealer",
"valid_from": "2021-04-15",
"price_price_uom": 523.48,
"price_sales_uom": 523.48,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
}
],
"supersessions": []
}Vous voyez que le champ is_bom est true, ce qui indique qu’il existe d’autres pièces liées à cette pièce.
Lorsque le concessionnaire commande cette pièce, deux pièces sont expédiées, comme indiqué dans BOSSWeb.

Et dans la réponse de l’API Parts Order : une pièce est commandée (ordered_line avec "item_no": "000100", et deux sont expédiées :
- 505074897 AMORTISSEUR AVANT avec "item_no": "000200"
- 505074898 AMORTISSEUR AVANT avec "item_no": "000300"
❗ Il n’y a pas beaucoup de sales BOM car cela peut poser des problèmes au concessionnaire.
Comme de nombreuses pièces sont expédiées au concessionnaire pour un seul sales BOM, les pièces peuvent arriver à la concession à des moments différents.
C’est pourquoi seules quelques pièces sont créées en tant que sales BOM.
{
"pac_order_id": "339944ab-c6b4-4884-a571-d0ee91186189",
"sales_order_no": "",
"creation_date": "2025-06-19T10:32:26Z",
"dealer_po_no": "PO0001234",
"dealer_no": "0000694307",
"order_type": "regular",
"shipping_carrier": {
"shipping_condition": "S0",
"shipping_condition_descr": "Standard Ground"
},
"payment_terms": "M120",
"payment_terms_descr": "Due on day 20 of the next mont",
"partners": [],
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 1262.96,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 63.14,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 1262.96,
"currency": "USD"
}
],
"header_texts": [],
"header_statuses": [
{
"type": "success",
"code": "",
"descr": "Simulation has been done successfully"
}
],
"items": [
{
"ordered_line": {
"item_id": "0b7116d4-a1f8-4aab-bab2-2bace94377e9",
"item_no": "000100",
"parent_item_no": "000000",
"product_code": "505074936",
"product_descr": "FRONT SHOCK",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": true,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": []
},
{
"ordered_line": {
"item_id": "",
"item_no": "000200",
"parent_item_no": "000100",
"product_code": "505074897",
"product_descr": "FRONT SHOCK",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000201",
"parent_item_no": "000200",
"product_code": "505074897",
"product_descr": "FRONT SHOCK",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 877.49,
"wholesale_unit_price": 631.48,
"net_unit_price": 631.48,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "SNO",
"product_type": "30",
"plant": {
"name": "BRP - SAINT-JEAN-SUR-RICHELIEU",
"city": "ST-JEAN-SUR-RICHELIEU",
"state": "QC",
"country": "CA"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 631.48,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 31.57,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 631.48,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2025-06-19T10:32:26Z",
"status_descr": "",
"qty": 1,
"availability_date": "2025-06-23",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": [
{
"type": "success",
"code": "",
"descr": "Simulation of the part has been done successfully"
}
]
}
]
},
{
"ordered_line": {
"item_id": "",
"item_no": "000300",
"parent_item_no": "000100",
"product_code": "505074898",
"product_descr": "FRONT SHOCK",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000301",
"parent_item_no": "000300",
"product_code": "505074898",
"product_descr": "FRONT SHOCK",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 877.49,
"wholesale_unit_price": 631.48,
"net_unit_price": 631.48,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "SNO",
"product_type": "30",
"plant": {
"name": "BRP - SAINT-JEAN-SUR-RICHELIEU",
"city": "ST-JEAN-SUR-RICHELIEU",
"state": "QC",
"country": "CA"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 631.48,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 31.57,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 631.48,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2025-06-19T10:32:26Z",
"status_descr": "",
"qty": 1,
"availability_date": "2025-06-23",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": [
{
"type": "success",
"code": "",
"descr": "Simulation of the part has been done successfully"
}
]
}
]
}
]
}Dans le cas d’une nomenclature de vente, les pièces incluses sont visibles des revendeurs et peuvent être commandées séparément.
Lors de l'appel de l'API des pièces pour récupérer la pièce 505074897, vous obtenez les informations suivantes.
{
"product_code": "505074897",
"product_descr": "FRONT SHOCK",
"product_type": "30",
"gross_weight": 2.098,
"gross_weight_uom": "KG",
"first_year_utilization": 2021,
"last_year_utilization": 2025,
"product_lines": [
"SNO"
],
"sales_status_code": "4",
"minimum_order_quantity": 1,
"sales_uom": "PC",
"market_classification": "COM",
"is_bom": true,
"units_of_measure": [
{
"volume": 13104,
"uom": "PC",
"weight_unit": "KG",
"volume_unit": "CCM",
"length": 56,
"width": 18,
"gross_weight": 2.098,
"net_weight": 2.098,
"dimension_unit": "CM",
"numerator": 1,
"denominator": 1,
"height": 13
}
],
"pricings": [
{
"price_type": "retail",
"valid_from": "2025-06-07",
"price_price_uom": 877.49,
"price_sales_uom": 877.49,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
},
{
"price_type": "dealer",
"valid_from": "2025-06-07",
"price_price_uom": 631.48,
"price_sales_uom": 631.48,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
}
],
"supersessions": []
}Le concessionnaire peut commander la pièce 505074897, comme indiqué dans la réponse de l’API de commande de pièces.
{
"pac_order_id": "7af63abb-0d86-4eaf-a9e9-ab9a30910e81",
"sales_order_no": "",
"creation_date": "2025-06-19T10:39:15Z",
"dealer_po_no": "PO0001234",
"dealer_no": "0000694307",
"order_type": "regular",
"shipping_carrier": {
"shipping_condition": "S0",
"shipping_condition_descr": "Standard Ground"
},
"payment_terms": "M120",
"payment_terms_descr": "Due on day 20 of the next mont",
"partners": [],
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 631.48,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 31.57,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 631.48,
"currency": "USD"
}
],
"header_texts": [],
"header_statuses": [
{
"type": "success",
"code": "",
"descr": "Simulation has been done successfully"
}
],
"items": [
{
"ordered_line": {
"item_id": "c1e1cdf4-d200-4bd4-bcb5-fbf5a4fc68b0",
"item_no": "000100",
"parent_item_no": "000000",
"product_code": "505074897",
"product_descr": "FRONT SHOCK",
"order_qty": 1,
"dealer_po_item_no": "A-0010",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000101",
"parent_item_no": "000100",
"product_code": "505074897",
"product_descr": "FRONT SHOCK",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 877.49,
"wholesale_unit_price": 631.48,
"net_unit_price": 631.48,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "SNO",
"product_type": "30",
"plant": {
"name": "BRP - SAINT-JEAN-SUR-RICHELIEU",
"city": "ST-JEAN-SUR-RICHELIEU",
"state": "QC",
"country": "CA"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 631.48,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 31.57,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 631.48,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2025-06-19T10:39:15Z",
"status_descr": "",
"qty": 1,
"availability_date": "2025-06-23",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": [
{
"type": "success",
"code": "",
"descr": "Simulation of the part has been done successfully"
}
]
}
]
}
]
}Remplacement de pièce
Une pièce peut être remplacée par une autre pour de nombreuses raisons. Par exemple, BRP peut changer le fournisseur de la pièce. La nouvelle pièce est équivalente en « forme, ajustement et fonction », mais elle possède un nouveau numéro de pièce.
Pour chaque objet pièce, le remplacementdans le tableau de propriétés contient la chaîne de remplacement. La chaîne de remplacement va de la pièce la plus récente à la plus ancienne. Si le tableau est vide, la pièce n’en remplace aucune autre.
Une pièce peut appartenir à plus d’une chaîne de remplacement !
Cela signifie que la même pièce peut remplacer deux pièces différentes.
Chaîne de remplacement
Il existe deux types de chaînes de remplacement : un‑pour‑un et un‑pour‑plusieurs.
Un‑pour‑un
Une pièce en remplace une autre. Ici, la pièce 204130176 (superseding_product) remplace la pièce 204560132 (superseded_product).
Lors de l’appel à l’API des pièces pour récupérer la pièce 204130176 ou 204560132, les mêmes informations de remplacement sont renvoyées, comme indiqué ci‑dessous.
"supersessions": [
{
"superseded_product": "204560132",
"superseding_product": "204130176", <-- current part
"direction": "forward"
}
]Avec le temps, une chaîne de remplacement peut être créée : la pièce A est remplacée par B, qui est remplacée par C, qui est remplacée par D, etc.
Par exemple, l’API Parts renvoie les informations de succession suivantes pour la pièce 219000819.
"supersessions": [
{
"superseded_product": "219000748",
"superseding_product": "219000819", <-- current part
"direction": "forward"
},
{
"superseded_product": "219000722",
"superseding_product": "219000748",
"direction": "forward"
},
{
"superseded_product": "219000708",
"superseding_product": "219000722",
"direction": "forward"
},
{
"superseded_product": "219000562",
"superseding_product": "219000708",
"direction": "forward"
}
]La chaîne de succession commence avec la pièce 219000562 (superseded_product à la ligne 18) remplacée par la pièce 219000708 (superseding_product à la ligne 19).
La chaîne se termine avec la pièce 219000748 (superseded_product à la ligne 3) remplacée par la pièce 219000819 (superseding_product à la ligne 4).
👉 Le premier point critique à retenir est que toutes les entrées dans le tableau supersessions où superseding_product est product_code représentent les successions actuelles.
👉 Le deuxième point critique est que si la pièce est remplacée, la première entrée dans le tableau supersession où superseded_product est product_code représente la succession actuelle.
Ceci est affiché dans BOSSWeb sur l’écran de l’historique des pièces pour la pièce 219000748, où la pièce 219000819 est le numéro de pièce actuel.

Un-à-plusieurs
Une pièce peut en remplacer plusieurs. Un exemple est la pièce 420239135, qui possède les informations de substitution suivantes, indiquant que les pièces 420239132 et 711239132 (superseded_product) sont toutes deux remplacées par 420239135 (superseding_product).
👉 Le premier point critique à retenir est que toutes les entrées du tableau supersessions où superseding_product est product_code représentent les substitutions actuelles.
👉 Le deuxième point critique est que si la pièce est remplacée, la première entrée du tableau supersession où superseded_product est product_code représente la substitution actuelle.
{
"product_code": "420239135",
"product_descr": "COMPRESSION SPRING",
....
"units_of_measure": [
...
],
"pricings": [
...
],
"supersessions": [
{
"superseded_product": "420239132",
"superseding_product": "420239135", <-- current part
"direction": "forward"
},
{
"superseded_product": "711239132",
"superseding_product": "420239135", <-- current part
"direction": "forward"
}
]
}Ceci est affiché dans BOSSWeb dans l’écran Historique des pièces pour la pièce 420239135.

Les informations de substitution peuvent être plus complexes lorsqu’une pièce en remplace plusieurs qui ont leur propre chaîne de substitution.
Par exemple, la pièce 269501920 remplace deux pièces, comme indiqué dans les informations de substitution.
"supersessions": [
{
"superseded_product": "269501855",
"superseding_product": "269501920", <-- current part
"direction": "forward"
},
{
"superseded_product": "269501783",
"superseding_product": "269501855",
"direction": "forward"
},
{
"superseded_product": "269501844",
"superseding_product": "269501920", <-- current part
"direction": "forward"
},
{
"superseded_product": "269501693",
"superseding_product": "269501783",
"direction": "forward"
},
{
"superseded_product": "269501786",
"superseding_product": "269501844",
"direction": "forward"
}
]Les deux pièces remplacées ont leurs chaînes de succession.
"product_code": "269501855",
....
"supersessions": [
{
"superseded_product": "269501855",
"superseding_product": "269501920", <-- current part
"direction": "forward"
},
{
"superseded_product": "269501783",
"superseding_product": "269501855",
"direction": "forward"
},
{
"superseded_product": "269501693",
"superseding_product": "269501783",
"direction": "forward"
}
]
"product_code": "269501844",
...
"supersessions": [
{
"superseded_product": "269501844",
"superseding_product": "269501920", <-- current part
"direction": "forward"
},
{
"superseded_product": "269501786",
"superseding_product": "269501844",
"direction": "forward"
}
]Cela est affiché dans BOSSWeb dans l'écran Historique des pièces pour les trois pièces.

Règle de Supersession
Pour déterminer si une pièce est remplacée, examinez le tableau supersessions :
- Si le tableau est vide, la pièce n’est pas remplacée.
- Si le product_code de la pièce se trouve dans le champ superseded_product, la pièce est remplacée.
- Si le product_code de la pièce se trouve dans le champ superseding_product, la pièce remplace une autre pièce.
- Les points 2 et 3 peuvent être vrais simultanément. Dans ce cas, la règle 2 prévaut et la pièce est considérée comme remplacée. Dans ce cas, la supersession est représentée par la première entrée du tableau supersessions.
Direction de Supersession
Dans une chaîne de supersession, lorsqu’une pièce est remplacée par une autre, elle peut parfois être encore utilisée et être interchangeable avec la nouvelle pièce.
La propriété direction pour la pièce remplacée indique si l’ancienne et la nouvelle pièce sont interchangeables.
Exemple : la pièce A est remplacée (supersession) par la pièce B.
- La direction est avant : lorsque le concessionnaire commande la pièce A, la pièce B est expédiée. La pièce A ne peut plus être utilisée.
- La direction est les deux : lorsque le concessionnaire commande la pièce A, il reçoit soit la pièce A ou la pièce B. Les pièces A et B sont interchangeables.
Voici un exemple de la pièce 204160371, qui remplace une ancienne pièce (204160343) et est à son tour remplacée par la nouvelle pièce 267001006.
{
"product_code": "204160371",
"supersessions": [
{
"superseded_product": "204160343", // old part
"superseding_product": "204160371",
"direction": "forward"
},
{
"superseded_product": "204160371",
"superseding_product": "267001006", // newer part
"direction": "both"
}
]
}Nous voyons aussi que la propriété direction pour la substitution de la pièce 267001006 est les deux. Cela signifie que le concessionnaire peut recevoir soit la pièce 204160371, soit la pièce 267001006 lorsqu’il la commande, puisqu’elles sont interchangeables.
Les scénarios sont :
- Le concessionnaire commande 267001006 et reçoit 26700100.
- Le concessionnaire commande 204160371 et reçoit 204160371.
- Le concessionnaire commande 204160371 et reçoit 267001006.
- Le concessionnaire commande 267001006 et reçoit 204160371.
- Le concessionnaire commande 204160371 et reçoit à la fois 204160371 et 267001006.
- Le concessionnaire commande 267001006 et reçoit à la fois 267001006 et 204160371.
Unité de mesure de vente
La sales_uom propriété de la pièce est importante pour comprendre le prix de la pièce. Les valeurs possibles sont listées dans la table des Unités de mesure dans la section Ressource : Pièce.
L’unité de mesure la plus courante est PC (pièce), utilisée pour 98 % des pièces. Les suivantes les plus courantes sont PR (paire), utilisée uniquement pour les vêtements, et CS (caisse).
Quantité par emballage = Nombre d’articles
Les unités PAC et CS sont utilisées pour les produits vendus en boîtes ou en paquets, comme les bouteilles d’huile. Pour la plupart des unités de mesure, la propriété pricings.in_package.quantity d’une pièce contient 1, indiquant que chaque pièce est vendue séparément.
Pour les unités PAC et CS , la propriété pricings.in_package.quantity d’une pièce contient généralement le nombre d’articles dans l’emballage ou la caisse. Voir ci-dessous
Examinons un exemple avec la pièce 20037, illustrée ci-dessous. Le PAC est l’unité de mesure utilisée et la propriété pricings.in_package.quantity contient 10.
{
"product_code": "20037",
"product_descr": "RONDELLE *WASHER",
"product_type": "30",
"gross_weight": 1,
"gross_weight_uom": "G",
"first_year_utilization": 1995,
"last_year_utilization": 2020,
"product_lines": [
"ATV",
"SNO"
],
"sales_status_code": "4",
"minimum_order_quantity": 1,
"sales_uom": "PAC",
"market_classification": "COM",
"units_of_measure": [
{
"volume": 7.5,
"uom": "PC",
"weight_unit": "G",
"volume_unit": "CCM",
"length": 3,
"width": 2.5,
"gross_weight": 1,
"net_weight": 1,
"dimension_unit": "CM",
"numerator": 1,
"denominator": 1,
"height": 1
}
],
"pricings": [
{
"price_type": "retail",
"valid_from": "2022-08-01",
"price_price_uom": 2.49,
"price_sales_uom": 24.9,
"currency": "CAD",
"in_package": {
"uom": "PAC",
"quantity": 10
}
},
{
"price_type": "dealer",
"valid_from": "2022-08-01",
"price_price_uom": 1.48,
"price_sales_uom": 14.8,
"currency": "CAD",
"in_package": {
"uom": "PAC",
"quantity": 10
}
}
],
"supersessions": [
{
"superseded_product": "M20037",
"superseding_product": "20037",
"direction": "forward"
}
]
}La propriété price_sales_uom est le prix pour le code produit. La propriété price_price_uom est le prix pour 1 article.
Les deux prix sont identiques pour les pièces vendues à l’unité, comme toutes les pièces avec l’unité de mesure PC .
Pour les PAC et CS comme unités de mesure, lorsque la pricings.in_package.quantity propriété est différente de 1, la price_sales_uom valeur de la propriété est la price_price_uom valeur de la propriété multipliée par la pricings.in_package.quantity valeur de la propriété.
pricings.in_package.quantity x price_price_uom = price_sales_uom
Dans notre exemple,
10 x 1.48 = 14.80
Notez que vous pouvez utiliser les prix revendeur ou détail pour calculer. C’est une bonne chose que nous obtenions le même résultat.
La quantité dans le colis n'est pas égale au nombre d’articles
Pour de nombreuses pièces, en utilisant l’unité de mesure PAC ou CS , la propriété pricings.in_package indique combien d’articles sont dans la caisse. Cependant, pour certaines pièces, la quantité est de 1.
👉 Gardez à l’esprit que DCP ne gère pas les données du catalogue des pièces !
Nous pouvons signaler des problèmes à l’équipe de gestion des pièces, mais nous ne pouvons pas changer la manière dont les pièces sont gérées ! 🤷♂️
Voyons un exemple d’une pièce avec une quantité de CS de 1 : le code produit 779158, qui est une huile pour engrenages synthétique.
La réponse ci-dessous est retournée lors de l’appel à l’API Parts pour récupérer les informations sur le code produit 779158.
{
"product_code": "779158",
"product_descr": "GEAR OIL SYNTHETIC 75W90 32 OZ/0,946L",
"product_type": "110",
"gross_weight": 10.8,
"gross_weight_uom": "KG",
"first_year_utilization": 2018,
"last_year_utilization": 2023,
"product_lines": [
"3WV",
"ATV",
"PTN",
"PWC",
"SNO",
"SSV"
],
"sales_status_code": "5",
"minimum_order_quantity": 1,
"sales_uom": "CS",
"market_classification": "COM",
"units_of_measure": [
{
"volume": 29808,
"uom": "CS",
"weight_unit": "KG",
"volume_unit": "CCM",
"length": 34.5,
"width": 27,
"gross_weight": 10.8,
"net_weight": 10.8,
"dimension_unit": "CM",
"numerator": 1,
"denominator": 1,
"height": 32
}
],
"pricings": [
{
"price_type": "retail",
"valid_from": "2021-10-15",
"price_price_uom": 25.99,
"price_sales_uom": 25.99,
"currency": "USD",
"in_package": {
"uom": "CS",
"quantity": 1
}
},
{
"price_type": "dealer",
"valid_from": "2022-06-03",
"price_price_uom": 16.48,
"price_sales_uom": 16.48,
"currency": "USD",
"in_package": {
"uom": "CS",
"quantity": 1
}
}
],
"supersessions": []
}Le pricings.in_package indique que l’unité de mesure CS est utilisée. Cependant, la propriété pricings.in_package.quantity est égale à 1. Donc, comment savoir combien de bouteilles se trouvent dans la caisse ?
Eh bien, nous ne pouvons pas le savoir puisque la propriété pricings.in_package.quantity est égale à 1, et les valeurs de price_price_uom et price_sales_uom sont identiques.
Lors du traitement des données de l’API Parts, assurez-vous de valider la valeur pricings.in_package.quantity par rapport aux valeurs price_price_uom et price_sales_uom.
Si
pricings.in_package.quantity x price_price_uom price_sales_uom
Définissez la quantité dans votre DMS sur
pricings.in_package.quantity = price_sales_uom / price_price_uom
Quantité Minimum de Commande
La quantité minimum de commandede la pièce est une indication pour le concessionnaire lors de la commande de la pièce.
Notez que la propriété quantité minimum de commanden’est pas disponible pour toutes les pièces. Dans la plupart des cas, la propriété est nulle ou une chaîne vide.
Si la quantité minimale de commandea une valeur différente de 1, lors de la commande de la pièce, la quantité doit être au moins égale à la valeur de la quantité minimale de commande.
Prix manquant
Bien que l’API DCP Parts donne accès au catalogue de pièces, d’autres groupes d’affaires chez BRP gèrent les données du catalogue.
Pour plusieurs raisons, il peut arriver que les prix (ou d’autres informations) soient manquants pour une pièce. Si la pièce est vendable (c’est‑à‑dire que le code de statut de vente est 4) et que les prix sont manquants, un avertissement doit être affiché au concessionnaire. Le concessionnaire doit alors ouvrir un ticket auprès du service d’assistance de BRP pour signaler le problème.
La date de dernière mise à jour par rapport à la date de validité
Lorsque vous appelez l’API des pièces pour obtenir les modifications depuis une date spécifique, vous appelez le Obtenir le catalogue des pièces endpoint avec le paramètre last_change_date. Un exemple est fourni dans la section Obtenir les modifications de la semaine dernière.
Supposons que vous appeliez l’API des pièces le 7 juillet 2024, avec cet appel :
curl --location 'https://cloud-api.brp.com/dcp/v4/parts?sales_org=3020¤cy=USD&last_changed_date=2024-12-16&language=en-US&page=1' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'L’API des pièces renvoie toutes les pièces mises à jour depuis le 16 décembre 2024 (inclus).
👉 La valeur last_change_date N’EST PAS renvoyée dans la réponse.
Dans la réponse de l'API Parts, vous voyez la valid_from propriété dans chacune des entrées de pricings.
{
"items": [
{
"product_code": "517309742",
"product_descr": "COVER_CVT ASSY",
"product_type": "30",
"gross_weight": 111,
"gross_weight_uom": "G",
"first_year_utilization": 2026,
"last_year_utilization": 2026,
"product_lines": [
"SNO"
],
"sales_status_code": "4",
"minimum_order_quantity": 1,
"sales_uom": "PC",
"market_classification": "",
"units_of_measure": [
{
"volume": 0,
"uom": "PC",
"weight_unit": "G",
"volume_unit": "",
"length": 0,
"width": 0,
"gross_weight": 111,
"net_weight": 111,
"dimension_unit": "",
"numerator": 1,
"denominator": 1,
"height": 0
}
],
"pricings": [
{
"price_type": "retail",
"valid_from": "2024-01-10",
"price_price_uom": 134.99,
"price_sales_uom": 134.99,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
},
{
"price_type": "dealer",
"valid_from": "2024-01-10",
"price_price_uom": 79.48,
"price_sales_uom": 79.48,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
}
],
"supersessions": []
},
{
"product_code": "517309725",
"product_descr": "PANEL_ACOUSTIC",
"product_type": "30",
"gross_weight": 111,
"gross_weight_uom": "G",
"first_year_utilization": 2026,
"last_year_utilization": 2026,
"product_lines": [
"SNO"
],
"sales_status_code": "4",
"minimum_order_quantity": 1,
"sales_uom": "PC",
"market_classification": "",
"units_of_measure": [
{
"volume": 0,
"uom": "PC",
"weight_unit": "G",
"volume_unit": "",
"length": 0,
"width": 0,
"gross_weight": 111,
"net_weight": 111,
"dimension_unit": "",
"numerator": 1,
"denominator": 1,
"height": 0
}
],
"pricings": [
{
"price_type": "retail",
"valid_from": "2024-01-10",
"price_price_uom": 41.99,
"price_sales_uom": 41.99,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
},
{
"price_type": "dealer",
"valid_from": "2024-01-10",
"price_price_uom": 24.98,
"price_sales_uom": 24.98,
"currency": "USD",
"in_package": {
"uom": "PC",
"quantity": 1
}
}
],
"supersessions": []
}
],
"links": {
"previous": null,
"next": "https://cloud-api.brp.com/dcp/v4/parts?language=en-US&last_changed_date=2024-12-16&sales_org=3020¤cy=USD&limit=2&page=2"
},
"meta": {
"total_records": 6314,
"total_pages": 3157,
"current_page": 1,
"limit": 2
}
}❗ Le valid_from propriété N'EST PAS la last_changed_date.
❗ Lors de l’appel à l’API Parts avec une last_changed_date, chaque pièce renvoyée a été modifiée et doit être mise à jour.
⛔ Vous ne pouvez pas utiliser la date valid_from pour décider si une pièce doit être mise à jour !
La propriété valid_from indique quand le prix est devenu valide ; elle n’indique pas quand une pièce a été modifiée.
👉 Notez que la date valid_from est toujours égale à la date actuelle ou à une date passée. Si un prix est valable à une date future, vous ne verrez pas ce prix dans la réponse.
La modification d’une pièce ne concerne pas uniquement les prix. La description des pièces ou leur supersession peut être modifiée, et ces changements sont pris en compte lors du traitement du last_changed_date.
Voici un scénario pour vous aider à comprendre.
👉 N'oubliez pas que votre DMS doit appeler quotidiennement l’API Parts. Cela n’est pas montré ici afin de garder l’exemple simple.
- Le 1er septembre, les prix de la pièce sont modifiés, et la date valid_from est fixée au 1er octobre.
- Votre DMS appelle l’API Parts le 2 septembre avec un last_changed_date du 30 août :
- Les nouveaux prix de la pièce ne sont pas valables.
- Comme rien d’autre n’a changé, la pièce n’est pas incluse dans la réponse.
- Le 3 septembre, la description de la pièce a été modifiée.
- Votre DMS appelle l’API Parts le 4 septembre avec un last_changed_date du 1er septembre :
- La pièce a été modifiée, elle est donc incluse dans la réponse.
- Cependant, les nouveaux prix ne sont toujours pas valides, donc les prix actuels sont utilisés.
- Votre DMS appelle l’API des pièces le 4 octobre avec une last_changed_date du 1er octobre :
- Les nouveaux prix sont valides, donc la pièce est incluse dans la réponse avec les nouveaux prix.
- Votre DMS appelle l’API des pièces le 5 octobre avec une last_changed_date du 2 octobre :
- La pièce n’est pas incluse dans la réponse puisque rien n’a changé depuis le 2 octobre.
Référence de l'API
curl --location 'https://qa-cloud-api.brp.com/dcp/v4/parts?sales_org=3020¤cy=USD&last_changed_date=1900-01-01&language=en-US&page=1&limit=5' \
--header 'Authorization: Bearer REPLACE_ME' curl --location 'https://cloud-api.brp.com/dcp/v4/part/779140?sales_org=1010¤cy=CAD&language=fr-CA' \
--header 'Authorization: Bearer REPLACE_ME' Tables de référence
Organisation des ventes
Clé | Valeur | Version 3 | Version 4 |
|---|---|---|---|
Canada | 1010 | | X |
États-Unis | 3020 | | X |
Scandinavie | 6030 | X | |
Europe (EMEA) | 6050 | X | |
Mexique | 8070 | X | |
Brésil | 8075 | X | |
Asie-Pacifique (APAC) | 7080 | X | |
Devise
Organisation de vente | Devise | Version 3 | Version 4 |
|---|---|---|---|
1010 - Canada | CAD | | X |
3020 - États-Unis | USD | | X |
6030 - Scandinavie | EUR | X | |
6030 - Scandinavie | NOK | X | |
6050 - Europe (EMEA) | SEK | X | |
6050 - Europe (EMEA) | EUR | X | |
6050 - Europe (EMEA) | GBP | X | |
8070 - Mexique | MXN | X | |
8075 - Brésil | BRL | X | |
7080 - Asie-Pacifique (APAC) | AUD | X | |
7080 - Asie-Pacifique (APAC) | NZD | X | |
Langues
Langue en code de langue ISO (ISO-639-1 + ISO 3166-1)
Format : xx-XX
xx : code de langue en minuscules
XX : code de pays en majuscules
Valeurs de codes de langue prises en charge
Code | Langue |
|---|---|
de | Allemand |
en | Anglais |
es | Espagnol |
fi | Finnois |
fr | Français |
it | Italien |
nl | Néerlandais |
no | Norvégien |
pt | Portugais (Brésil) |
sv | Suédois |
Comment faire
Cette section fournit des informations sur la manière d’obtenir des résultats spécifiques avec l’API.
Obtenir la première page
Obtenez la première page du catalogue complet des pièces. Dans ce scénario, la requête est effectuée pour un concessionnaire canadien :
- Organisation commerciale : 1010
- Devise : CAD
- Langue : fr-CA
La charge utile de la réponse contient la liste des Pièce ressources, l'liens objet, et l'métadonnées objet. La liens.précédent propriété est NULLE puisque c’est la première page. La liens.suivant propriété contient l’URL de la page suivante.
curl --location 'https://cloud-api.brp.com/dcp/v4/parts?sales_org=1010¤cy=CAD&last_changed_date=1900-01-01&language=fr-CA&page=1&limit=2' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' Obtenir la page suivante
Obtenez la page suivante du catalogue complet en utilisant l’URL links.next trouvée dans la charge utile de la réponse.
La charge utile de la réponse contient la liste des ressources Pièce, l’objet links, ainsi que l’objet meta. La propriété links.previous contient l’URL de la première page. La propriété links.next contient l’URL de la page suivante.
curl --location 'https://cloud-api.brp.com/dcp/v4/parts?sales_org=1010¤cy=CAD&last_changed_date=1900-01-01&language=fr-CA&page=2&limit=2' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' Obtenir la dernière page
Obtenez la page suivante du catalogue complet en utilisant l’URL links.next trouvée dans la réponse.
Le corps de la réponse contient la liste des ressources Pièce, l’objet links, et l’objet meta. La propriété links.previous contient l’URL de la page précédente. La propriété links.next est NULL puisque c’est la dernière page.
curl --location 'https://cloud-api.brp.com/dcp/v4/parts?sales_org=1010¤cy=CAD&last_changed_date=1900-01-01&language=fr-CA&page=606&limit=2' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' Obtenir les changements de la semaine dernière
Obtenez la première page des modifications apportées au catalogue de pièces au cours des sept derniers jours, en supposant que l'appel ait été effectué le 16 décembre 2024.
Dans ce scénario, la requête est effectuée pour un concessionnaire américain :
- Organisation commerciale : 3020
- Devise : USD
- Langue : en-US
curl --location 'https://cloud-api.brp.com/dcp/v4/parts?sales_org=3020¤cy=USD&last_changed_date=2024-12-09&language=en-US&page=1&limit=2' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Obtenir une pièce
Obtenir une pièce spécifique pour un concessionnaire américain :
- Organisation de vente : 3020
- Devise : USD
- Langue : en-US
curl --location 'https://cloud-api.brp.com/dcp/v4/part/271001633?sales_org=3020¤cy=USD&language=en-US' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' Gestion des erreurs
Cette section présente divers scénarios d'appels incorrects ou erronés, qui entraînent des messages d'erreur et des résultats incorrects.
400 Mauvaise requête
Le code d’état 400 est généralement observé durant le développement et l’intégration et ne devrait pas être reçu lors d’opérations normales. La réponse renvoyée contient les informations nécessaires pour corriger le problème.
De nombreux problèmes peuvent entraîner un code d’état 400 ; les plus courants sont répertoriés dans le tableau ci‑dessous.
Réponse | Résolution |
|---|---|
Retourné si l'organisation commerciale est invalide. {
"status": "400",
"id": "rrt-0e20a46609994a8ad-c-ea-22696-423285-1",
"title": "mauvaise_requête",
"meta": {
"service": "01",
"detail": "échec de la validation de la requête",
"payload": {
"details": [
{
"message": "La valeur (\"1000\") ne figure pas dans l'énumération (valeurs possibles : [\"6030\",\"6050\",\"8070\",\"8075\",\"7080\",\"1010\",\"3020\"]): []"
}
]
}
}
} | Assurez-vous que l'organisation commerciale correspond à l'une de celles du tableau Organisation commerciale. |
Retourné si la devise est invalide. {
"status": "400",
"id": "rrt-0e20a46609994a8ad-c-ea-22696-423285-2",
"title": "mauvaise_requête",
"meta": {
"service": "01",
"detail": "échec de la validation de la requête",
"payload": {
"details": [
{
"message": "La valeur (\"UDS\") ne figure pas dans l'énumération (valeurs possibles : [\"MXN\",\"NZD\",\"AUD\",\"EUR\",\"NOK\",\"SEK\",\"GBP\",\"BRL\",\"CAD\",\"USD\"]): []"
}
]
}
}
} | Assurez-vous que l'organisation commerciale correspond à l'une de celles du tableau Devise. |
Retourné si le format de langue n’est pas valide. {
"status": "400",
"id": "rrt-0e20a46609994a8ad-c-ea-22696-423546-1",
"title": "mauvaise_requête",
"meta": {
"service": "01",
"detail": "échec de la validation de la requête",
"payload": {
"details": [
{
"message": "L’expression régulière ECMA 262 \"^[a-z]{2}-[A-Z]{2}$\" ne correspond pas à la chaîne \"XX-YY\": []"
}
]
}
}
} | Le format de langue valide est le suivant Format : xx-XX xx : code langue en minuscules XX : code pays en majuscules Un format de langue valide doit être saisi pour produire une réponse correcte. |
Retourné si un paramètre est invalide {
"status": "400",
"id": "rrt-0e20a46609994a8ad-c-ea-22696-423285-4",
"title": "mauvaise_requête",
"meta": {
"service": "01",
"detail": "échec de la validation de la requête",
"payload": {
"details": [
{
"message": "Le paramètre 'sales_org' est requis mais manquant.: []"
}
]
}
}
} | Assurez-vous que tous les paramètres obligatoires sont fournis et ont une valeur valide. |
Retourné lorsqu'un paramètre obligatoire est manquant. {
"status": "400",
"id": "rrt-0e20a46609994a8ad-c-ea-22695-423701-2",
"title": "mauvaise_requête",
"meta": {
"service": "01",
"detail": "échec de la validation de la requête",
"payload": {
"details": [
{
"message": "Le paramètre de requête 'currency' est requis sur le chemin '/parts' mais n'a pas été trouvé dans la requête.: []"
}
]
}
}
} | Assurez-vous que tous les paramètres obligatoires sont fournis et ont une valeur valide. |
401 Non autorisé
Le code d’erreur 401 Non autorisé est renvoyé lorsque vous essayez d’appeler l’API avec un access_token expiré.
Vous devez obtenir un nouvel access_token avec un appel à l’API d'authentification d'application.
Le code d’erreur 401 Non autorisé est également renvoyé si vous n’avez pas demandé l’accès à l’API en créant un ticket dans le Jira DCP.
Lorsque vous êtes prêt à commencer à travailler sur une API, vous devez créer un ticket de certification dans Jira, comme décrit dans la section Activités de certification avec Jira.
Si vous avez déjà commencé à travailler sur une API et avez perdu l’accès, créez un ticket de support comme décrit dans la section Ouvrir un ticket de support.
404 Introuvable
Le code d’état 404 Not Found est renvoyé lorsque le numéro de pièce (code produit) est introuvable.
{
"status": "404",
"id": "rrt-06edc2039f6ce7033-b-ea-9106-103440333-3.1",
"title": "not_found",
"meta": {
"service": "07",
"detail": "Product code 222981605 not found."
}
}Le concessionnaire a peut-être fait une erreur en saisissant le numéro de pièce. Vous devez signaler l’erreur à l’utilisateur afin qu’il puisse réessayer.
Exigences DSP
Exigences fonctionnelles
ID | Type | Exigence |
|---|---|---|
1 | Obligatoire | L’API des Pièces doit être automatiquement appelée quotidiennement pour obtenir les modifications du catalogue des 2 derniers jours. ❗ Aucune action manuelle du concessionnaire ne doit être nécessaire pour mettre à jour le catalogue dans son DMS ❗ |
2 | Obligatoire | Le catalogue de pièces complet doit être mis à disposition du concessionnaire. L’API des Pièces doit être appelée au moins une fois pour récupérer le catalogue complet des pièces. |
3 | Obligatoire | Le concessionnaire doit pouvoir rechercher un numéro de pièce spécifique dans votre DMS et afficher le résultat à l’écran. |
4 | Obligatoire | Un message est affiché au concessionnaire si une pièce vendable n’a pas de prix. |
5 | Optionnel | Le concessionnaire peut rechercher et naviguer dans le catalogue des pièces, le filtrer par type de pièce et ligne de produit, et rechercher du texte dans la description. |
6 | Optionnel | L’API des Pièces devrait être appelée mensuellement pour obtenir les modifications des 30 derniers jours. |
7 | Obligatoire | Les mesures des pièces doivent être visibles pour le concessionnaire. |
Activités de certification
Cette section présente toutes les activités de certification et les validations qui doivent être réalisées pour certifier l'API.
Assurance qualité
Les tests répertoriés dans le tableau ci-dessous doivent être réalisés avec succès dans l’environnement de test avant que vous puissiez commencer la phase pilote concessionnaire.
ID | Test | Résultat attendu |
|---|---|---|
1 | Le catalogue complet des pièces est chargé, et le DMS affiche les pièces suivantes :
| Le catalogue complet des pièces est chargé dans le DMS. ❗ Les mesures sont visibles pour le concessionnaire. |
2 | Le catalogue des pièces est mis à jour quotidiennement | Les modifications du catalogue des pièces sont visibles dans le DMS. |
3 | Rechercher un numéro de pièce spécifique (715009775) | Un numéro de pièce spécifique peut être recherché dans le DMS, et le résultat est affiché. |
4 | Rechercher un numéro de pièce invalide (12345678) | Le DMS permet de rechercher un numéro de pièce spécifique ; une erreur apparaîtra si le numéro est invalide. |
5 | Rechercher un numéro de pièce obsolète (204072321) | Le DMS peut rechercher un numéro de pièce spécifique, et un message apparaîtra si la pièce est obsolète. |
6 | Rechercher un numéro de pièce vintage (080037100) | Un numéro de pièce spécifique peut être recherché dans le DMS, et un message s’affiche si la pièce est vintage et ne peut pas être commandée via BRP. |
Pilote concessionnaire
Le tableau ci-dessous décrit les paramètres et validations du pilote concessionnaire.
Paramètre | Valeur |
|---|---|
Environnement | Production |
Nombre de concessionnaires | 1 à 3 |
Durée | 2 semaines |
Validation 1 | Le catalogue de pièces est mis à jour quotidiennement |
Validation 2 | Le catalogue de pièces est accessible au concessionnaire |
Validation 3 | Un numéro de pièce spécifique peut être recherché depuis le DMS, et le résultat est affiché |
Postman
Cette section décrit ce qui est disponible dans Postman pour explorer l’API.
Environnements
Un environnement Postman est disponible pour essayer l’API Parts. Cet environnement Postman contient les variables utilisées par les requêtes et est configuré pour se connecter à l’environnement de test.
Collections
La collection DMS - Parts contient des exemples d’appels API pour obtenir le catalogue des pièces ou une pièce spécifique.