API de Inventario de Piezas
Primeros Pasos
La API de Inventario de Piezas se utiliza para buscar la disponibilidad y ubicación de piezas en el inventario de BRP.
Para buscar la disponibilidad y ubicación de piezas en el inventario de los concesionarios, consulte la API de inventario de piezas de concesionario.
Esta interfaz es importante ya que permite a los concesionarios obtener una visión clara de la disponibilidad de PA&A de BRP antes de realizar un pedido. Si una pieza no está disponible en BRP, el concesionario puede usar la API de inventario de piezas de concesionario para buscar inventario en concesionarios cercanos.
¿Dónde empezar? ¡Léeme primero!
Antes de empezar a trabajar con esta API, debes leer las siguientes secciones si aún no las has revisado:
Información técnica
Características
Tipo de API | Tipo de DSP | Versión DCP | Complejidad |
|---|---|---|---|
Obtener datos de BRP | DMS | V3 - Internacional | Baja |
Enviar datos a BRP | CRM | V4 - Norteamérica | Un poco más |
Transacción con BRP | | | Algo más |
Autenticación
La API está utilizando Autenticación de Aplicaciones.
Necesitas un token de acceso válido antes de llamar a esta API o tienes que llamar a la API de Autenticación de Aplicaciones para obtener uno.
¡El token de acceso es válido por 30 minutos! (1799 segundos)
URL Base
Prueba | https://qa-cloud-api.brp.com/dcp/<v3 o v4> |
|---|---|
Producción | https://cloud-api.brp.com/dcp/<v3 o v4> |
Recurso: Disponibilidad de Piezas
Este recurso se utiliza para informar la disponibilidad de la pieza solicitada por el concesionario en el inventario de BRP.
Representación 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"
}
]
}
]
}
Propiedades
Todos los campos numéricos con decimales utilizan el punto(.) como separador decimal. La coma (,) NO es compatible como separador decimal.
Propiedad | Tipo | Definición | Notas |
|---|---|---|---|
requested_line | objeto | Información sobre el producto solicitado por el distribuidor. |
|
requested_line. product_code | cadena | Código que identifica de forma única un producto BRP. | Longitud máxima:18 |
requested_line. product_descr† | cadena | Descripción del producto. | Longitud máxima:40 |
requested_line. requested_qty | número | La cantidad solicitada | Precisión:1.00 |
requested_line. min_order_qty | número | La cantidad mínima de pedido para el producto, en unidades de medida de venta. | Precisión:1 |
requested_line. is_sales_bom | booleano | Indica si la pieza solicitada es un BOM (Kit). |
|
located_lines | lista de objetos | Información del/los producto(s) localizado(s) basado en el producto solicitado. Normalmente una línea, excepto para: - un kit con componentes - una pieza proveniente de múltiples ubicaciones para cumplir con la cantidad solicitada. |
|
located_lines. product_code | cadena | Código que identifica de forma única un producto BRP. | Longitud máxima:18 |
located_lines. product_descr† | cadena | Descripción del producto. | Longitud máxima:40 |
located_lines. determined_qty | número | La cantidad disponible para este artículo en esta ubicación. | Precisión:1.00 |
located_lines. sales_uom | Longitud máxima:3 | Unidad de medida de venta, como se indica en la tabla de Unidades de Medida a continuación. | Longitud máxima:3 |
located_lines. price_uom | Longitud máxima:3 | Unidad de medida de precio, como se indica en la tabla de Unidades de Medida a continuación. | Longitud máxima:3 |
located_lines. package_uom | Longitud máxima:3 | Unidad de medida en la cual el producto está empaquetado, como se indica en la tabla de Unidades de Medida a continuación. | Longitud máxima: 3 |
located_lines.in_package | objeto | Contenido del paquete de venta. |
|
located_lines. in_package.qty | número | Número de artículos contenidos en el paquete según la unidad de medida en el paquete | Precisión: 1.000 |
located_lines. in_package.uom | cadena | Unidad de medida para los artículos en el paquete, como se indica en la tabla de Unidades de Medida a continuación. | Longitud máxima: 3 |
located_lines. msrp_unit_price | número | El precio de venta sugerido por el fabricante. | Precisión:0.01 |
located_lines. dealer_unit_price | número | Precio unitario al por mayor. | Precisión:0.01 |
located_lines. currency | cadena | Un valor de la tabla de Monedas. | Longitud máxima:3 |
located_lines. is_substitute_product | booleano | Indica si la pieza sustituye a otra. |
|
located_lines. substituted_product_code | cadena | Código del producto sustituido. | Longitud máxima:18 |
located_lines.plant | objeto | Información del centro de envío. |
|
located_lines.plant.name | cadena | Nombre del centro. | Longitud máxima:40 |
located_lines.plant.city | cadena | Dirección del centro / Ciudad. | Longitud máxima:35 |
located_lines.plant.state | cadena | Dirección del centro / Estado. | Longitud máxima:6 |
located_lines.plant. country | cadena | Dirección del centro / Condado. | Longitud máxima:2 |
located_lines. availabilities | lista de objetos | Información detallada sobre la disponibilidad del producto. |
|
located_lines. availabilities.status_code | cadena | Código de estado para indicar el estado de la cantidad. Uno de:
|
|
located_lines. availabilities.status_descr † | cadena | Información adicional relacionada con el código de estado para ser más preciso cuando sea necesario. | Longitud máxima: 50 |
located_lines. availabilities.qty | número | Cantidad relacionada con el código de estado. | Precisión:1.00 |
located_lines. availabilities. availability_date | fecha | Fecha de disponibilidad del producto en formato ISO 8601. | Formato: 2017-11-07 |
- Las propiedades marcadas con una daga (†) se devuelven en el idioma solicitado.
- Las propiedades marcadas con un asterisco (*) siempre se devuelven en la respuesta.
Unidades de Medida
Código | Descripción | Dimensión |
|---|---|---|
" | Pulgada | Longitud |
CAJA | Caja | Cantidad |
BR | Barril | Cantidad |
BT | Botella | Cantidad |
BU | Cubo | Cantidad |
CAN | Bidón | Cantidad |
CC | Centímetro cúbico | Volumen |
CDM | Decímetro cúbico | Volumen |
CG | Centigramos | Peso |
CL | Centilitros | Volumen |
CM | Centímetro | Longitud |
CS | Huacal | Cantidad |
FT | Pies | Longitud |
G | Gramo | Peso |
GA | Galones | Volumen |
GU | Galón estadounidense | Volumen |
H | Hora | Tiempo |
KG | Kilogramo | Peso |
L | Litro | Volumen |
LB | Libra | Peso |
LT | Lote | Cantidad |
M | Metro | Longitud |
M2 | Metro cuadrado | Área |
MG | Miligramo | Peso |
ML | Mililitro | Volumen |
MM | Milímetro | Longitud |
OZ | Onzas | Peso |
P | Puntos | Cantidad |
PAC | Paquete | Cantidad |
PC | Pieza | Cantidad |
PR | Par | Cantidad |
PT | Pintas | Volumen |
QT | Cuartos | Volumen |
ROL | Rollo | Cantidad |
SET | Juego | Cantidad |
SF | Pies cuadrados | Área |
SH | Hojas | Cantidad |
SI | Pulgada cuadrada | Área |
SY | Yarda cuadrada | Área |
TB | Tubo | Cantidad |
YD | Yarda | Longitud |
HL | Hectolitro | Volumen |
M3 | Metro cúbico | Volumen |
P3 | Pies cúbicos | Volumen |
LM | Metro lineal | Longitud |
CM2 | Centímetro cuadrado | Superficie |
PO3 | Pulgada cúbica | Volumen |
DZ | Docena | Cantidad |
Moneda
Organización de Ventas | Moneda | Versión 3 | Versión 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 | |
Código de estado
El status_code indica que el campo de located_lines.availabilities muestra si la pieza solicitada está disponible por BRP.
Estado | Descripción |
|---|---|
asignado | La pieza está disponible y se puede pedir. |
no_asignado | La pieza está disponible para pedir, pero la cantidad solicitada no está actualmente en stock. |
bloqueado | La pieza está disponible para pedir, pero el distribuidor no puede pedirla. |
pedido_pendiente | La pieza se puede pedir, pero actualmente está en pedido pendiente. |
rechazado | La pieza no es válida y no se puede pedir. |
Limitaciones y Restricciones
Formato de Número
Todos los campos numéricos con decimales usan el punto(.) como separador decimal. La coma (,) NO es compatible como separador decimal.
Línea de producto no compatible
Si la pieza solicitada pertenece a una línea de producto no soportada por el distribuidor, se devuelve el estado 400 Bad Request con el error "Su línea de producto no le permite solicitar ese código de producto".
Es inútil verificar la disponibilidad de la pieza en el inventario de BRP si el concesionario no puede ordenarla.
Referencia de la 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'
Tablas de referencia
Idiomas
Idioma en código de idioma ISO (ISO-639-1 + ISO 3166-1)
Formato: xx-XX
xx: código de idioma en minúsculas
XX: código de país en mayúsculas
Valores de códigos de idioma admitidos
Código | Idioma |
|---|---|
de | Alemán |
en | Inglés |
es | Español |
fi | Finés |
fr | Francés |
it | Italiano |
nl | Neerlandés |
no | Noruego |
pt | Portugués (Brasil) |
sv | Sueco |
Cómo hacerlo
Esta sección proporciona información sobre cómo obtener resultados específicos con la API.
Encontrar una pieza
Busque el número de pieza 250300016 (utilizable en la mayoría de las líneas de productos) para obtener una cantidad 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'Encontrar una pieza - Reemplazada
Busque el número de pieza 704900849. La respuesta indica que la pieza está reemplazada, como se muestra por la propiedad is_substitute_product al estar 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'Encontrar una pieza - Paquete
Buscar el número de pieza 295100833. La respuesta indica que la pieza es un paquete, como se muestra por la propiedad in_package.qty que es 6 incluso si se solicita una cantidad de 1.
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'Manejo de Errores
Esta sección presenta varios escenarios de llamadas incorrectas o inapropiadas, que resultan en mensajes de error y resultados no deseados.
400 Solicitud Incorrecta
El código de estado 400 generalmente se observa durante el desarrollo e integración y no debería recibirse durante las operaciones normales. La respuesta devuelta contiene la información necesaria para corregir el problema.
Muchos problemas pueden causar un código de estado 400; los más comunes se enumeran en la tabla a continuación.
Tenga en cuenta que no todos los posibles errores devueltos por el sistema backend están documentados aquí.
Los errores del backend se identifican con el código de servicio "07".
Response | Resolution |
|---|---|
Returned if the dealer number is missing in the header. {
"status": 400,
"id": "rrt-034a69794cf7...",
"title": "bad_request",
"meta": {
"service": "01",
"code": "request validation failed",
"errors": {
"details": [
{
"message": "Header parameter 'Dealer-Number' is required on path '/part/{product_code}/inventory' but not found in request.: []"
}
]
}
}
} | Make sure to include the dealer's number when making the call. Make sure that the dealer number is 10 characters. If you save the dealer number without leading '0', add the leading '0' before calling the API. |
Returned if the part number is invalid. {
"status": "400",
"id": "rrt-0f75ac4d9fbf39c99-c-ea-32643-25541264-2.1",
"title": "bad_request",
"meta": {
"service": "95",
"detail": "Bad request",
"payload": {
"status": 400,
"errors": [
{
"code": "Invalid Product",
"title": "PAA Order Validate (API/Method)",
"detail": "This material number does not exist",
"meta": {
"product_code": "x1c12v",
"item_id": "ce952e27-db81-6ce8-a694-964982e06a7f",
"message": "Material x1c12v does not exist for item_id = ce952e27-db81-6ce8-a694-964982e06a7f product_code = x1c12v (V1/018)"
}
}
]
}
}
} | The dealer may have entered the part number manually and made an error. Display an error to the dealer. |
Returned if the language format is not valid. {
"status": 400,
"id": "rrt-0cdea36b8097f1737-c-ea-19763-19639154-1",
"title": "bad_request",
"meta": {
"service": "01",
"code": "request validation failed",
"errors": {
"details": [
{
"message": "ECMA 262 regex \"^[a-z]{2}-[A-Z]{2}$\" does not match input string \"ab-ABC\": []"
}
]
}
}
} | The valid language format is as follows Format: xx-XX xx: language code in lowercase XX: country code in uppercase A valid language format must be entered in order to produce a proper response. |
Returned if the dealer number is invalid {
"status": 400,
"id": "rrt-0102bf2ec7fe9...",
"title": "bad_request",
"meta": {
"service": "06",
"detail": "Dealer 0000111111 not found."
}
} | If the dealer is using your DMS, it may be that they are not a BRP dealer anymore. Check with them and disable parts inventory updates. Make sure that the dealer number is 10 characters. If you save the dealer number without leading '0', add the leading '0' before calling the API. |
Returned when the requested quantity is invalid. {
"status": 400,
"id": "rrt-0102bf2ec...",
"title": "bad_request",
"meta": {
"service": "01",
"code": "request validation failed",
"errors": {
"details": [
{
"message": "Numeric instance is lower than the required minimum (minimum: 1, found: -5): []"
}
]
}
}
} | The requested quantity must be greater than 0. |
Returned when the part is for a product line not supported by the dealer. {
"status": "400",
"id": "rrt-0f75ac4d9fbf39c99-c-ea-32645-25484068-1.1",
"title": "bad_request",
"meta": {
"service": "95",
"detail": "Bad request",
"payload": {
"status": 400,
"errors": [
{
"code": "Not Authorized",
"title": "PAA Order Create (API/Method)",
"detail": "Not a valid part for your authorized product lines",
"meta": {
"product_code": "415130134",
"item_id": "c506d7e1-c305-ad3e-334b-8d44865bb699",
"message": "The customer is not valid for even one material division 415130134. for item_id = c506d7e1-c305-ad3e-334b-8d44865bb699 product_code = 415130134 (/BRP/PART_ORDER/047)"
}
}
]
}
}
} | Display an error message to the dealer. Since the dealer can't order the part, searching BRP's inventory is useless. |
Returned if the requested part is discontinued. {
"status": 400,
"id": "rrt-0110bd1dca94a4...",
"title": "bad_request",
"meta": {
"service": "07",
"detail": {
"errors": [
{
"id": "ee1cfdcb-8837-e7f1-96a1-005056867c01",
"status": "400",
"code": "Discontinued",
"title": "PAC Order Validation",
"detail": "This product code has been discontinued.",
"meta": [
{
"items.item_id": "a31dbd76-ce64-4865-8a92-bdc6f1e45df7",
"items.product_code": "219000738"
}
]
}
]
}
}
} | Display the error message to the dealer. |
401 No Autorizado
El código de estado de error 401 Unauthorized se devuelve cuando intentas llamar a la API con un access_token.
Tienes que obtener un nuevo access_token con una llamada a la API de Autenticación de Aplicaciones.
El código de estado de error 401 Unauthorized también se devuelve si no solicitaste acceso a la API creando un ticket en el Jira de DCP.
Cuando estés listo para comenzar a trabajar en una API, debes crear un ticket de certificación en Jira, como se describe en la sección Actividades de Certificación con Jira.
Si ya comenzaste a trabajar en una API y perdiste el acceso, crea un ticket de soporte como se describe en la sección Abrir un Ticket de Soporte.
Requisitos de DSP
Requisitos Funcionales
ID | Tipo | Requisito |
|---|---|---|
1 | Obligatorio | El concesionario debe poder buscar la disponibilidad de una pieza en el inventario de BRP, ya sea manualmente y/o desde una pantalla que muestre el número de pieza. |
2 | Obligatorio | Si la pieza no se encuentra o no está disponible para el concesionario debido a las líneas de productos compatibles, se debe mostrar un mensaje de error. |
Actividades de Certificación
Esta sección presenta todas las actividades de certificación y validaciones que deben completarse para certificar la API.
Aseguramiento de la Calidad
Las pruebas enumeradas en la tabla a continuación deben realizarse con éxito en el entorno de prueba antes de que pueda comenzar la fase piloto del concesionario.
ID | Prueba | Resultado Esperado |
|---|---|---|
1 | Buscar la pieza 205402546 (utilizada en todas las líneas de productos) | La pieza es encontrada y el resultado se muestra al concesionario. |
2 | Buscar la pieza 123456789 (pieza inválida) | Se muestra al concesionario el mensaje de error por número de pieza inválido. |
3 | Si el concesionario no soporta todas las líneas de productos, buscar una pieza en una línea de productos no soportada por el concesionario. 3WV: 219001991 ATV: 219002160 PTN: 204120309 PWC: 204050270 SNO: 19181 SSV: 219704435 | Se muestra al concesionario el mensaje de error "no soportado". |
Piloto del Concesionario
La tabla a continuación describe los parámetros y validaciones del piloto del distribuidor.
Parámetro | Valor |
|---|---|
Entorno | Producción |
Número de concesionarios | 1 a 3 |
Duración | 1 semana |
Validación 1 | Enviar capturas de pantalla de los resultados de búsqueda del inventario de piezas. Una búsqueda de piezas por línea de producto soportada por el concesionario para cada concesionario. |
Postman
Esta sección describe lo que está disponible en Postman para explorar la API.
Entornos
Un entorno de Postman está disponible para probar la API de Inventario de Piezas. Este entorno de Postman contiene variables utilizadas por las consultas y está configurado para conectarse al entorno de prueba.
Colecciones
La colección DMS - Inventario de Piezas incluye ejemplos de llamadas API para buscar en el inventario de BRP una pieza.