受信REST Webサービスの設定

受信REST Webサービスの設定

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

Alert

早期アクセス

この機能はすべてのユーザーに対して有効になっているわけではありません。試用をご希望の場合は、メールでサポートチームにご連絡いただき、早期アクセスをお申し込みください。

QntrlのインバウンドREST Webサービスを使用すると、外部ユーザーやシステムが呼び出せるカスタムAPIエンドポイントを作成し、Qntrl内で特定の操作を実行できます。ユーザーがAPIを実行すると、Qntrlは要求を受信し、
FunctionスクリプトまたはCircuitで設定されたロジックに基づいて処理します。

インバウンドRESTの主な機能の1つは、Qntrlドメインを隠し、顧客がAPI URLを自社ドメイン名としてホワイトラベル化できることです。

主なポイント  

  • カスタムエンドポイント:業務ワークフローに合わせたREST API URLを定義できます。例:https://<qntrl-domain>/webservice/<org_id>/<custom-endpoint>      
  • セキュアアクセス:OAuthとAPIキー認証に対応しています。
  • スマートロジック:カスタムスクリプト(Function)または自動フロー(Circuit)を実行できます。
Info
ドメインをカスタマイズする場合は、Qntrlのホワイトラベル機能を使用します。

仕組み  
  1. 外部システムがAPI要求を送信します。
  2. Qntrlが要求を受信して認証します。
  3. 設定済みのロジックがFunctionまたはCircuitを通じて実行されます。
  4. 応答が返され、関連する処理がQntrl内で実行されます。

インバウンドREST要求の設定手順を見ていきましょう。

タブの作成     

各インバウンドREST APIはタブの下にグループ化され、ジョブ、レイアウト、カスタムプロセスなどの関連エンドポイントを整理できます。
タブを作成するには、次の手順を実行します。
  1. 以下の順に[設定]→[WEB SERVICES][Inbound][REST]を選択します。
  2. [新しいInbound REST]をクリックします。
  3. 次の項目を入力します。
    1. [名前]タブの論理名(例:ジョブ、レイアウト)を入力します。これにより、関連するAPIをまとめてグループ化できます。
    2. [ベースURI]このタブ内のAPIのベースパス(例:/jobs)を定義します。このプレフィックスは、このタブの下で作成されるすべてのAPIエンドポイントに含まれます。
    3. [認証方式]Qntrlは、選択された認証方式を使用して受信API要求を検証します。次のいずれかを選択できます。
      1. OAuth組織のOAuthスコープまたはグローバルトークンでAPIを保護します。
      2. APIキートークンベースの認証方式です。要求ヘッダーにAPIキーを追加します。APIキーの生成方法を確認する
    4. [説明]タブの概要、またはタブに含まれるAPIの目的について簡単な説明を追加します。
  4. [作成]をクリックします。

      


タブが作成されると、APIエンドポイントの詳細を定義する設定ウィンドウが開きます。

 

APIエンドポイントの設定     

開いている設定ウィンドウで、これが初めてのInbound Resourceの場合は、詳細を直接入力できます。後で追加するには、ページ右上の[新しいInbound Resource]をクリックし、APIを設定するために次の詳細を入力します。
  • [名前]:APIエンドポイントの名前を入力します。
  • [URL]:エンドポイントパス(例:/create)を定義します。これはタブのベースURIに追加されます。
  • [プレビュー]:ベースURIとエンドポイントパスに基づいて、完全なURLが自動生成されます。
    例:https://qntrl.com/webservice/668909960/jobs/create
  • [メソッド]:HTTPメソッド(GET、POST、PUT、DELETE、OPTIONS、PATCH)を選択します。
  • [リソースの種類]:このAPIが呼び出されたときに実行するハンドラーの種類を選択します。
    • Function:Functionスクリプトを使用して要求を処理します。
      • 既存のRESTタイプのFunctionを選択するか、新しく作成します。
      • 新しいFunctionを作成する場合は、エディターにスクリプトを記述します。Functionは生成された名前で[Functions]タブに自動的に追加されます(後で名前を変更できます)。
      • Functionスクリプト内で、受信した要求の処理方法と返す応答を定義できます。
    • Circuit:APIが呼び出されたときに、事前定義済みのCircuitを実行します。Circuitでは、ファイル処理や応答設定(成功/エラーメッセージなど)はサポートされていません。
  • [リソース]:エンドポイントに関連付ける特定のFunctionまたはCircuitを選択します。
      

 

関数とCircuitにおけるリソース実行の仕組み     

関数リソース

