---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# Guia do desenvolvedor da Open API do pedido de produto

# Guia do desenvolvedor da Open API do pedido de produto {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 min. de leitura

Use a API Aberto de pedido de produto para criar, atualizar e recuperar informações de pedido de produto.

Este guia do desenvolvedor fornece informações sobre como estender o [API aberta de pedido de produto](https://servicenow-prod.fluidtopics.net/FRGX3jDFdlGt~NrxolgqRg#tmf622_product_ordering-api "A API Aberto de pedido de produto fornece endpoints que habilitam um mecanismo padronizado para fazer pedidos de produtos.") para fazer várias personalizações.

## Como estender a API aberta do pedido de produto {#ariaid-title2}

A API Aberta de pedido de produto pode ser estendida editando inclusões de script.  
Essas inclusões de script só devem ser editadas com uma compreensão das consequências das mudanças.

* TMFProductOrderAPIUtil: contém funções para lidar com solicitações POST.
* TMFProductOrderGetAPIUtil: contém funções para lidar com solicitações GET.
* ProductOrderExtensionOOB: contém funções de ajuda que oferecem suporte a funções em TMFProductOrderAPIUtil e TMFProductOrderGetAPIUtil.
* ProductOrderProcessor: um arquivo de inclusão de script vazio. Use este arquivo para definir as funções que você deseja substituir de ProductOrderExtensionOOB.
{#extend-product-order-api__ul_d5h_lhr_wpb}

Estenda a API aberta do pedido de produto para fazer as seguintes personalizações.

### Parâmetros obrigatórios {#extend-product-order-api__section_nmk_lbt_prb}

Para mudar quais parâmetros do corpo da solicitação são necessários ou não para criar um pedido de produto, substitua a função `getProductOrderSchema()` contida na inclusão de script ProductOrderExtensionOOB.

A função `getProductOrderSchema()` lê o esquema da inclusão de script TMFOrderAPIConstants. TMFOrderAPIConstants está protegido e não pode ser editado, portanto, você não pode apenas atualizar o esquema. Em vez disso, um novo esquema deve ser lido de um arquivo diferente. Você pode substituir `getProductOrderSchema()` para ler um novo esquema. Para substituir `getProductOrderSchema()`, grave uma função com o mesmo nome na inclusão de script ProductOrderProcessor. A nova função em ProductOrderProcessor será chamada por TMFProductOrderAPIUtil para substituir a função `getProductOrderSchema()` padrão em ProductOrderExtensionOOB.  
Neste exemplo, `getProductOrderSchema()` retorna um esquema personalizado que está definido em um novo arquivo de constante.

    // ProductOrderProcessor

    var ProductOrderProcessor = Class.create();
    ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
       // Define overriding functions here
       // Function name and parameters must be identical to the function it overrides

       getProductOrderSchema: function() {
          //Define your own custom schema in a new constant file
          return JSON.parse(Constants.SCHEMA.CREATE_PRODUCT_ORDER);
       },

       type: 'ProductOrderProcessor'
    });

### Solicitar validação do corpo {#extend-product-order-api__section_hr2_pbt_prb}

Para executar validações adicionais no corpo da solicitação, substitua as funções ProductOrderExtensionOOB. ProductOrderExtensionOOB contém as quatro funções de ajuda a seguir que retornam `verdadeiro` por padrão.

