API d'inventaire des pièces
Commencer
L’API d’inventaire des pièces est utilisée pour rechercher la disponibilité et l’emplacement des pièces dans l’inventaire de BRP.
Pour rechercher la disponibilité et l’emplacement des pièces dans l’inventaire des concessionnaires, consultez l’API d'inventaire des pièces du concessionnaire.
Cette interface est importante car elle permet aux concessionnaires d’obtenir une vue claire de la disponibilité des pièces PA&A auprès de BRP avant de passer une commande. Si une pièce n’est pas disponible auprès de BRP, le concessionnaire peut utiliser l’API d'inventaire des pièces du concessionnaire pour rechercher l’inventaire des concessions à proximité.
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 plus de détails sur l’authentification et les identifiants.
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 : Disponibilité des pièces
Cette ressource est utilisée pour indiquer la disponibilité de la pièce demandée par le concessionnaire dans l’inventaire de BRP.
Représentation JSON
{
"requested_line": {
"product_code": "779140",
"product_descr": "OIL 4T 0W40 SYNTHETIC GAL/3,785L",
"requested_qty": 400,
"min_order_qty": 1,
"is_sales_bom": false
},
"located_lines": [
{
"product_code": "779140",
"product_descr": "OIL 4T 0W40 SYNTHETIC GAL/3,785L",
"determined_qty": 279,
"sales_uom": "CS",
"price_uom": "BT",
"package_uom": "CS",
"in_package": {
"quantity": 3,
"uom": "BT"
},
"msrp_unit_price": 62.99,
"dealer_unit_price": 40.31,
"currency": "CAD",
"is_substitute_product": false,
"substituted_product_code": null,
"plant": {
"name": "Bombardier Rec. Prod. Inc",
"city": "St-Jean-sur-Richelieu",
"state": "QC",
"country": "CA"
},
"availabilities": [
{
"status_code": "allocated",
"status_descr": null,
"qty": 279,
"availability_date": "2023-05-05"
}
]
},
{
"product_code": "779140",
"product_descr": "OIL 4T 0W40 SYNTHETIC GAL/3,785L",
"determined_qty": 17,
"sales_uom": "CS",
"price_uom": "BT",
"package_uom": "CS",
"in_package": {
"quantity": 3,
"uom": "BT"
},
"msrp_unit_price": 62.99,
"dealer_unit_price": 40.31,
"currency": "CAD",
"is_substitute_product": false,
"substituted_product_code": null,
"plant": {
"name": "Vancouver",
"city": "Richmond",
"state": "BC",
"country": "CA"
},
"availabilities": [
{
"status_code": "allocated",
"status_descr": null,
"qty": 17,
"availability_date": "2023-05-05"
}
]
}
]
}
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 |
|---|---|---|---|
requested_line | objet | Informations sur le produit demandé par le concessionnaire. |
|
requested_line. product_code | chaîne | Code identifiant de manière unique un produit BRP. | Longueur max : 18 |
requested_line. product_descr† | chaîne | Description du produit. | Longueur max : 40 |
requested_line. requested_qty | nombre | La quantité demandée | Précision : 1.00 |
requested_line. min_order_qty | nombre | La quantité minimale de commande pour le produit, en unités de mesure de vente. | Précision : 1 |
requested_line. is_sales_bom | booléen | Indique si la pièce demandée est une nomenclature (Kit). |
|
located_lines | liste d’objets | Informations sur le(s) produit(s) localisé(s) selon le produit demandé. Généralement une seule ligne, sauf pour : - un kit avec composants - une pièce provenant de plusieurs emplacements pour satisfaire la quantité demandée. |
|
located_lines. product_code | chaîne | Code identifiant de manière unique un produit BRP. | Longueur max : 18 |
located_lines. product_descr† | chaîne | Description du produit. | Longueur max : 40 |
located_lines. determined_qty | nombre | Quantité disponible pour cet article à cet emplacement. | Précision : 1.00 |
located_lines. sales_uom | Longueur max : 3 | Unité de mesure de vente, comme indiqué dans la table Unités de mesure ci-dessous. | Longueur max : 3 |
located_lines. price_uom | Longueur max : 3 | Unité de mesure de prix, comme indiqué dans la table Unités de mesure ci-dessous. | Longueur max : 3 |
located_lines. package_uom | Longueur max : 3 | Unité de mesure dans laquelle le produit est emballé, comme indiqué dans la table Unités de mesure ci-dessous. | Longueur max : 3 |
located_lines.in_package | objet | Contenu du paquet de vente. |
|
located_lines. in_package.qty | nombre | Nombre d’articles contenus dans le paquet selon l’unité de mesure de l’emballage | Précision : 1.000 |
located_lines. in_package.uom | chaîne | Unité de mesure des articles dans le paquet, comme indiqué dans la table Unités de mesure ci-dessous. | Longueur max : 3 |
located_lines. msrp_unit_price | nombre | Prix de détail suggéré par le fabricant. | Précision : 0.01 |
located_lines. dealer_unit_price | nombre | Prix de gros. | Précision : 0.01 |
located_lines. currency | chaîne | Une valeur de la table Devise. | Longueur max : 3 |
located_lines. is_substitute_product | booléen | Indique si la pièce se substitue à une autre pièce. |
|
located_lines. substituted_product_code | chaîne | Code du produit substitué. | Longueur max : 18 |
located_lines.plant | objet | Informations sur l'usine d'expédition. |
|
located_lines.plant.name | chaîne | Nom de l'usine. | Longueur max : 40 |
located_lines.plant.city | chaîne | Adresse de l'usine / Ville. | Longueur max : 35 |
located_lines.plant.state | chaîne | Adresse de l'usine / État. | Longueur max : 6 |
located_lines.plant. country | chaîne | Adresse de l'usine / Pays. | Longueur max : 2 |
located_lines. availabilities | liste d’objets | Informations détaillées sur la disponibilité du produit. |
|
located_lines. availabilities.status_code | chaîne | Code d'état pour indiquer l'état de la quantité. L’un des :
|
|
located_lines. availabilities.status_descr † | chaîne | Informations supplémentaires liées au code d'état pour être plus précis si nécessaire. | Longueur max : 50 |
located_lines. availabilities.qty | nombre | Quantité liée au code d'état. | Précision : 1.00 |
located_lines. availabilities. availability_date | date | Date de disponibilité du produit au format ISO 8601. | Format : 2017-11-07 |
- 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.
Unité de mesures
Code | Description | Dimension |
|---|---|---|
" | Pouce | Longueur |
BOX | Boîte | Quantité |
Devise
Organisation de vente | 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 | |
Code d'état
Le status_code du champ de l’objet located_lines.availabilities indique si la pièce demandée est disponible auprès de BRP.
Statut | Description |
|---|---|
attribué | La pièce est disponible et peut être commandée. |
non_attribué | La pièce est disponible à la commande, mais la quantité demandée n’est pas actuellement en stock. |
bloqué | La pièce est disponible à la commande, mais le concessionnaire ne peut pas la commander. |
en rupture de stock | La pièce peut être commandée, mais elle est actuellement en rupture de stock. |
rejeté | La pièce est invalide et ne peut pas être commandée. |
Limites 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.
Ligne de produit non prise en charge
Si la pièce demandée appartient à une ligne de produit non prise en charge par le distributeur, le statut 400 Bad Request est renvoyé avec l’erreur "Votre ligne de produit ne vous permet pas de commander ce code produit".
Il est inutile de vérifier la disponibilité de la pièce dans l’inventaire de BRP si le concessionnaire ne peut pas la commander.
Référence de l'API
curl --location 'https://qa-cloud-api.brp.com/dcp/v4/part/276000394/inventory?qty=1&language=en-US' \
--header 'Dealer-Number: 0000696529' \
--header 'Authorization: Bearer REPLACE_ME'
Tables de référence
Langues
Langue en code de langue ISO (ISO-639-1 + ISO 3166-1)
Format : xx-XX
xx : code de langue en minuscules
XX : code pays en majuscules
Valeurs de code 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.
Trouver une pièce
Recherchez le numéro de pièce 250300016 (utilisable sur la plupart des gammes de produits) pour obtenir une quantité de 300.
curl --location 'https://qa-cloud-api.brp.com/dcp/v4/part/250300016/inventory?qty=300&language=en-US' \
--header 'Dealer-Number: 0000696529' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Trouver une pièce - Remplacée
Rechercher le numéro de pièce 704900849. La réponse indique que la pièce est remplacée, comme le montre la propriété is_substitute_product étant true.
curl --location 'https://qa-cloud-api.brp.com/dcp/v4/part/704900849/inventory?qty=1&language=fr-CA' \
--header 'Dealer-Number: 0000696529' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'Trouver une pièce - Emballage
Rechercher le numéro de pièce 295100833. La réponse indique que la pièce est un paquet, comme le montre la propriété in_package.qty qui est de 6 même si une quantité de 1 est demandée.
curl --location 'https://qa-cloud-api.brp.com/dcp/v4/part/295100833/inventory?qty=1&language=en-US' \
--header 'Dealer-Number: 0000696529' \
--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 inappropriés.
400 Mauvaise Requête
Le code d’état 400 est généralement observé lors du développement et de 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 provoquer un code d’état 400 ; les plus courants sont listés dans le tableau ci‑dessous.
Notez que toutes les erreurs possibles renvoyées par le système backend ne sont pas documentées ici.
Les erreurs du backend sont identifiées par le code service "07".
Réponse | Résolution |
|---|---|
Retourné si le numéro de concessionnaire est manquant dans l’en-tête. {
"status": 400,
"id": "rrt-034a69794cf7...",
"title": "bad_request",
"meta": {
"service": "01",
"code": "request validation failed",
"errors": {
"details": [
{
"message": "Le paramètre d’en-tête 'Dealer-Number' est requis sur le chemin '/part/{product_code}/inventory' mais est introuvable dans la requête.: []"
}
]
}
}
} | Assurez-vous d’inclure le numéro du concessionnaire lors de l’appel. Assurez-vous que le numéro du concessionnaire comporte 10 caractères. Si vous enregistrez le numéro sans le '0' initial, ajoutez-le avant d’appeler l’API. |
Retourné si le numéro de pièce est invalide. {
"status": "400",
"id": "...",
"title": "bad_request",
"meta": {
"service": "95",
"detail": "Bad request",
"payload": {
"status": 400,
"errors": [
{
"code": "Invalid Product",
"title": "PAA Order Validate (API/Method)",
"detail": "Ce numéro de matériel n’existe pas",
"meta": {
"product_code": "x1c12v",
"item_id": "...",
"message": "Le matériel x1c12v n’existe pas pour item_id = ... product_code = x1c12v (V1/018)"
}
}
]
}
}
} | Le concessionnaire a peut-être saisi manuellement le numéro de pièce et commis une erreur. Afficher une erreur au concessionnaire. |
Retourné si le format de langue n’est pas valide. {
"status": 400,
...
"message": "La regex ECMA 262 \"^[a-z]{2}-[A-Z]{2}$\" ne correspond pas à la chaîne \"ab-ABC\": []"
} | Le format de langue valide est le suivant Format : xx-XX xx : code de langue en minuscules XX : code pays en majuscules Un format de langue valide doit être saisi pour produire une réponse correcte. |
Retourné si le numéro du concessionnaire est invalide {
...
"detail": "Concessionnaire 0000111111 introuvable."
} | Si le concessionnaire utilise votre DMS, il se peut qu’il ne soit plus un concessionnaire BRP. Vérifiez avec lui et désactivez les mises à jour d’inventaire des pièces. Assurez-vous que le numéro du concessionnaire comporte 10 caractères. Si vous l’enregistrez sans le '0' initial, ajoutez-le avant d’appeler l’API. |
Retourné lorsque la quantité demandée est invalide. {
...
"message": "La valeur numérique est inférieure au minimum requis (minimum : 1, trouvé : -5): []"
} | La quantité demandée doit être supérieure à 0. |
Retourné lorsque la pièce appartient à une gamme de produits non prise en charge par le concessionnaire. {
...
"detail": "Pièce non valide pour vos gammes de produits autorisées"
} | Afficher un message d’erreur au concessionnaire. Puisque le concessionnaire ne peut pas commander la pièce, consulter l’inventaire BRP est inutile. |
Retourné si la pièce demandée est discontinuée. {
...
"detail": "Ce code produit a été discontinué."
} | Afficher le message d’erreur au concessionnaire. |
401 Non autorisé
Le code d’état d’erreur 401 Unauthorized est renvoyé lorsque vous essayez d’appeler l’API avec un expiré access_token.
Vous devez obtenir un nouveau access_token avec un appel à l’API d'authentification d'application.
Le code d’erreur 401 Unauthorized est également renvoyé si vous n’avez pas demandé l’accès à l’API en créant un ticket dans le Jira du 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 perdu l’accès, créez un ticket de support comme décrit dans la section Ouvrir un ticket de support.
Exigences DSP
Exigences fonctionnelles
ID | Type | Exigence |
|---|---|---|
1 | Obligatoire | Le concessionnaire doit être en mesure de rechercher la disponibilité d’une pièce dans l’inventaire de BRP, soit manuellement et/ou à partir d’un écran affichant le numéro de pièce. |
2 | Obligatoire | Si la pièce n’est pas trouvée ou n’est pas disponible pour le concessionnaire en raison des gammes de produits prises en charge, un message d’erreur doit être affiché. |
Activités de certification
Cette section présente toutes les activités de certification et validations qui doivent être complétées pour certifier l’API.
Assurance qualité
Les tests listés dans le tableau ci-dessous doivent être effectués avec succès dans l’environnement de test avant de pouvoir commencer la phase pilote avec le concessionnaire.
ID | Test | Résultat attendu |
|---|---|---|
1 | Chercher la pièce 205402546 (utilisée dans toutes les gammes de produits) | La pièce est trouvée et le résultat est affiché au concessionnaire. |
2 | Chercher la pièce 123456789 (pièce invalide) | Le message d’erreur pour numéro de pièce invalide est affiché au concessionnaire. |
3 | Si le concessionnaire ne prend pas en charge toutes les gammes de produits, chercher une pièce dans une gamme non prise en charge par le concessionnaire. 3WV : 219001991 ATV : 219002160 PTN : 204120309 PWC : 204050270 SNO : 19181 SSV : 219704435 | Le message d’erreur « non pris en charge » est affiché au concessionnaire. |
Pilote concessionnaire
Le tableau ci-dessous décrit les paramètres et les validations du pilote du concessionnaire.
Paramètre | Valeur |
|---|---|
Environnement | Production |
Nombre de concessionnaires | 1 à 3 |
Durée | 1 semaine |
Validation 1 | Envoyer des captures d’écran des résultats de recherche d’inventaire de pièces. Une recherche de pièce par ligne de produit prise en charge par le concessionnaire pour chaque concessionnaire. |
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 Inventory. Cet environnement Postman contient des variables utilisées par les requêtes et est configuré pour se connecter à l’environnement de test.
Collections
La collection DMS - Parts Inventory inclut des exemples d’appels API pour rechercher la pièce dans l’inventaire de BRP.