リソースとして関数を選択した場合。
  • スクリプトから、要求パラメーター、ヘッダー、本文の内容、ファイルのアップロードにアクセスして処理できます。
  • メッセージやHTTPステータスコードを含む、カスタムの成功レスポンスやエラーレスポンスを定義して返すことができます。
  • 要求で送信されたファイルは、バイナリ入力として処理できます。
  • 入力検証、動的処理、データ操作が必要な用途に適しています。
 

Circuitリソース

リソースとしてCircuitを選択した場合。
  • APIにより、事前定義済みのQntrl Circuitが実行されます。
  • Circuitは要求パラメーターを入力データとして受け取りますが、要求を操作したり検証を実行したりすることはできません。
  • ファイル処理には対応していません。
  • レスポンスのカスタマイズ(例:HTTPステータスコード、カスタムメッセージ)はできません。

Circuitでの要求データへのアクセス  

Circuit内で受信REST要求データにアクセスするためのパス

  • クエリーパラメーター→$.query_parameter

  • ヘッダー→$.header

  • 要求本文→$.body

  • 要求URL→$.url

  • HTTPメソッド→$.method

これらの値は、Circuit内での処理、判断、または状態間でのデータ受け渡しに使用できます。


対応関数  

Qntrlでは、受信REST APIの関数リソースを作成するために、次の言語に対応しています。

  • JavaScript(ネイティブまたはCodexエンジン)

  • その他のクラウド関数:Python、Java、Node.jsに対応しています。

例(JavaScript):入力パラメーターの読み取りとレスポンスの書き込み
/**
 * @param {ScriptedRestApiRequest} req
 * @param {ScriptedRestApiResponse} res
 */
function execute(req, res) {
try {
var requestHeaders = req.getRequestHeaders();
var requestParams = req.getRequestParams();
var uri = req.getUri();
console.log('要求 Headers ' + JSON.stringify(requestHeaders));
console.log('要求 Parameters ' + JSON.stringify(requestParams));
console.log('URI ' + uri);
// --- Read Body ---
var requestBody = '';
var readAsStream = true;
if (readAsStream)
{
let chunk;
let inputStream = req.getInputStream();
while( (chunk = inputStream.read()) != null){
 
let chunkStr = String.fromCharCode.apply(null, chunk);
requestBody += chunkStr;
}
} else {
requestBody = req.getRequestBody();
}
// --- Prepare REST response ---
var responseData = {
status: 'success',
message: 'REST 要求 processed successfully using codex engine.'
};
// --- Set headers ---
        
let responseHeader = { '要求-id': '1718181881001' };
res.setResponseHeaders(responseHeader);
// --- Send Response ---
res.setStatus(200);
res.setContentType('application/json');
res.getOutputStream().write(JSON.stringify(responseData));
}
catch (e) {
res.setStatus(500);
res.setContentType('application/json');
res.getOutputStream().write(JSON.stringify({
status: 'error',
message: e.message + ''
}));
}
}


例(Java):入力パラメーターの読み取りとレスポンスの書き込み

インポート com.zoho.cloud.function.Context;
インポート com.zoho.cloud.function.basic.*;
インポート org.json.JSONObject;
 
public class SampleRESTFunction implements ZCFunction {
public void runner(Context context, BasicIO basicIO) throws Exception {
// Read input parameters
String queryParameter = basicIO.getParameter('query_parameter').toString();
String header = basicIO.getParameter('header').toString();
String body = basicIO.getParameter('body').toString();
String url = basicIO.getParameter('url').toString();
 
// Write response
JSONObject response = new JSONObject();
JSONObject responseHeader = new JSONObject();
responseHeader.put('request_id', 'REQ-20251105-XYZ123');
responseHeader.put('timestamp', '2025-11-05T12:45:30Z');
responseHeader.put('content_type', 'application/json');
response.put('response_header', responseHeader);
response.put('status_code', 202);
response.put('body', 'Inbound REST 要求 processed sucessfully.');
basicIO.write(response.toString());
}
}
(他の言語でも同様の構文を使用してください。)

要求コンポーネントの設定     

