API Spendint - POST /sn_spend_intg/spendint/catalog

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 10 min. de leitura
  • Permite que os fornecedores publiquem vários catálogos para criar produtos do fornecedor, modelar produtos, contratos e registros de preços.

    Na integração da API do catálogo, ao receber dados de um catálogo de terceiros, você pode:
    1. Crie novas categorias de terceiros e mapeie essas categorias para categorias de modelo.
      • Se disponível, use o Código de Produtos e Serviços Padrão das Nações Unidas (UNSPSC) e o nome da categoria.
      • Se UNSPSC não estiver disponível, use apenas o nome da categoria.
    2. Depois de mapear uma categoria de terceiros para uma categoria de modelo, use o número de peça do fabricante (MPN) para encontrar um modelo de produto existente, se houver um disponível.
      1. Se um modelo de produto for encontrado para o MPN, atualize o modelo de produto com todas as mudanças e crie ou atualize todos os produtos do fornecedor que estejam relacionados ao modelo de produto.
      2. Se não existir um modelo de produto para o MPN, faça o seguinte:
        1. Uma classe de modelo de produto geralmente está disponível na categoria de modelo que é referenciada pela categoria de terceiros para o produto. Use esta classe de modelo de produto para obter a tabela de modelo de produto na qual o modelo de produto deve ser criado, por exemplo, hardware, software, consumível e assim por diante. Se nenhuma classe de modelo de produto estiver disponível, crie o modelo de produto na tabela de modelo de produto base.
        2. Depois que a classe correta do modelo de produto for identificada, crie um novo modelo de produto na classe correta da seguinte forma:
          • Fabricante, fornecedor ou fornecedor deve mapear para o fabricante no modelo do produto.
          • O nome do produto da API deve ser mapeado para o nome no modelo do produto.
          • O MPN da API deve atualizar o número do modelo.
          • A descrição do produto da API deve atualizar a descrição no modelo do produto.
          • A categoria do modelo deve ser atualizada com a categoria do produto referenciada no registro de categoria de terceiros.
          • A categoria de produto deve ser atualizada com a categoria de produto referenciada no registro de categoria de terceiros.
          • Se houver valores nos produtos substitutos na API, crie os registros de produto substituto entre o modelo de produto atual e os outros modelos de produto.
          • Se houver valores nos produtos compatíveis na API, crie os registros de produto compatíveis entre o modelo de produto atual e os outros modelos de produto.
          • Os atributos de produto da API devem ser criados ou atualizados na lista relacionada a atributos de produto para o modelo de produto.
    3. Se um modelo de produto estiver disponível, use o número de peça do fornecedor para criar ou atualizar os produtos do fornecedor que estão relacionados ao modelo de produto.

    Mapeamento de terceiros

    Use as seguintes tabelas para executar os mapeamentos de categoria, modelo e unidade de terceiros:
    • Categorias de terceiros: armazena todos os registros de categoria de terceiros para o administrador do ShoppingHub mapear com categorias de modelo internas existentes.
    • Mapeamentos de modelo de terceiros: armazena todas as informações de mapeamento entre modelos de produto e categorias de modelo de terceiros.
    • Unidades de terceiros: armazena todos os registros de unidades de terceiros para o administrador do ShoppingHub mapear com unidades de produto do fornecedor.
    • Mapeamentos de unidades de terceiros: armazena todas as informações de mapeamento entre modelos de produto e unidades de terceiros.
    Nota:
    Um produto de integração de terceiros é publicado automaticamente quando a categoria de terceiros e a unidade de terceiros são mapeadas corretamente.

    Datas de vendas do produto do fornecedor

    Um produto do fornecedor é descontinuado e não é mais publicado no catálogo quando atinge a data de término de vendas. Os campos Data de início das vendas e Data de término das vendas no formulário de produto do fornecedor são preenchidos por meio da integração de terceiros da APIde catálogo.

    Tabelas de status

    Para saber o status da solicitação de importação de produto em massa, faça uma chamada REST no banco de dados ServiceNow usando a API REST de tabela. A resposta da API lista os registros em que a solicitação de importação em massa falhou. Para resposta de importação de produto em massa, consulte a tabela Erro de catálogo com o seguinte parâmetro:

    sysparm_query=outbound_error.supplier_id=<supplier_id> ^outbound_error.state=20

    Detalhes sobre ID do cliente, ID do fornecedor, tipo de erro, ID do conjunto de importação exclusivo e estado podem ser encontrados na tabela Status de saída, que é a tabela de erros primária.

    Formato da URL

    /api/sn_spend_intg/spendint/catalog

    Parâmetros de solicitação compatíveis

    Tabela 1. Parâmetros de caminho
    Nome Descrição
    Nenhum(a)
    Tabela 2. Parâmetros de consulta
    Nome Descrição
    modo Suporte para modos assíncronos e síncronos para integração de terceiros.

    Tipo de dados: cadeia de caracteres

    Valores válidos:
    • async: modo assíncrono.
    • sincronizar: modo síncrono.

    Padrão: assíncrono

    Tabela 3. Parâmetros do corpo da solicitação (XML ou JSON)
    Nome Descrição
    customer_id Identificador do cliente.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    catalog_id Identificador do conteúdo do catálogo que pode ser comprado por um cliente.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    produtos Lista de objetos que definem os produtos a serem criados ou atualizados. Cada transação tem um limite de 1.000 produtos.

    Tipo de dados: matriz

    "products": [
      {
        "available_units": "String",
        "available_for_country": [Array],
        "bundled_components": [Array],
        "contract_agreement": {Object},
        "delivery_time": "String",
        "images": [Array],
        "manufacturer": "String",
        "mpn": "String",
        "parent_bundle": "String",
        "product_attributes": {Object},
        "product_category_name": "String",
        "product_description": "String",
        "product_name": "String",
        "sku": "String",
        "unit": "String",
        "unspsc": "String",
      }
    ]
    produtos.unidades_disponíveis Necessário para produtos que são mantidos em estoque. Este valor indica a quantidade de unidades disponíveis para este produto.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    produtos.disponível_para_país Lista de códigos de país onde o produto do fornecedor pode ser comprado. Se nenhum país for fornecido, um usuário de qualquer país poderá comprar o produto.

    Tipo de dados: matriz

    "available_for_country": ["US","IN","GB"]
    produtos.bundled_components Válido somente para cenários ao enviar um pacote de produtos como parte da carga do catálogo e aplicável somente para as cargas do pacote primário. Este valor contém a referência aos componentes do pacote secundário. A lista de MPN e as quantidades dos componentes do pacote secundário são mantidas aqui.
    Nota:
    Como o mesmo componente de pacote secundário pode ser adicionado mais de uma vez em um pacote, a quantidade inserida é o diferenciador entre os mesmos componentes de pacote secundário.
    Os componentes do pacote secundário e seus detalhes (MPN e quantidades) devem ser mapeados para o mesmo fornecedor.

    Tipo de dados: matriz

    "bundled_components": [
      {
        "mpn": "String",
        "quantity": "String"
      }
    ]
    produtos.contrato_acordo Detalhes do contrato de um produto.
    Nota:
    Isso não é necessário para componentes do pacote secundário.

    Tipo de dados: objeto

    "contract_agreement": {
      "contract_end_date": "String",
      "contract_number": "String",
      "contract_start_date": "String",
      "negotiated_currency ": "String",
      "negotiated_price": "String"
    }
    produtos.contract_agreement.contract_end_date Data em que o termo do contrato termina.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Formato: AAAA-MM-DD

    produtos.contract_agreement.contract_number Obrigatório. Número do contrato ativo associado ao produto.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    produtos.contract_agreement.contract_start_date Data em que a duração do contrato começa.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Formato: AAAA-MM-DD

    produtos.contract_agreement.negotiated_currency Obrigatório. Moeda do preço negociado.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    produtos.contrato_acordo.negociado_preço Obrigatório. Preço unitário de um produto conforme negociado por meio de um contrato com o fornecedor ou revendedor.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    produtos.tempo_de_entrega Número estimado de dias necessários para enviar um produto ao cliente. Este valor deve representar o número de dias e ser um número inteiro.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    produtos.imagens Lista de cadeias de caracteres que especificam os URLs de imagem do produto do fornecedor.

    Tipo de dados: matriz

    product.manufacturer Obrigatório. Empresa que produz, publica ou fornece o produto. Este não é o fornecedor ou o revendedor do produto.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    produtos.mpn Obrigatório. Identificador de um produto fornecido pelo fabricante, fornecedor ou fornecedor.
    Nota:
    Isso não é necessário para pacotes primários do revendedor se o valor de SKU estiver disponível.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    product.parent_bundle Válido somente para cenários ao enviar um pacote de produtos como parte da carga do catálogo e aplicável somente para as cargas do componente do pacote secundário. No caso de um componente de pacote secundário, a referência ao primário é mantida aqui. Os valores de MPN e SKU primários também são definidos aqui.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    produtos.produto_atributos Lista de pares de chave-valor que definem atributos do produto, por exemplo, "Cor": "Espaço cinza". Vários atributos para um produto são permitidos. No entanto, somente os atributos que afetam o preço ou a disponibilidade de estoque devem ser fornecidos por meio da API.

    Tipo de dados: objeto

    product.product_category_name Obrigatório. Nome que você insere se não estiver definindo a propriedade unspsc. Este nome é a categoria à qual um produto pertence. Este nome de categoria pode ser usado em um cenário de comércio para comprar o produto. Por exemplo, um produto de filtro de linha pode pertencer a uma categoria de equipamento de escritório.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    product.product_description Descrição completa do produto que aparece para um comprador em uma experiência de comércio.
    Nota:
    É recomendável que o fornecedor seja o mais descritivo possível aqui, especialmente para itens do catálogo de pacotes de produtos em que há componentes de pacote secundários.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 65000

    produtos.product_name Obrigatório. Nome do produto.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 1000

    product.sku Obrigatório. Número gerado por um fornecedor que identifica exclusivamente um produto vendido por esse fornecedor.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    produtos.unidade Obrigatório. Unidade ou taxa na qual o produto é vendido pelo fornecedor. Por exemplo, peças, horas e assim por diante.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    produtos.unspc Obrigatório. Identificador que você insere se não estiver definindo a propriedade product_category_name. Este identificador é o UNSPSC da categoria à qual um produto pertence. Por exemplo, o código UNSPSC 43210000 é o identificador da categoria de produto Computadores.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    ID_do_fornecedor Obrigatório. Identificador do revendedor ou fornecedor com o qual o cliente pode fazer pedidos.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    id_de_importação_de_terceiros Identificador que permite que um terceiro passe um valor de cadeia de caracteres para identificar exclusivamente um conjunto de dados importados.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta.

    Tabela 4. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Tipos compatíveis: application/json ou application/xml.

    Padrão: application/json

    Nota:
    Somente o formato de dados application/json é compatível com a Estrutura de integração de compras.
    Tabela 5. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP.

    Tabela 6. Códigos de status
    Código do status Descrição
    êxito Bem-sucedido. A solicitação foi processada com sucesso.
    falha Mal-sucedido. A solicitação foi processada com erros.

    Parâmetros do corpo da resposta (JSON)

    Esses parâmetros de corpo de resposta são recebidos quando consultados no modo síncrono.
    Nome Descrição
    erro_resposta_corpo Descrição dos erros, listados por SKU, mpn e mensagem de erro.

    Tipo de dados: matriz

    error_response_body.error_message Mensagem de erro detalhada.

    Tipo de dados: cadeia de caracteres

    status_code Status da resposta, como "sucesso" ou "falha".

    Tipo de dados: cadeia de caracteres

    Solicitação de cURL

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/catalog" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root": [{
      "customer_id": "AB-1234323",
      "catalog_id": "ACME CORP-12347898",
      "supplier_id": "SUP-123456",
      "third_party_import_id": "DELL1234567",
      "products": [
        {
          "product_name": "Apple MacBook Pro 13 Core i7",
          "mpn": "Z0WQ-20004301931",
          "sku": "55788741",
          "manufacturer": "Apple",
          "product_category_name": "Computer",
          "parent_bundle": "920-0045362002",
          "bundled_components": {
            "mpn": "Z0WQ-20004301931",
            "quantity": "4",
           },
          "unspsc": "43211500",
          "product_description": "Apple MacBook Pro 13 Core i7 2.8GHz 16GB 512GB - Touch Bar - Space Gray",
          "product_attributes": {
            "Color": "Space Grey",
            "RAM": "16GB",
            "Screen Size": "13inch"
          },
          "images": ["http://test123.image1.png", "http://test123.image2.jpeg"],
          "unit": "Each",
          "available_units": "4",
          "available_for_country": ["US","IN","GB"],
          "delivery_time": "4",
          "contract_agreement": {
            "contract_number": "34567892",
            "contract_start_date": "YYYY-MM-DD",
            "contract_end_date": "YYYY-MM-DD",
            "negotiated_price": "456",
            "negotiated_currency ": "USD"
          }
        }
      ]
    }
    ]}
    

    Possíveis respostas:

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    // Error response:
    {
        "result": {
            "response": [
                {
                    "customer_id": "AB-1234323",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "DELL1234567",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sku": "55788741",
                            "mpn": "Z0WQ-20004301931",
                            "error_message": "Field Value empty/Formatting issue Negotiated currency \n"
                        }
                    ]
                }
            ]
        }
    }