---
sourceDocument: オーストラリア API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/api-reference

 Release :

    - australia

ft:locale :

    - ja-JP

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) 所要時間：9分

Product Order Open API を使用して、製品注文情報を作成、更新、および取得します。

この開発者ガイドでは、 [製品注文オープン API](https://servicenow-prod.fluidtopics.net/JmfbW68d5V7q7_xA6oKRug#tmf622_product_ordering-api "Product Order Open API は、製品を注文するための標準化されたメカニズムを有効にするエンドポイントを提供します。") を拡張してさまざまなカスタマイズを行う方法について説明します。

## 製品注文オープン API の拡張 {#ariaid-title2}

Product Order Open API は、スクリプトインクルードを編集することで拡張できます。  
これらのスクリプトインクルードは、変更の結果を理解した状態でのみ編集する必要があります。

* TMFProductOrderAPIUtil: POST 要求を処理する関数が含まれています。
* TMFProductOrderGetAPIUtil:GET 要求を処理する関数が含まれています。
* ProductOrderExtensionOOB: TMFProductOrderAPIUtil と TMFProductOrderGetAPIUtil の関数をサポートするヘルパー関数が含まれています。
* ProductOrderProcessor:空のスクリプトインクルードファイル。このファイルを使用して、 ProductOrderExtensionOOB から上書きする関数を定義します。
{#extend-product-order-api__ul_d5h_lhr_wpb}

Product Order Open API を拡張して、次のカスタマイズを行います。

### 必要なパラメーター {#extend-product-order-api__section_nmk_lbt_prb}

製品注文の作成に必要な要求本文パラメーターまたは不要な要求本文パラメーターを変更するには、ProductOrderExtensionOOB スクリプトインクルードに含まれる関数 `getProductOrderSchema()` を上書きします。

関数 `getProductOrderSchema()` は、 TMFOrderAPIConstants スクリプトインクルードからスキーマを読み取ります。TMFOrderAPIConstants は保護されており、編集できないため、スキーマを更新するだけではできません。代わりに、別のファイルから新しいスキーマを読み込む必要があります。`getProductOrderSchema()` をオーバーライドして、新しいスキーマを読み取ることができます。`getProductOrderSchema()` を上書きするには、ProductOrderProcessor スクリプトインクルードに同じ名前の関数を記述します。ProductOrderProcessorの新しい関数は、ProductOrderExtensionOOBのデフォルトの`getProductOrderSchema()`関数を置き換えるためにTMFProductOrderAPIUtilによって呼び出されます。  
この例では、 `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` を返す次の 4 つのヘルパー関数が含まれています。

* `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 操作以外の操作を作成するには、Product Order Open API 用に追加の[スクリプト化された REST リソースを作成します](https://servicenow-prod.fluidtopics.net/j0MWWqy9Q9dThWXF47vkdA "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 には、GlideRecord を GET または POST 要求の応答オブジェクトにマッピングするための次の関数が含まれています。

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

{#extend-product-order-api__ul_qqk_zfz_wpb}フィールドマッピングをカスタマイズして、他のフィールドのデータを追加および取得したり、フィールドのデフォルトマッピングを変更したりします。フィールドマッピングをカスタマイズするには、ProductOrderProcessor で同じ名前とパラメーターを持つ関数を作成して、ProductOrderExtensionOOB マッピング関数を上書きします。これらの新しい ProductOrderProcessor 関数は、 TMFProductOrderAPIUtil と TMFProductOrderGetAPIUtil によって使用され、既定の ProductOrderExtensionOOB マッピング関数を置き換えます。  
この例では、 ProductOrderProcessor の 2 つの関数が ProductOrderExtensionOOB のデフォルト関数をオーバーライドして、 external_id フィールドと 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'
    });


