API de Inventário de Peças
Começando
A API de Inventário de Peças é usada para procurar a disponibilidade e a localização de peças no inventário da BRP.
Para procurar a disponibilidade e a localização de peças no inventário dos concessionários, consulte a API de Inventário de Peças do Revendedor.
Esta interface é importante pois permite que os concessionários obtenham uma visão clara da disponibilidade de PA&A da BRP antes de fazer um pedido. Se uma peça não estiver disponível na BRP, o concessionário pode usar a API de Inventário de Peças do Revendedor para procurar inventário em concessionárias próximas.
Por onde começar? Leia isto primeiro!
Antes de começar a trabalhar nesta API, você precisa ler as seguintes seções se ainda não as tiver consultado:
Informações Técnicas
Características
Tipo de API | Tipo de DSP | Versão DCP | Complexidade |
|---|---|---|---|
Obter dados do BRP | DMS | V3 - Internacional | Baixa |
Enviar dados ao BRP | CRM | V4 - América do Norte | Um pouco mais |
Transação com BRP | | | Um pouco mais ainda |
Autenticação
A API está usando Autenticação de Aplicações.
Você precisa de um token de acesso válido antes de chamar esta API ou deve chamar a API de Autenticação de Aplicativos para obter um.
O token de acesso é válido por 30 minutos! (1799 segundos)
URL Base
Teste | https://qa-cloud-api.brp.com/dcp/<v3 ou v4> |
|---|---|
Produção | https://cloud-api.brp.com/dcp/<v3 ou v4> |
Recurso: Disponibilidade de Peças
Este recurso é usado para relatar a disponibilidade da peça solicitada pelo revendedor no inventário da BRP.
Representação 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"
}
]
}
]
}
Propriedades
Todos os campos numéricos com decimais usam o ponto(.) como separador decimal. A vírgula (,) NÃO é suportada como separador decimal.
Propriedade | Tipo | Definição | Notas |
|---|---|---|---|
requested_line | objeto | Informações sobre o produto que o revendedor solicitou. |
|
requested_line. product_code | string | Código que identifica exclusivamente um produto BRP. | Comprimento Máximo:18 |
requested_line. product_descr† | string | Descrição do produto. | Comprimento Máximo:40 |
requested_line. requested_qty | number | A quantidade solicitada | Precisão:1.00 |
requested_line. min_order_qty | number | A quantidade mínima de pedido para o produto, em unidades de medida de venda. | Precisão:1 |
requested_line. is_sales_bom | booleano | Indica se a peça solicitada é um BOM (Kit). |
|
located_lines | lista de objetos | Informações do(s) produto(s) localizado(s) com base no produto solicitado. Normalmente uma linha, exceto para: - um kit com componentes - uma peça proveniente de vários locais para atender à quantidade solicitada. |
|
located_lines. product_code | string | Código que identifica exclusivamente um produto BRP. | Comprimento Máximo:18 |
located_lines. product_descr† | string | Descrição do produto. | Comprimento Máximo:40 |
located_lines. determined_qty | number | A quantidade disponível para este item neste local. | Precisão:1.00 |
located_lines. sales_uom | Comprimento Máximo:3 | Unidade de medida de venda, conforme listado na tabela Unidade de Medidas abaixo. | Comprimento Máximo:3 |
located_lines. price_uom | Comprimento Máximo:3 | Unidade de medida de preço, conforme listado na tabela Unidade de Medidas abaixo. | Comprimento Máximo:3 |
located_lines. package_uom | Comprimento Máximo:3 | Unidade de medida na qual o produto é embalado, conforme listado na tabela Unidade de Medidas abaixo. | Comprimento Máximo: 3 |
located_lines.in_package | objeto | Conteúdo do pacote de vendas. |
|
located_lines. in_package.qty | number | Número de itens contidos no pacote com base na unidade de medida no pacote | Precisão: 1.000 |
located_lines. in_package.uom | string | Unidade de medida para os itens no pacote, conforme listado na tabela Unidade de Medidas abaixo. | Comprimento Máximo: 3 |
located_lines. msrp_unit_price | number | O preço de varejo sugerido pelo fabricante. | Precisão:0.01 |
located_lines. dealer_unit_price | number | Preço unitário de atacado. | Precisão:0.01 |
located_lines. currency | string | Um valor da tabela Moeda. | Comprimento Máximo:3 |
located_lines. is_substitute_product | booleano | Indica se a peça substitui outra peça. |
|
located_lines. substituted_product_code | string | Código do produto substituído. | Comprimento Máximo:18 |
located_lines.plant | objeto | Informações da planta de envio. |
|
located_lines.plant.name | string | Nome da planta. | Comprimento Máximo:40 |
located_lines.plant.city | string | Endereço da planta / Cidade. | Comprimento Máximo:35 |
located_lines.plant.state | string | Endereço da planta / Estado. | Comprimento Máximo:6 |
located_lines.plant. country | string | Endereço da planta / País. | Comprimento Máximo:2 |
located_lines. availabilities | lista de objetos | Informações detalhadas sobre a disponibilidade do produto. |
|
located_lines. availabilities.status_code | string | Código de status para indicar o estado da quantidade. Um de:
|
|
located_lines. availabilities.status_descr † | string | Informações adicionais relacionadas ao código de status para serem mais precisas quando necessário. | Comprimento Máximo: 50 |
located_lines. availabilities.qty | number | Quantidade relacionada ao código de status. | Precisão:1.00 |
located_lines. availabilities. availability_date | date | Data de disponibilidade do produto no formato ISO 8601. | Formato: 2017-11-07 |
- Propriedades marcadas com uma adaga (†) são retornadas no idioma solicitado.
- Propriedades marcadas com um asterisco(*) são sempre retornadas na resposta.
Unidade de Medidas
Código | Descrição | Dimensão |
|---|---|---|
" | Polegada | Comprimento |
CX | Caixa | Quantidade |
BR | Barril | Quantidade |
GT | Garrafa | Quantidade |
BD | Balde | Quantidade |
GAL | Galão | Quantidade |
CC | Centímetro cúbico | Volume |
CDM | Decímetro cúbico | Volume |
CG | Centigramas | Peso |
CL | Centilitros | Volume |
CM | Centímetro | Comprimento |
CS | Engradado | Quantidade |
FT | Pés | Comprimento |
G | Grama | Peso |
GA | Galões | Volume |
GU | Galão americano | Volume |
H | Hora | Tempo |
KG | Quilograma | Peso |
L | Litro | Volume |
LB | Libra | Peso |
LT | Lote | Quantidade |
M | Metro | Comprimento |
M2 | Metro quadrado | Área |
MG | Miligrama | Peso |
ML | Mililitro | Volume |
MM | Milímetro | Comprimento |
OZ | Onças | Peso |
P | Pontos | Quantidade |
PAC | Pacote | Quantidade |
PC | Peça | Quantidade |
PR | Par | Quantidade |
PT | Pintas | Volume |
QT | Quartos | Volume |
ROL | Rolo | Quantidade |
SET | Conjunto | Quantidade |
SF | Pé quadrado | Área |
SH | Folhas | Quantidade |
SI | Polegada quadrada | Área |
SY | Jarda quadrada | Área |
TB | Tubo | Quantidade |
YD | Jarda | Comprimento |
HL | Hectolitro | Volume |
M3 | Metro cúbico | Volume |
P3 | Pé cúbico | Volume |
LM | Metro linear | Comprimento |
CM2 | Centímetro quadrado | Superfície |
PO3 | Polegada cúbica | Volume |
DZ | Dúzia | Quantidade |
Moeda
Organização de Vendas | Moeda | Versão 3 | Versão 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 status
O status_code campo do located_lines.availabilities objeto indica se a peça solicitada está disponível pela BRP.
Status | Descrição |
|---|---|
alocado | A peça está disponível e pode ser encomendada. |
não_alocado | A peça está disponível para encomenda, mas a quantidade solicitada não está atualmente em estoque. |
bloqueado | A peça está disponível para encomenda, mas o revendedor não pode solicitá-la. |
pedido_pendente | A peça pode ser encomendada, mas está atualmente em atraso (backorder). |
rejeitado | A peça é inválida e não pode ser encomendada. |
Limitações e Restrições
Formato Numérico
Todos os campos numéricos com decimais usam o ponto(.) como separador decimal. A vírgula (,) NÃO é suportada como separador decimal.
Linha de Produto Não Suportada
Se a peça solicitada for para uma linha de produto não suportada pelo distribuidor, status 400 Bad Request com o erro "Sua linha de produto não permite que você solicite esse código de produto".
É inútil verificar a disponibilidade da peça no inventário da BRP se o concessionário não puder encomendá-la.
Referência da 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'
Tabelas de Referência
Idiomas
Idioma no código de idioma ISO (ISO-639-1 + ISO 3166-1)
Formato: xx-XX
xx: código de idioma em minúsculas
XX: código do país em letras maiúsculas
Valores de código de idioma suportados
Código | Idioma |
|---|---|
de | Alemão |
en | Inglês |
es | Espanhol |
fi | Finlandês |
fr | Francês |
it | Italiano |
nl | Holandês |
no | Norueguês |
pt | Português (Brasil) |
sv | Sueco |
Como Fazer
Esta seção fornece informações sobre como obter resultados específicos com a API.
Encontrar uma Peça
Pesquise pelo número da peça 250300016 (utilizável na maioria das linhas de produtos) para obter uma quantidade 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 uma Peça - Substituída
Procure pelo número da peça 704900849. A resposta indica que a peça foi substituída, conforme mostrado pela propriedade is_substitute_product sendo 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 uma Peça - Pacote
Pesquise pelo número da peça 295100833. A resposta indica que a peça é um pacote, conforme mostrado pela propriedade in_package.qty cujo valor é 6 mesmo quando uma quantidade de 1 é solicitada.
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'Tratamento de Erros
Esta seção apresenta vários cenários de chamadas inadequadas ou incorretas, que resultam em mensagens de erro e resultados inadequados.
400 Requisição Inválida
O código de status 400 é geralmente visto durante o desenvolvimento e integração e não deve ser recebido durante operações normais. A resposta retornada contém as informações necessárias para corrigir o problema.
Muitos problemas podem causar um código de status 400; os mais comuns estão listados na tabela abaixo.
Observe que nem todos os erros possíveis retornados pelo sistema de backend estão documentados aqui.
Os erros do backend são identificados pelo código de serviço "07".
Resposta | Resolução |
|---|---|
Retornado se o número do concessionário estiver ausente no cabeçalho. {
"status": 400,
"id": "rrt-034a69794cf7...",
"title": "bad_request",
"meta": {
"service": "01",
"code": "validação da solicitação falhou",
"errors": {
"details": [
{
"message": "O parâmetro de cabeçalho 'Dealer-Number' é obrigatório no caminho '/part/{product_code}/inventory', mas não foi encontrado na solicitação.: []"
}
]
}
}
} | Certifique-se de incluir o número do concessionário ao fazer a chamada. Certifique-se de que o número do concessionário tenha 10 caracteres. Se você salvar o número sem o zero à esquerda, adicione-o antes de chamar a API. |
Retornado se o número da peça for inválido. {
"status": "400",
"id": "rrt-0f75ac4d9fbf39c99-c-ea-32643-25541264-2.1",
"title": "bad_request",
"meta": {
"service": "95",
"detail": "Solicitação inválida",
"payload": {
"status": 400,
"errors": [
{
"code": "Produto Inválido",
"title": "Validação de Pedido PAA (API/Método)",
"detail": "Este número de material não existe",
"meta": {
"product_code": "x1c12v",
"item_id": "ce952e27-db81-6ce8-a694-964982e06a7f",
"message": "O material x1c12v não existe para item_id = ce952e27-db81-6ce8-a694-964982e06a7f product_code = x1c12v (V1/018)"
}
}
]
}
}
} | O concessionário pode ter digitado manualmente o número da peça e cometido um erro. Exiba um erro ao concessionário. |
Retornado se o formato de idioma não for válido. {
"status": 400,
"id": "rrt-0cdea36b8097f1737-c-ea-19763-19639154-1",
"title": "bad_request",
"meta": {
"service": "01",
"code": "validação da solicitação falhou",
"errors": {
"details": [
{
"message": "A expressão regular ECMA 262 \"^[a-z]{2}-[A-Z]{2}$\" não corresponde à string de entrada \"ab-ABC\": []"
}
]
}
}
} | O formato de idioma válido é o seguinte Formato: xx-XX xx: código do idioma em minúsculas XX: código do país em maiúsculas Um formato de idioma válido deve ser inserido para produzir uma resposta adequada. |
Retornado se o número do concessionário for inválido. {
"status": 400,
"id": "rrt-0102bf2ec7fe9...",
"title": "bad_request",
"meta": {
"service": "06",
"detail": "Concessionário 0000111111 não encontrado."
}
} | Se o concessionário estiver usando seu DMS, pode ser que ele não seja mais um concessionário BRP. Verifique com ele e desative as atualizações de inventário de peças. Certifique-se de que o número do concessionário tenha 10 caracteres. Se você salvar o número sem o zero à esquerda, adicione-o antes de chamar a API. |
Retornado quando a quantidade solicitada é inválida. {
"status": 400,
"id": "rrt-0102bf2ec...",
"title": "bad_request",
"meta": {
"service": "01",
"code": "validação da solicitação falhou",
"errors": {
"details": [
{
"message": "A instância numérica é menor que o mínimo requerido (mínimo: 1, encontrado: -5): []"
}
]
}
}
} | A quantidade solicitada deve ser maior que 0. |
Retornado quando a peça pertence a uma linha de produtos não suportada pelo concessionário. {
"status": "400",
"id": "rrt-0f75ac4d9fbf39c99-c-ea-32645-25484068-1.1",
"title": "bad_request",
"meta": {
"service": "95",
"detail": "Solicitação inválida",
"payload": {
"status": 400,
"errors": [
{
"code": "Não Autorizado",
"title": "Criação de Pedido PAA (API/Método)",
"detail": "Peça não válida para suas linhas de produtos autorizadas",
"meta": {
"product_code": "415130134",
"item_id": "c506d7e1-c305-ad3e-334b-8d44865bb699",
"message": "O cliente não é válido para nenhuma divisão de material 415130134. para item_id = c506d7e1-c305-ad3e-334b-8d44865bb699 product_code = 415130134 (/BRP/PART_ORDER/047)"
}
}
]
}
}
} | Exiba uma mensagem de erro ao concessionário. Como o concessionário não pode pedir a peça, pesquisar o inventário BRP é inútil. |
Retornado se a peça solicitada estiver descontinuada. {
"status": 400,
"id": "rrt-0110bd1dca94a4...",
"title": "bad_request",
"meta": {
"service": "07",
"detail": {
"errors": [
{
"id": "ee1cfdcb-8837-e7f1-96a1-005056867c01",
"status": "400",
"code": "Descontinuado",
"title": "Validação de Pedido PAC",
"detail": "Este código de produto foi descontinuado.",
"meta": [
{
"items.item_id": "a31dbd76-ce64-4865-8a92-bdc6f1e45df7",
"items.product_code": "219000738"
}
]
}
]
}
}
} | Exiba a mensagem de erro ao concessionário. |
401 Não Autorizado
O código de status de erro 401 Unauthorized é retornado quando você tenta chamar a API com um access_token.
Você precisa obter um novo access_token com uma chamada para a API de Autenticação de Aplicativos.
O código de status de erro 401 Unauthorized também é retornado se você não solicitou acesso à API criando um ticket no Jira do DCP.
Quando você estiver pronto para começar a trabalhar em uma API, deve criar um ticket de certificação no Jira, conforme descrito na seção Atividades de Certificação com o Jira.
Se você já começou a trabalhar em uma API e perdeu o acesso, crie um ticket de suporte conforme descrito na seção Abrir um Ticket de Suporte.
Requisitos do DSP
Requisitos Funcionais
ID | Tipo | Requisito |
|---|---|---|
1 | Obrigatório | O concessionário deve ser capaz de pesquisar a disponibilidade de uma peça no inventário da BRP, manualmente e/ou a partir de uma tela mostrando o número da peça. |
2 | Obrigatório | Se a peça não for encontrada ou não estiver disponível para o concessionário devido às linhas de produtos suportadas, uma mensagem de erro deve ser exibida. |
Atividades de Certificação
Esta seção apresenta todas as atividades de certificação e validações que devem ser concluídas para certificar a API.
Garantia de Qualidade
Os testes listados na tabela abaixo devem ser realizados com sucesso no ambiente de testes antes que você possa iniciar a fase piloto com o concessionário.
ID | Teste | Resultado Esperado |
|---|---|---|
1 | Pesquisar pela peça 205402546 (usada em todas as linhas de produtos) | A peça é encontrada e o resultado é exibido ao concessionário. |
2 | Pesquisar pela peça 123456789 (peça inválida) | A mensagem de erro de número de peça inválido é exibida ao concessionário. |
3 | Se o concessionário não oferecer suporte a todas as linhas de produtos, pesquisar uma peça em uma linha de produtos não suportada pelo concessionário. 3WV: 219001991 ATV: 219002160 PTN: 204120309 PWC: 204050270 SNO: 19181 SSV: 219704435 | A mensagem de erro "não suportado" é exibida ao concessionário. |
Piloto do Revendedor
A tabela abaixo descreve os parâmetros e validações do piloto do revendedor.
Parâmetro | Valor |
|---|---|
Ambiente | Produção |
Número de concessionárias | 1 a 3 |
Duração | 1 semana |
Validação 1 | Enviar capturas de tela dos resultados da pesquisa de inventário de peças. Uma pesquisa de peça por linha de produto suportada pela concessionária para cada concessionária. |
Postman
Esta seção descreve o que está disponível no Postman para explorar a API.
Ambientes
Um ambiente Postman está disponível para testar a API de Inventário de Peças. Este ambiente Postman contém variáveis usadas pelas consultas e está configurado para se conectar ao ambiente de teste.
Coleções
A coleção DMS - Inventário de Peças inclui exemplos de chamadas de API para pesquisar o inventário da BRP por uma peça.