このエンドポイントへの要求に対して、入力と検証を定義できます。
  • 要求パラメーター:クエリー値またはパス値として渡すパラメーターを定義します。
    • [パラメーター名]:入力パラメーターの名前です。
    • [データ型]:データ型(例:文字列、数値)を選択します。
    • [許可する正規表現]:パラメーター値の制限を設定します。
    • [最小長]:入力の最小長を定義します。
    • [最大長]:入力の最大長を定義します。
    • [初期値]:入力が指定されていない場合に使用する代替値です。
    • [必須]:パラメーターを必須にするかどうかを指定します。必須パラメーターが指定されていない場合、エラーが発生します。
      
  • [要求ヘッダー]:追加の検証用にカスタムヘッダーを定義します。
    • 設定オプションは要求パラメーターと同じです。
  • [要求本文]:APIに最適な本文形式を選択します。
    • [なし]:要求本文はありません。
    • [Raw]:自由形式のデータ(例:JSON、XML)。
      • 最小/最大長と必須の検証のみをサポートしています。
    • [x-www-form-urlencoded]:キーと値の本文形式(本文内のパラメーターのような形式)。
    • [ファイル]:バイナリファイルのアップロードが可能ですリソースの種類がFunctionの場合にのみサポートされます。)
  • [ポリシーの選択]:レート制限ポリシーを使用して、許可する要求数を制御します。
    • [レート制限ポリシーの選択]:既存のポリシーを選択するか、[新しいポリシーを追加]をクリックします。
    • 新しいポリシーを追加するには:
      • [ポリシー名]:ポリシーのラベル。
      • [要求上限]許可される要求の最大数。
      • [分]:レート制限の時間枠(例:1分あたり100件)。
      • [IP単位]:
        • チェックあり:制限はIPアドレスごとに適用されます。
        • チェックなし:制限は全体に適用されます。
      • [エラーコード]:制限を超過した場合に返されるコード。
      • [メッセージ]定義した制限に達した場合にユーザーへ送信するエラーメッセージを定義します。
      • [保存]をクリックします。新しいポリシーが作成されます。

      

    

保存と公開     

APIエンドポイントと要求コンポーネントを設定したら、
  • [保存]をクリックしてエンドポイントを作成します。
  • 左側の[リソース]配下に表示され、いつでも編集または削除できます。
  • これで、エンドポイントはAPI要求を受信し、関連付けられたFunctionまたはCircuitを実行できる状態になります。
      

Notes
  • 要求パラメーター、ヘッダー、本文のいずれかの検証に失敗した場合、Qntrlは要求を拒否します。

  • 警告やエラーを処理して返せるのは、リソースとしてFunctionを使用している場合のみです。

  • Circuitでは、詳細な入出力制御なしで基本的な自動化トリガーのみを利用できます。


QntrlへのREST API要求の送信方法 

QntrlにREST API要求を送信するには、次の形式を使用します。

メソッド:任意のHTTPメソッド(例:GETPOST

URLhttps://core.qntrl.com/webservice/<org_id>/<base_URI>/<source_endpoint>

認証(要求ヘッダーに追加する必要があります):

  1. OAuthトークン
    1. ヘッダー形式:Authorization: Zoho-oauthtoken <access_token>
    2. 必要なOAuthスコープ:
      1. ws_restinbound.UPDATE
      2. ws_soapinbound.UPDATE
  1. APIキー  
    1. ヘッダー形式:Authorization: Bearer <api_key>

その他の操作   

タブの編集または削除

  1. 設定→[WEB SERVICES][Inbound]の順に移動し、[REST]を選択します。

  2. タブ名の横にあるアクションメニュー(三点リーダー)にカーソルを合わせます。

  3. 次のいずれかを選択します。

    • [編集]–カテゴリーの名前や詳細を更新します。

    • [削除]–カテゴリー全体と、それに関連付けられているAPIを削除します。


タブの有効化または無効化

  1. 設定→[WEB SERVICES][Inbound]の順に移動し、[REST]を選択します。

  2. カテゴリーの[ステータス]セクションで、切り替えスイッチを使用してタブを有効または無効にします。

    • 有効化されたカテゴリーはAPIリクエストを受け付けます。

    • 無効化されたカテゴリーはAPI呼び出しの受け付けを停止します。



次へ:
    • Related Articles

    • 受信SOAP Webサービスの設定

      お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。 早期アクセス この機能は、すべてのユーザーに対して有効になっているわけではありません。お試しになりたい場合は、メールでサポートチームに早期アクセスをお申し込みください。 インバウンドSOAP ...
    • 送信SOAP Webサービスの設定

      お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。 早期アクセス この機能は、すべてのユーザーに対して有効になっているわけではありません。試用を希望する場合は、サポートチームにメールで早期アクセスについてお問い合わせください。 ...
    • 送信REST Webサービスの設定

      お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。 早期アクセス この機能はすべてのユーザーに対して有効になっているわけではありません。お試しになりたい場合は、サポートチームにメールで早期アクセスをお申し込みください。 アウトバウンドREST ...
    • 外部CRM経由のカード作成の自動化

      お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。 シナリオ ある会社では、Zoho ...
    • Webサービスの概要

      お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。 早期アクセス Webサービスはすべてのユーザーに対して有効化されていません。早期アクセスをご希望の場合は、サポートチームにメールでお問い合わせください。 ...