受信REST Webサービスの設定

受信REST Webサービスの設定

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

Alert

早期アクセス

この機能はすべてのユーザーに有効化されているわけではありません。お試しになりたい場合は、メールで早期アクセスについてサポートチームにお問い合わせください。

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

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

主な特長  

  • カスタムエンドポイント:ビジネスワークフローに固有のREST API URLを定義できます。例: https://<qntrl-domain>/webservice/<org_id>/<custom-endpoint>      
  • 安全なアクセス:OAuthおよびAPIキー認証に対応しています。
  • スマートロジック:カスタムスクリプト(Functions)または自動フロー(Circuits)をトリガーできます。
Info
ドメインをカスタマイズする場合は、Qntrlのホワイトラベリング機能を使用します。

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

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

モジュールの作成     

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

      


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

 

APIエンドポイントの設定     

開いた設定ウィンドウで、これが最初のインバウンドリソースの場合は詳細を直接入力できます。後で追加するには、ページ右上の[新しいインバウンドリソース]をクリックし、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を作成する場合は、エディターでスクリプトを作成します。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(Nativeまたは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('Request Headers ' + JSON.stringify(requestHeaders));
console.log('Request 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 Request processed successfully using codex engine.'
};
// --- Set headers ---
        
let responseHeader = { 'request-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):入力パラメーターの読み取りと応答の書き込み

import com.zoho.cloud.function.Context;
import com.zoho.cloud.function.basic.*;
import 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 request 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サービス][インバウンド][REST]を選択します。

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

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

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

    • [削除]:カテゴリー全体と関連APIを削除します。


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

  1. 次の順に設定→[WEBサービス][インバウンド][REST]を選択します。

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

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

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


インバウンドREST APIトラフィックの監視 

監視セクションでは、WebサービスへのAPIリクエスト、失敗、パフォーマンス指標を追跡できます。このセクションは、インバウンドRESTまたはインバウンドSOAPサービスがAPIリクエストを受信し始めると利用可能になります。
詳細については、インバウンドAPIトラフィックの監視を参照してください。



次の記事
    • Related Articles

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

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

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

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

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

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