---
sourceDocument: 호주 API 참조
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ko-KR/api-reference

 Release :

    - australia

ft:locale :

    - ko-KR

ft:publication_title :

    - 호주 API 참조

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# 제품 주문 개방형 API 개발자 가이드

# 제품 주문 개방형 API 개발자 가이드 {#ariaid-title1}

* 릴리스 버전: Australia
* 
* 업데이트 날짜 2026년 03월 12일
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 소요 시간: 8분

제품 주문 오픈 API를 사용하여 제품 주문 정보를 생성, 업데이트 및 검색합니다.

이 개발자 가이드에서는 다양한 [제품 주문 개방형 API](https://servicenow-prod.fluidtopics.net/Kgd8BvQSlxE~im_SdhdN~w#tmf622_product_ordering-api "제품 주문 개방형 API는 제품 주문을 위한 표준화된 메커니즘을 사용할 수 있는 엔드포인트를 제공합니다.") 커스터마이제이션을 수행하도록 확장하는 방법에 대한 정보를 제공합니다.

## 제품 주문 Open API 확장 {#ariaid-title2}

스크립트 포함을 편집하여 제품 주문 개방형 API 를 확장할 수 있습니다.  
이러한 스크립트 포함은 변경의 결과를 이해한 상태에서만 편집해야 합니다.

* TMFProductOrderAPIUtil: POST 요청을 처리하는 함수를 포함합니다.
* TMFProductOrderGetAPIUtil: GET 요청을 처리하는 함수를 포함합니다.
* ProductOrderExtensionOOB: TMFProductOrderAPIUtil 및 TMFProductOrderGetAPIUtil의 함수를 지원하는 도우미 함수를 포함합니다.
* ProductOrderProcessor: 비어 있는 스크립트 포함 파일입니다. 이 파일을 사용하여 ProductOrderExtensionOOB에서 재정의할 함수를 정의합니다.
{#extend-product-order-api__ul_d5h_lhr_wpb}

제품 주문 개방형 API를 확장하여 다음과 같은 사용자 지정을 수행합니다.

### 필수 매개변수 {#extend-product-order-api__section_nmk_lbt_prb}

제품 주문을 만드는 데 필요하거나 필요하지 않은 요청 본문 매개변수를 변경하려면 ProductOrderExtensionOOB 스크립트 포함에 포함된 `getProductOrderSchema()` 함수를 재정의합니다.

`getProductOrderSchema()` 함수는 TMFOrderAPIConstants 스크립트 포함에서 스키마를 읽습니다. TMFOrderAPIConstants 는 보호되며 편집할 수 없으므로 스키마를 업데이트할 수 없습니다. 대신 다른 파일에서 새 스키마를 읽어야 합니다. `getProductOrderSchema()`를 재정의하여 새 스키마를 읽을 수 있습니다. `getProductOrderSchema()`를 재정의하려면 ProductOrderProcessor 스크립트 포함에 같은 이름의 함수를 작성하십시오. ProductOrderProcessor의 새 함수는 TMFProductOrderAPIUtil에 의해 호출되어 ProductOrderExtensionOOB의 기본 `getProductOrderSchema()` 함수를 대체합니다.  
이 예에서 `getProductOrderSchema()는` 새 상수 파일에 정의된 사용자 지정 스키마를 반환합니다.

    // 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'
    });

### 요청 본문 확인 {#extend-product-order-api__section_hr2_pbt_prb}

요청 본문에 대한 추가 유효성 검사를 수행하려면 ProductOrderExtensionOOB 함수를 재정의합니다. ProductOrderExtensionOOB 에는 기본적으로 `true` 를 반환하는 다음 네 개의 도우미 함수가 포함되어 있습니다.

* `validatePostRequest()` - TMFProductOrderAPIUtil에서 `processCreateOrder()`에 의해 호출됩니다.
* `validateProductObj()` - TMFProductOrderAPIUtil에서 `processCreateOrder()`로 호출됩니다.
* `validateRelatedPartyObj()` - TMFProductOrderAPIUtil의 `processCreateOrder()`에 의해 호출됩니다.
* `validateGetRequest()` - TMFProductOrderGetAPIUtil의 `processGetOrder()`에 의해 호출됩니다.

{#extend-product-order-api__ul_khg_llx_wpb}도우미 함수가 `false`를 반환하면 API 작업을 중지합니다. 사용자 지정 유효성 검사를 적용하려면 ProductOrderProcessor에서 동일한 이름과 매개 변수를 사용하여 함수를 만들어 ProductOrderExtensionOOB 도우미 함수를 재정의합니다. 이러한 새 ProductOrderProcessor 함수는 TMFProductOrderAPIUtil 및 TMFProductOrderGetAPIUtil 에 의해 호출되어 기본 ProductOrderExtensionOOB 도우미 함수를 대체합니다.  
이 예제에서 ProductOrderProcessor 의 함수는 ProductOrderExtensionOOB 의 기본 함수를 재정의하여 속성에 대한 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'
    });

### 추가 REST 운영 {#extend-product-order-api__section_uqn_rbt_prb}

기존 GET 및 POST 작업 외에 추가 작업을 생성하려면 제품 주문 개방형 API에 대해 [스크립트된 REST 자원을 추가로 생성합니다](https://servicenow-prod.fluidtopics.net/seqzGDajT8QPRDo62RD7mg "HTTP 메서드와 처리 스크립트를 정의하고 상위 서비스의 설정을 재정의하는 스크립트된 REST API 자원을 만듭니다."). 새 스크립트된 REST 자원의 논리는 기존 작업과 일치해야 합니다. 새 스크립트 포함에서 새 작업에 대한 기능을 정의합니다.

### 필드 매핑 {#extend-product-order-api__section_bs3_tbt_prb}

기록을 만들 때 API는 요청 본문 매개변수를 기록 필드에 매핑합니다. 기록을 검색할 때 API는 기록 필드를 응답 객체 속성에 매핑합니다.  
ProductOrderExtensionOOB 에는 POST 요청 본문을 GlideRecord에 매핑하는 다음 함수가 포함되어 있습니다.

* `transformOrderGr()`
* `transformOrdLineItemGr()`
* `getLineItemPrice()`
* `transformPriceOrderTypeAndState()`
* `transformCustLineItmContact()`
* `transformOrderItemChar()`
{#extend-product-order-api__ul_krb_r4x_wpb}  
ProductOrderExtensionOOB 에는 GET 또는 POST 요청에 대한 응답 개체에 GlideRecord를 매핑하는 다음 함수가 포함되어 있습니다.

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

{#extend-product-order-api__ul_qqk_zfz_wpb}필드 매핑을 사용자 지정하여 추가 필드에 대한 데이터를 추가 및 검색하거나 필드의 기본 매핑을 변경합니다. 필드 매핑을 사용자 지정하려면 ProductOrderProcessor에서 동일한 이름과 매개변수를 가진 함수를 만들어 ProductOrderExtensionOOB 매핑 함수를 재정의합니다. 이러한 새 ProductOrderProcessor 함수는 TMFProductOrderAPIUtil 및 TMFProductOrderGetAPIUtil 에서 기본 ProductOrderExtensionOOB 매핑 함수를 대체하는 데 사용됩니다.  
이 예제에서 ProductOrderProcessor의 두 함수는 ProductOrderExtensionOOB의 기본 함수를 재정의하여 필드 sys_id 에 대한 external_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'
    });


