---
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 da Ordem de serviço

# Guia do desenvolvedor da Open API da Ordem de serviço {#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 aberta de ordem de serviço para criar, atualizar e recuperar informações de ordem de serviço.

Este guia do desenvolvedor fornece informações sobre como estender o [API aberta de ordem de serviço](https://servicenow-prod.fluidtopics.net/miS_rgy~NQ2fV~AoF5YCOQ#service-order-open-api "A API aberta de ordem de serviço fornece endpoint que habilita um mecanismo padronizado para colocar ordens de serviço.") para fazer várias personalizações.

## Como estender a API aberta da ordem de serviço {#ariaid-title2}

A API aberta da ordem de serviço 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.

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

Estenda a API aberta da ordem de serviço para fazer as seguintes personalizações.

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

Para mudar quais parâmetros do corpo da solicitação são necessários ou não necessários para criar uma ordem de serviço, substitua a função `getServiceOrderSchema()` contida na inclusão de script ServiceOrderExtensionOOB.

A função `getServiceOrderSchema()` 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 `getServiceOrderSchema()` para ler um novo esquema. Para substituir `getServiceOrderSchema()`, grave uma função com o mesmo nome na inclusão de script ServiceOrderProcessor. A nova função em ServiceOrderProcessor será chamada por TMFServiceOrderAPIUtil para substituir a função `getServiceOrderSchema()` padrão em ServiceOrderExtensionOOB.  
Neste exemplo, `getServiceOrderSchema()` retorna um esquema personalizado que está definido em um novo arquivo de constante.

    // ServiceOrderProcessor

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

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

       type: 'ServiceOrderProcessor'
    });

### Solicitar validação do corpo {#extend-service-order-api__section_m3r_1hs_nrb}

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

* validPostRequest(`)` --- Chamado por `processPostOrder()` em TMFServiceOrderAPIUtil.
* validServiceObj(`)` --- Chamado por `processPostOrder()` em TMFServiceOrderAPIUtil.
* validRelatedPartyObj(`)` --- Chamado por `processPostOrder()` em TMFServiceOrderAPIUtil.
* validGetRequest(`)` --- Chamado por `processGetOrder()` em TMFServiceOrderGetAPIUtil.

{#extend-service-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 ServiceOrderExtensionOOB criando funções com nomes e parâmetros idênticos em ServiceOrderProcessor. Essas novas funções ServiceOrderProcessor serão chamadas por TMFServiceOrderAPIUtil e TMFServiceOrderGetAPIUtil para substituir as funções auxiliares ServiceOrderExtensionOOB padrão.  
Neste exemplo, uma função em ServiceOrderProcessor substitui uma função padrão em ServiceOrderExtensionOOB para executar a validação no atributo serviceOrderItem.

    // ServiceOrderProcessor

    var ServiceOrderProcessor = Class.create();
    ServiceOrderProcessor.prototype = Object.extendsObject(ServiceOrderExtensionOOB, {
        // 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.serviceOrderItem)) {
                details.push(new TMFCommonOrderAPIUtil().getErrorDetailsObj(TMFOrderAPIConstants.MESSAGES.MISSING_ORDER_ITEM, '/'));
                return false;
            }
            return true;
        },

        type: 'ServiceOrderProcessor'
    });

### Operações REST adicionais {#extend-service-order-api__section_sy1_2hs_nrb}

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 ordem de serviço. 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-service-order-api__section_ywk_rhs_nrb}

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.  
ServiceOrderExtensionOOB contém as seguintes funções para mapear um corpo de solicitação POST para um GlideRecord.

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

* `transformPostOrderResponse()`
* `transformGetOrderResponse()`
* `transformServiceObj()`
* `transformRelatedPartyCustomerLineItem()`
* `transformOrderItemRelationship ()`
* `transformGetOrdLineItmResponse()`
* `transformServiceCharacteristics()`
* `transformServiceSpecification ()`
{#extend-service-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 ServiceOrderExtensionOOB criando funções com nomes e parâmetros idênticos em ServiceOrderProcessor. Essas novas funções ServiceOrderProcessor serão usadas por TMFServiceOrderAPIUtil e TMFServiceOrderGetAPIUtil para substituir as funções de mapeamento ServiceOrderExtensionOOB padrão.  
Neste exemplo, duas funções em ServiceOrderProcessor substituem as funções padrão em ServiceOrderExtensionOOB para criar mapeamentos para os campos external_id e sys_id.

    // ServiceOrderProcessor

    var ServiceOrderProcessor = Class.create();
    ServiceOrderProcessor.prototype = Object.extendsObject(ServiceOrderExtensionOOB, {
        // 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: 'ServiceOrderProcessor'
    });


