API de gastos

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 35 min. de leitura
  • A API Spendint fornece endpoints que enviam informações de catálogo, preço, disponibilidade, pedido, remessa e fatura de um terceiro para a instância ServiceNow. Esta API faz parte da aplicação Estrutura de integração de Source-to-Pay.

    Esta API requer a aplicação da loja Procurement Integration Framework (com.glide.sn_spend_intg) e é fornecida no namespace sn_spend_intg.

    Para acessar essa API, você deve ter a função sn_spend_intg.procurement_integrator.

    API Spendint - POST /sn_spend_intg/spendint/catalog

    Permite que os fornecedores publiquem vários catálogos para criar produtos do fornecedor, produtos modelo, contratos e registros de preço.

    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 Estados Unidos (UNSPSC) e o nome da categoria.
      • Se o 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 um modelo de produto não existir para o MPN, faça o seguinte:
        1. Uma classe de modelo de produto geralmente está disponível na categoria de modelo referenciada pela categoria de terceiros para o produto. Use esta classe de modelo de produto para obter a tabela do 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, publicador ou provedor 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 da 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 do 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 do produto da API devem ser criados ou atualizados na lista relacionada de atributos do produto para o modelo do 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 relacionados ao modelo de produto.

    Mapeamento de terceiros

    Use as tabelas a seguir 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 as 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 unidade de terceiros para o administrador do ShoppingHub mapear com unidades de produto do fornecedor.
    • Mapeamentos de unidade 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 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 das 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 API docatá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 REST API da tabela. A resposta da API lista os registros em que a solicitação de importação em massa falhou. Para obter uma 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 o ID do cliente, o ID do fornecedor, o tipo de erro, o ID exclusivo do conjunto de importação e o estado podem ser encontrados na tabela Status de saída, que é a tabela de erros primária.

    Formato de URL

    /api/sn_spend_intg/spendint/catalog

    Parâmetros de solicitação compatíveis

    Tabela 1. Parâmetros de caminho
    Nome Descrição
    Nenhum
    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 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 Obrigató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"]
    product.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 de 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.contrato_acordo.contract_end_date Data em que o prazo do contrato termina.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Formato: AAAA-MM-DD

    produtos.contrato_acordo.contract_number Obrigatório. Número do contrato ativo que está associado ao produto.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    produtos.contrato_acordo.contrato_início_data Data em que o prazo do contrato começa.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Formato: AAAA-MM-DD

    productos.contrato_acordo.negociada_moeda Obrigatório. Moeda do preço negociado.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    produtos.contrato_acordo.preço_negociado 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

    product.images 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

    product.mpn Obrigatório. Identificador de um produto fornecido pelo fabricante, fornecedor ou fornecedor.
    Nota:
    Isso não será 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

    produtos.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

    product_attributes 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

    produtos.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

    produtos.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 pacote de produtos em que há componentes de pacote secundário.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 65000

    produtos.nome_do_produto 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

    fornecedor_id Obrigatório. Identificador do revendedor ou fornecedor com quem o cliente pode fazer pedidos.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    third_party_import_id 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 o Procurement Integration Framework.
    Tabela 5. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum

    Códigos de status

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

    Tabela 6. Códigos de status
    Código de status Descrição
    êxito Bem-sucedido. A solicitação foi processada com sucesso.
    falha Falha. 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 a 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 "Êxito" 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"
                        }
                    ]
                }
            ]
        }
    }

    API Spendint - POST /sn_spend_intg/spendint/price

    Atualiza qualquer preço para registros de produto do fornecedor.

    Quando o preço está disponível para registros de produto do fornecedor, a API usa o SKU do produto para encontrar um produto do fornecedor existente. Se houver um produto do fornecedor correspondente, o preço do contrato correspondente será atualizado. Se nenhum produto do fornecedor correspondente for encontrado, uma mensagem de erro será gerada, informando que o produto para o qual você está tentando atualizar o preço não existe.

    Tabelas de status

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

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

    Você pode encontrar os detalhes sobre o ID do cliente, o ID do fornecedor, o tipo de erro, o ID do conjunto de importação exclusivo e o estado na tabela Status de saída, que é a tabela de erro primária.

    Formato de URL

    /api/sn_spend_intg/spendint/price

    Parâmetros de solicitação compatíveis

    Tabela 7. Parâmetros de caminho
    Nome Descrição
    Nenhum
    Tabela 8. 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 9. Parâmetros do corpo da solicitação (XML ou JSON)
    Nome Descrição
    catalog_id Obrigatório. Identificador do conteúdo do catálogo que pode ser comprado por um cliente.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    customer_id Obrigatório. Identificador do cliente.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

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

    Tipo de dados: matriz

    "products": [
      {
        "contract_agreement": {Array},
        "sku": "String"
      }
    ]
    produtos.contrato_acordo Detalhes do contrato de um produto.

    Tipo de dados: objeto

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

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Formato: AAAA-MM-DD

    produtos.contrato_acordo.contract_number Obrigatório. Número do contrato ativo que está associado ao produto.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    produtos.contrato_acordo.contrato_início_data Data em que o prazo do contrato começa.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Formato: AAAA-MM-DD

    productos.contrato_acordo.negociada_moeda Obrigatório. Moeda do preço negociado.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    produtos.contrato_acordo.preço_negociado 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

    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

    fornecedor_id 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

    third_party_import_id 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 10. 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 o Procurement Integration Framework.
    Tabela 11. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum

    Códigos de status

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

    Tabela 12. Códigos de status
    Código de status Descrição
    êxito Bem-sucedido. A solicitação foi processada com sucesso.
    falha Falha. 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 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 "Êxito" ou "Falha".

    Tipo de dados: cadeia de caracteres

    Solicitação de cURL

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/price" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root": [{
      "customer_id": "ACME CORP",
      "catalog_id": "AB-1234323",
      "supplier_id": "SUP-123456",
      “third_party_import_id”: “DEL789876",
      "products": [
        {
          "sku": "5578874",
          "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”: “ACME CORP”,
                    “supplier_id”: “SUP-123456”,
                    “third_party_import_id”: “DEL789876",
                    “status_code”: “failure”,
                    “error_response_body”: [
                        {
                            “sku”: “5578874”,
                            “error_message”: “The product for which you are trying to update pricing does not exist\nField Value empty/Formatting issue Negotiated currency\nField Value empty/Formatting issue Contract start date\nField Value empty/Formatting issue Contract end date\n”
                        }
                    ]
                }
            ]
        }
    }

    API Spendint - POST /sn_spend_intg/spendint/availability

    Atualiza a disponibilidade dos registros de produto do fornecedor.

    Quando os registros de produto do fornecedor estão disponíveis, a API usa o SKU do produto para encontrar um produto do fornecedor existente. Se houver um produto do fornecedor correspondente, o campo available_units correspondente será atualizado. Se nenhum produto do fornecedor correspondente for encontrado, será gerada uma mensagem de erro informando que o produto para o qual você está tentando atualizar a disponibilidade não existe.

    Tabelas de status

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

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

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

    Formato de URL

    /api/sn_spend_intg/spendint/availability

    Parâmetros de solicitação compatíveis

    Tabela 13. Parâmetros de caminho
    Nome Descrição
    Nenhum
    Tabela 14. 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 15. Parâmetros do corpo da solicitação (XML ou JSON)
    Nome Descrição
    catalog_id Obrigatório. Identificador do conteúdo do catálogo que pode ser comprado por um cliente.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    customer_id Obrigatório. Identificador do cliente.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

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

    Tipo de dados: matriz

    "products": [
      {
        "available_units": "String",
        "sku": "String",
        "unit": "String"
      }
    ]
    produtos.unidades_disponíveis Obrigatório para produtos que são mantidos em estoque. Número de unidades disponíveis para este produto.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    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: 100

    fornecedor_id Identificador do revendedor ou fornecedor com o qual o cliente pode fazer pedidos.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    third_party_import_id 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 16. 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 o Procurement Integration Framework.
    Tabela 17. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum

    Códigos de status

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

    Tabela 18. Códigos de status
    Código de status Descrição
    êxito Bem-sucedido. A solicitação foi processada com sucesso.
    falha Falha. 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 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 "Êxito" ou "Falha".

    Tipo de dados: cadeia de caracteres

    Solicitação de cURL

    curl "https://instance.servicenow.com/api/sn_spend_intg/spendint/availability" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root": [{
      "customer_id": "AB-1234323",
      "catalog_id": "ACME CORP",
      "supplier_id": "SUP-123456",
      "third_party_import_id": "DEL6789876",
      "products": [
        {
          "sku": "5578874",
          "unit": "Each",
          "available_units": "20"
        }
      ]
    }
    ]}
    

    Possíveis respostas:

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    Error response: 
    {
        "result": {
            "response": [
                {
                    "customer_id": "AB-1234323",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "DEL6789876",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sku": "5578874",
                            "error_message": "The product for which you are trying to update availability does not exist\nField Value empty/Formatting issue Unit\n"
                        }
                    ]
                }
            ]
        }
    }

    API Spendint - POST /sn_spend_intg/spendint/orderack

    Atualiza as informações do pedido para quando um usuário compra um produto em um catálogo de terceiros. Quando o usuário faz o check-out, uma linha de compra é criada para que as aprovações ou outras tarefas da compra possam ser concluídas.

    Quando uma ordem de compra é gerada no banco de dados ServiceNow, a ordem é inserida nas seguintes tabelas:
    • Ordem de saída: contém o cabeçalho do pedido.
    • Linha da ordem de saída: contém as linhas da ordem.

    Os fornecedores precisam consultar essas tabelas e buscar os pedidos pendentes nelas. Os fornecedores devem criar um app com escopo para ações Flow Designer para integração com o banco de dados ServiceNow.

    Consulte as tabelas com os seguintes parâmetros:
    • sysparm_query=supplier_id=<supplier_id> ^purchase_order.status=20 para cabeçalho
    • sysparm_query=purchase_order.supplier_id=<supplier_id> ^purchase_order.status=20 para cabeçalho
    Quando uma linha de compra é convertida em uma linha de ordem de compra, os seguintes processos são executados:
    1. A ordem de compra e a linha da ordem de compra são enviadas para o ERP (Enterprise Resource Planning), se aplicável.
    2. A ordem de compra e a linha da ordem de compra são transferidas por meio de integração para o terceiro com o ID do cliente, ID do fornecedor, número da ordem de compra, data do pedido, valor da ordem de compra, moeda do valor da ordem de compra e linhas da ordem de compra.
    3. A ordem de compra e a linha de ordem de compra permanecem no estado Envio pendente até que as mensagens de confirmação sejam recebidas pela integração de catálogo de terceiros e pelo ERP. Depois que a confirmação é recebida, o estado é atualizado para Solicitado. Se não houver integração de ERP envolvida, uma mensagem de confirmação será necessária somente da integração de terceiros.

    Tabelas de status

    Para saber o status da solicitação de confirmação do pedido, faça uma chamada REST no banco de dados ServiceNow usando a REST API da tabela. A resposta da API lista os registros em que a solicitação de confirmação do pedido falhou. Para obter uma resposta de confirmação de pedido, consulte a tabela Erro de confirmação de pedido com o seguinte parâmetro:

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

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

    Formato de URL

    /api/sn_spend_intg/spendint/orderack

    Parâmetros de solicitação compatíveis

    Tabela 19. Parâmetros de caminho
    Nome Descrição
    Nenhum
    Tabela 20. 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 21. Parâmetros do corpo da solicitação (XML ou JSON)
    Nome Descrição
    customer_id Obrigatório. Identificador do cliente.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    order_number Obrigatório. Número da ordem de compra fornecido pelo cliente para este pedido.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    linhas_pedido_de_vendas Lista de objetos que definem as linhas da ordem de vendas com atualizações exclusivas para as compras nesta ordem.

    Tipo de dados: matriz

    "sales_order_lines":[
      {
        "estimated_arrival_date": "String",
        "line_number": "String",
        "sales_order_line_number": "String"
      }
    ]
    linhas_ordem_de_vendas.data_de_chegada_estimada Data de chegada estimada do pedido.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Formato: AAAA-MM-DD

    vendas_ordem_linhas.line_number Obrigatório. Número da linha da ordem de compra que foi gerado pelo cliente para uma compra específica.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    vendas_ordem_linhas.vendas_ordem_linha_número Número da linha do pedido de vendas que foi gerado pelo fornecedor. Este número é necessário somente para revisões desta compra.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    número_pedido_de_vendas Número ou valor gerado pelo fornecedor para este pedido.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    status_code Obrigatório. Status do pedido enviado que confirma se o pedido foi feito com sucesso.

    Tipo de dados: cadeia de caracteres

    Valores válidos:
    • confirmado: pedido feito com sucesso.
    • rejeitado: pedido não realizado.
    status_message Mensagem anexada a um código de status. Por exemplo, a mensagem pode ser que o pedido foi feito com sucesso e está na ordem de retorno.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 1000

    fornecedor_id 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

    third_party_import_id 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 22. 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 o Procurement Integration Framework.
    Tabela 23. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum

    Códigos de status

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

    Tabela 24. Códigos de status
    Código de status Descrição
    êxito Bem-sucedido. A solicitação foi processada com sucesso.
    falha Falha. 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 pelo número da ordem de vendas, pelo número da linha da ordem de vendas e pela 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 "Êxito" ou "Falha".

    Tipo de dados: cadeia de caracteres

    Solicitação de cURL

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/orderack" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root":[{
      "customer_id": "ACME CORP",
      "supplier_id": "SUP-123456",
      "third_party_import_id": "undefined",
      "order_number": "PO08903323",
      "sales_order_number": "SO03323212",
      "status_code": "CONFIRMED",
      "status_message": "BACKORDERED",
      "sales_order_lines":[
        {
          "line_number": "POL6789876",
          "sales_order_line_number": "SOL5678909",
          "estimated_arrival_date": "YYYY-MM-DD"
        }
      ]
    }
    ]}
    

    Possíveis respostas:

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    // Error response:
    {
        "result": {
            "response": [
                {
                    "customer_id": "ACME CORP",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "undefined",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sales_order_number": "SO03323212",
                            "sales_order_line_number": "SOL5678909",
                            "error_message": "Field Value empty/Formatting issue Purchase order number\nField Value empty/Formatting issue Purchase order line number\n"
                        }
                    ]
                }
            ]
        }
    }

    API Spendint - POST /sn_spend_intg/spendint/shipment

    Use este endpoint para aceitar atualizações em compras de terceiros.

    Ao receber dados, você deve corresponder os dados de remessa a uma linha de ordem de compra usando o número da linha da ordem de vendas. Você pode usar o número de acompanhamento para encontrar um registro de detalhes de remessa existente que esteja relacionado à linha da ordem de compra. Se esse registro não for encontrado, crie um novo registro de detalhes da remessa. Se não houver nenhuma ordem de compra ou linha de ordem de compra para os dados da remessa, você verá uma mensagem de erro informando que a ordem de compra para esta remessa não existe.
    Nota:
    Se as linhas da ordem de compra e da ordem de compra estiverem no status Envio pendente e as linhas da ordem de vendas e da ordem de vendas não estiverem preenchidas, a remessa e a publicação da fatura do revendedor terceirizado não serão permitidas. Isso só é permitido quando o status da ordem de compra e as linhas da ordem de compra são Solicitado. Além disso, não há restrição sequencial na remessa e publicação de fatura.

    Tabelas de status

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

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

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

    Formato de URL

    /api/sn_spend_intg/spendint/shipment

    Parâmetros de solicitação compatíveis

    Tabela 25. Parâmetros de caminho
    Nome Descrição
    Nenhum
    Tabela 26. 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 27. 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

    order_number Obrigatório. Número da ordem de compra fornecido pelo cliente para este pedido.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    número_pedido_de_vendas Obrigatório. Número ou valor gerado pelo fornecedor para este pedido.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    linhas_remessa Lista de linhas de remessa que podem conter o número de série, o número IMEI e os detalhes da etiqueta do ativo dos ativos.

    Tipo de dados: matriz

    "shipment_lines": [
      {
        "actual_shipment_date": "String",
        "estimated_arrival_date": "String",
        "line_number": "String",
        "planned_shipment_date": "String",
        "product_details": [Array],
        "sales_order_line_number": "String",
        "shipping_address": {Object},
        "shipping_carrier": "String",
        "shipment_quantity": "String",
        "ship_to": "String",
        "tracking_number": "String"
      }
    ]
    linhas_embarque.data_embarque_real Data em que a remessa sai do local do fornecedor.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Formato: AAAA-MM-DD

    linhas_de_envio.data_de_chegada_estimada Data em que a remessa deve chegar ao local especificado.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Formato: AAAA-MM-DD

    linhas_remessa.número_linha Obrigatório. Número da linha da ordem de compra que é gerado pelo cliente para uma compra específica.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    linhas_embarque.data_embarque_planejada Data em que a remessa está planejada para deixar o local do fornecedor.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Formato: AAAA-MM-DD

    linhas_remessa.detalhes_do_produto Lista de objetos que definem os detalhes sobre os produtos que estão sendo enviados. As opções incluem o número de série, o número IMEI e os detalhes da etiqueta do ativo.

    Tipo de dados: matriz

    "product_details": [
      {
        "asset_tag": "String",
        "imei": "String",
        "serial_number": "String"
      }
    ]
    remessa_lines.product_details.asset_tag Etiqueta do ativo do produto enviado.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    linhas_remessa.detalhes_do_produto.imei Número IMEI do produto enviado.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    remessa_lines.product_details.serial_number Obrigatório. Número de série do produto enviado.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    linhas_envio.vendas_número_linha_pedido_linha Número da linha da ordem de vendas que é gerado pelo fornecedor. Este número é necessário somente para revisões desta compra.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    linhas_de_envio.endereço_de_envio Endereço para o qual os produtos estão sendo enviados.

    Tipo de dados: objeto

    "shipping_address":
      {
        "city": "String",
        "country": "String",
        "name": "String",
        "state": "String",
        "street": "String",
        "zip_code": "String"
      }
    linhas_de_envio.endereço_de_envio.cidade Nome da cidade para onde os produtos são enviados.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 1000

    linhas_de_envio.endereço_de_envio.país País para o qual os produtos são enviados.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    linhas_de_envio.endereço_de_envio.nome Nome do cliente para o qual os produtos estão sendo enviados.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 1000

    linhas_de_envio.endereço_de_envio.estado Estado para o qual os produtos são enviados.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 1000

    linhas_de_envio.endereço_de_envio.rua Nome da rua para onde os produtos são enviados.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 1000

    linhas_de_envio.endereço_de_envio.cep_code CEP ou código PIN para o qual os produtos são enviados.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    linhas_remessa.quantidade_envio Obrigatório. Número de produtos enviados como bens físicos. O número deve conter a quantidade de produtos que estão na remessa.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    linhas_de_envio.transportadora_de_envio Transportadora que entrega o produto no local especificado, como FedEx, UPS, USPS e assim por diante.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    linhas_remessa.navio_para Nome do destinatário para o qual os produtos serão enviados.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    linhas_de_envio.número_de_acompanhamento Número de acompanhamento fornecido pela transportadora para a compra inteira ou parcial.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    fornecedor_id 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

    fornecedor_remessa_número Obrigatório. Número de identificação gerado para esta remessa. Normalmente, esse número é gerado por um ERP (Enterprise Resource Planning) ou sistema de acompanhamento de pedidos.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    third_party_import_id 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 28. 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 o Procurement Integration Framework.
    Tabela 29. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum

    Códigos de status

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

    Tabela 30. Códigos de status
    Código de status Descrição
    êxito Bem-sucedido. A solicitação foi processada com sucesso.
    falha Falha. 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 pelo número da linha da ordem de vendas, pelo número da ordem de vendas, pelo número da remessa do fornecedor e pela 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 "Êxito" ou "Falha".

    Tipo de dados: cadeia de caracteres

    Solicitação de cURL

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/shipment" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root":[{
      "customer_id" : "ACME CORP",
      "supplier_id" : "SUP-123456",
      "third_party_import_id": "DEL2134324",
      "supplier_shipment_number" : "TN-YU67898723",
      "order_number": "PO0001002",
      "sales_order_number": "SO00223002",
      "shipment_lines": [
        {
          "line_number": "POL0001005",
          "sales_order_line_number": "SOL0231325",
          "shipment_quantity": "4",
          "shipping_carrier": "FedEx",
          "tracking_number": "E-901290092",
          "shipping_address":
            {
              "name" : "1640 Camino Del Rio North #202, San Diego,CA",
              "street" : "1640 Camino Del Rio North",
              "city" : "San Diego",
              "state" : "CA",
              "zip_code" : "92108-1512",
              "country" : "US"
            },
          "ship_to": "John doe",
          "planned_shipment_date": "YYYY-MM-DD",
          "actual_shipment_date": "YYYY-MM-DD",
          "estimated_arrival_date": "YYYY-MM-DD",
          "product_details": [
            {
              "serial_number": "FL1234-23242319001",
              "imei": "2134890294",
              "asset_tag": ""
            },{
              "serial_number": "FL1234-23242319110",
              "imei": "245499003",
              "asset_tag": ""
            }
          ]
        }
      ]
    }
    ]}

    Possíveis respostas:

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    // Error response:
    {
        "result": {
            "response": [
                {
                    "customer_id": "ACME CORP",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "DEL2134324",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sales_order_line_number": "SOL0231325",
                            "sales_order_number": "SO00223002",
                            "supplier_shipment_number": "TN-YU67898723",
                            "error_message": "The purchase order for this shipment does not exist\nThe purchase order line for this shipment does not exist\n"
                        }
                    ]
                }
            ]
        }
    }

    API Spendint - POST /sn_spend_intg/spendint/invoice

    Aceita faturas de provedores terceirizados.

    Se as linhas da ordem de compra e da ordem de compra estiverem no status Envio pendente e as linhas da ordem de vendas e da ordem de vendas não estiverem preenchidas, a remessa e a publicação da fatura do revendedor terceirizado não serão permitidas. Isso só é permitido quando o status da ordem de compra e as linhas da ordem de compra são Solicitado. Além disso, não há restrição sequencial na remessa e publicação de fatura.

    Depois que uma fatura é enviada, a fatura e as linhas da fatura são mapeadas para uma ordem de compra. Em um mapeamento bem-sucedido, o estado da fatura é definido da seguinte forma:
    • Aguardando entrega: quando não existem recibos, o pedido é parcialmente entregue ou a fatura requer aprovação.
    • Fatura confirmada: quando a ordem de compra é entregue e o valor faturado corresponde ao valor total da ordem de compra.
    • Requer revisão: quando a ordem de compra é entregue e o valor faturado não corresponde ao valor total da ordem de compra.

    Quando uma fatura válida é publicada para um item de linha, a mesma fatura não pode ser atualizada.

    Se a fatura fornecida não tiver um número de ordem de compra, a fatura será rejeitada e você verá uma mensagem de erro informando que uma ou mais faturas fornecidas não têm um número de ordem de compra. Se a fatura fornecida tiver um número de ordem de compra, mas não corresponder à ordem de compra ou não existir nenhuma ordem de compra, você verá uma mensagem de erro. A mensagem informa que uma ou mais faturas não têm uma ordem de compra correspondente que corresponda ao número de ordem de compra da fatura. Além disso, se o valor faturado enviado pelo revendedor terceirizado não corresponder ao valor faturado, a fatura será rejeitada.

    Tabelas de status

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

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

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

    Formato de URL

    /api/sn_spend_intg/spendint/invoice

    Parâmetros de solicitação compatíveis

    Tabela 31. Parâmetros de caminho
    Nome Descrição
    Nenhum
    Tabela 32. 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 33. Parâmetros do corpo da solicitação (XML ou JSON)
    Nome Descrição
    moeda Obrigatório. Moeda para subtotal, imposto e envio. O subtotal, o imposto e o envio devem estar na mesma moeda.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    customer_id Identificador do cliente.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    descontos Descontos aplicados à fatura. Este é um campo editável.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    data_fatura Obrigatório. Data em que o cliente foi faturado.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Formato: AAAA-MM-DD

    fatura_linhas Lista de objetos que definem as linhas que estão sendo faturadas para compras neste pedido.

    Tipo de dados: matriz

    "invoice_lines": [
      {
        "invoiced_line_amount": "String",
        "invoiced_quantity": "String",
        "line_number": "String",
        "supplier_invoice_line_number": "String",
        "sales_order_line_number": "String"
      }
    ]
    linhas_fatura.valor_linha_fatura Obrigatório. Custo total, excluindo impostos e envio, que um cliente está sendo faturado para uma determinada linha de ordem de compra.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    linhas_fatura.quantidade_fatura Obrigatório. Quantidade de bens ou serviços para os quais um cliente está sendo faturado.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    linhas_fatura.número_linha Obrigatório. Número da linha da ordem de compra que é gerado pelo cliente para uma compra específica.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    linhas_fatura.número_linha_pedido_de_vendas Obrigatório. Número da linha da ordem de vendas que é gerado pelo fornecedor.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    Invoice_lines.supplier_invoice_line_number Obrigatório. Número de identificação gerado por um fornecedor para esta linha de fatura.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    outras_cobranças Outras cobranças adicionais associadas à fatura. Este é um campo editável.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    order_number Obrigatório. Número da ordem de compra fornecido pelo cliente para este pedido.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    remetente_para_endereço Obrigatório. Local para o qual um pagamento é feito.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 1000

    número_pedido_de_vendas Obrigatório. Número ou valor gerado pelo fornecedor para este pedido.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    envio Obrigatório. Custo total de envio para a compra inteira.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    subtotal Obrigatório. Valor total a ser pago ao fornecedor, excluindo impostos e taxas de envio.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    fornecedor_id 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

    fornecedor_invoice_number Obrigatório. Número de identificação gerado por um fornecedor para esta fatura.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    fornecedor_imposto_id Identificador de imposto associado ao revendedor terceirizado. Este é um campo editável.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    imposto Obrigatório. Valor total de impostos cobrados pela compra.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    tax_rate Porcentagem da taxa de imposto aplicada ao pedido. Este é um campo editável.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 100

    third_party_import_id 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

    total_valor_faturado Obrigatório. Valor total a ser pago ao fornecedor, incluindo impostos e taxas de envio.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 40

    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 34. 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 o Procurement Integration Framework.
    Tabela 35. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum

    Códigos de status

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

    Tabela 36. Códigos de status
    Código de status Descrição
    êxito Bem-sucedido. A solicitação foi processada com sucesso.
    falha Falha. 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 pelo número da linha da ordem de vendas, número da ordem de vendas, número da fatura do fornecedor, número da linha da fatura do fornecedor e a 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 "Êxito" ou "Falha".

    Tipo de dados: cadeia de caracteres

    Solicitação de cURL

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/invoice" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root":[{
      "customer_id": "Customer - A",
      "supplier_id": "SUP-123456",
      "third_party_import_id": "undefined",
      "supplier_invoice_number": "QAAP89873220071",
      "supplier_tax_id": "TIN000000",
      "order_number": "POL7987633",
      "sales_order_number": "SO0000000081",
      "invoice_date": "YYYY-MM-DD",
      "subtotal": "6000",
      "tax_rate": "10%",
      "tax": "600",
      "shipping": "120",
      "other_charges": "100",
      "discounts": "200",
      "total_amount_invoiced": "6620",
      "remit_to_address": "1640 Camino Del Rio North #202, San Diego,CA",
      "currency": "USD",
      "invoice_lines": [
        {
          "supplier_invoice_line_number": "QA789A867877ABN32251",
          "line_number": "POL587667",
          "sales_order_line_number": "SOL00000081",
          "invoiced_quantity": "45",
          "invoiced_line_amount": "4000"
        },
        {
          "line_number": "POL587668",
          "supplier_invoice_line_number": "78987323",
          "sales_order_line_number": "SOL98769",
          "invoiced_quantity": "12",
          "invoiced_line_amount": "2000"
        }
      ]
    }
    ]}

    Possíveis respostas:

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    // Error response:
    {
        "result": {
            "response": [
                {
                    "customer_id": "Customer - A",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "undefined",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sales_order_line_number": "SOL00000081",
                            "sales_order_number": "SO0000000081",
                            "supplier_invoice_number": "QAAP89873220071",
                            "supplier_invoice_line_number": "QA789A867877ABN32251",
                            "error_message": "The invoice do not have a corresponding purchase order which matches the purchase order number of the invoice provided\n"
                        }
                    ]
                }
            ]
        }
    }