* validPostRequest`()` --- Chamado por `processCreateOrder()` em TMFProductOrderAPIUtil.
* validProductObj`()` --- Chamado por `processCreateOrder()` em TMFProductOrderAPIUtil.
* validRelatedPartyObj`()` --- Chamado por `processCreateOrder()` em TMFProductOrderAPIUtil.
* validGetRequest(`)` --- Chamado por `processGetOrder()` em TMFProductOrderGetAPIUtil.

{#extend-product-order-api__ul_khg_llx_wpb}Se uma função auxiliar retornar `falso`, ela interromperá a operação de API. Para aplicar a validação personalizada, substitua as funções auxiliares ProductOrderExtensionOOB criando funções com nomes e parâmetros idênticos em ProductOrderProcessor. Essas novas funções ProductOrderProcessor serão chamadas por TMFProductOrderAPIUtil e TMFProductOrderGetAPIUtil para substituir as funções auxiliares ProductOrderExtensionOOB padrão.  
Neste exemplo, uma função em ProductOrderProcessor substitui uma função padrão em ProductOrderExtensionOOB para executar a validação no atributo productOrderItem.

    // ProductOrderProcessor

    var ProductOrderProcessor = Class.create();
    ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
        // Define overriding functions here
        // Function name and parameters must be identical to the function it overrides

        validatePostRequest: function(orderObject, details) {
            // Returning false terminates the POST request
            // Make sure to push error message in details array in case of error
            if (gs.nil(orderObject.productOrderItem)) {
                details.push(new TMFCommonOrderAPIUtil().getErrorDetailsObj(TMFOrderAPIConstants.MESSAGES.MISSING_ORDER_ITEM, '/'));
                return false;
            }
            return true;
        },

        type: 'ProductOrderProcessor'
    });

### Operações REST adicionais {#extend-product-order-api__section_uqn_rbt_prb}

Para criar operações adicionais além das operações GET e POST existentes, [crie recursos REST de script adicionais](https://servicenow-prod.fluidtopics.net/kDReSwor5NjKYByBThnHJg "Crie um recurso de API REST com script para definir o método HTTP, o script de processamento e para substituir as configurações do serviço primário.") para a API aberta de pedido de produto. A lógica dos novos recursos REST de script deve ser consistente com as operações existentes. Defina funções para as novas operações em uma nova inclusão de script.

### Mapeamento de campo {#extend-product-order-api__section_bs3_tbt_prb}

Ao criar registros, a API mapeia os parâmetros do corpo da solicitação para campos de registro. Ao recuperar registros, a API mapeia campos de registro para atributos de objeto de resposta.  
ProductOrderExtensionOOB contém as seguintes funções para mapear um corpo de solicitação POST para um GlideRecord.

* `transformOrderGr()`
* `transformOrdLineItemGr()`
* `getLineItemPrice()`
* `transformPriceOrderTypeAndState()`
* `transformCustLineItmContact()`
* `transformOrderItemChar()`
{#extend-product-order-api__ul_krb_r4x_wpb}  
ProductOrderExtensionOOB contém as seguintes funções para mapear um GlideRecord para um objeto de resposta para solicitações GET ou POST.

* `transformPostOrderResponse()`
* `transformGetOrderResponse()`
* `transformProductObj()`
* `transformRelatedPartyCustomerLineItem()`
* `transformOrderItemRelationship ()`
* `transformGetOrdLineItmResponse()`
* `transformProductCharacteristics()`
* `transformProductSpecification()`

{#extend-product-order-api__ul_qqk_zfz_wpb}Personalize mapeamentos de campo para adicionar e recuperar dados de campos adicionais ou para alterar os mapeamentos padrão dos campos. Para personalizar os mapeamentos de campo, substitua as funções de mapeamento ProductOrderExtensionOOB criando funções com nomes e parâmetros idênticos em ProductOrderProcessor. Essas novas funções ProductOrderProcessor serão usadas por TMFProductOrderAPIUtil e TMFProductOrderGetAPIUtil para substituir as funções de mapeamento ProductOrderExtensionOOB padrão.  
Neste exemplo, duas funções em ProductOrderProcessor substituem as funções padrão em ProductOrderExtensionOOB para criar mapeamentos para os campos external_id e sys_id.

    // ProductOrderProcessor

    var ProductOrderProcessor = Class.create();
    ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
        // Define overriding functions here
        // Function name and parameters must be identical to the function it overrides

        transformOrderGr: function(requestObject, orderGr) {
            orderGr.external_id = requestObject.externalId;
            return orderGr;
        },

        transformPostOrderResponse: function(orderObject, orderGr) {
            orderObject.id = orderGr.getValue('sys_id');
            return orderObject;
        },

        type: 'ProductOrderProcessor'
    });


