スクリプト済み REST API - ServiceNow Fluent
スクリプト済み REST API には、スクリプト済み REST サービス [sys_ws_definition] のエンドポイント、クエリパラメーター、およびヘッダーを定義するオブジェクトが含まれます。
RestApi オブジェクト
スクリプト済み REST API [sys_ws_definition] を作成して、Web サービスエンドポイントを定義します。
| 名前 | タイプ | 説明 |
|---|---|---|
| $id | 文字列または数値 | 必須。次の形式で提供されるメタデータオブジェクトの一意の ID。ここで、<value> は文字列または数値です。アプリケーションをビルドすると、この ID は一意の sys_ID にハッシュされます。 |
| name | 文字列 | 必須。API ドキュメントで使用される API の名前。 |
| service_id | 文字列 | 必須。URI パスでこの API を区別するために使用される API 識別子。API 名前空間内で一意である必要があります。 |
| active | ブーリアン | API が要求を処理できるかどうかを示すフラグ。 有効な値:
デフォルト:true |
| short_description | 文字列 | API ドキュメントで使用される API の簡単な説明。 |
| consumes | 文字列 | API のリソースが消費できるメディアタイプのリスト。 デフォルト:application/json、application/xml、text/xml |
| doc_link | 文字列 | API に関する静的ドキュメントにリンクする URL。 |
| enforce_acl | アレイ | リソース [sys_security_acl] へのアクセス時に適用する ACL オブジェクトの変数識別子または ACL の sys_ids のリスト。詳細については、「アクセス制御リスト API - ServiceNow Fluent」を参照してください。 ACL を適用しない場合は、このプロパティを空のアレイ ( デフォルト:スクリプト済み REST 外部デフォルト |
| produces | 文字列 | API のリソースが生成できるメディアタイプのリスト。 デフォルト:application/json、application/xml、text/xml |
| routes | アレイ | API のリソース [sys_ws_operation]。詳細については、「routes オブジェクト」を参照してください。 |
| policy | 文字列 | アプリケーションファイルをダウンロードまたはインストールするときに保護する方法に関するポリシー。 有効な値:
|
| versions | アレイ | API のバージョン [sys_ws_version] のリスト。詳細については、「versions オブジェクト」を参照してください。 バージョンを指定すると、API のさまざまなバージョンとそのステータス (アクティブ、デフォルトバージョン、廃止など) を管理できます。 |
import { RestApi } from '@servicenow/sdk/core'
import { process } from '../server/handler.js'
RestApi({
$id: Now.ID['rest1'],
name: 'customAPI',
service_id: 'custom_api',
consumes: 'application/json',
routes: [
{
$id: Now.ID['route1'],
path: '/home/{id}',
script: process,
parameters: [{ $id: Now.ID['param1'], name: 'n_param' }],
headers: [{ $id: Now.ID['header1'], name: 'n_token' }],
enforce_acl: [acl],
version: 1,
},
],
enforce_acl: [acl],
versions: [
{
$id: Now.ID['v1'],
version: 1,
},
],
})
import { Acl } from "@servicenow/sdk/core";
const acl = Acl({
name: 'My random ACL',
type: 'rest_endpoint',
script: `answer = (Math.random() > 0.5)`,
active: true,
admin_overrides: false,
operations: ['execute'],
})routes オブジェクト
スクリプト済み REST リソース [sys_ws_operation] を作成して、HTTP メソッドと処理スクリプトを定義し、親サービスからの設定を上書きします。
RestApi オブジェクト内の routes オブジェクトを使用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| $id | 文字列または数値 | 必須。次の形式で提供されるメタデータオブジェクトの一意の ID。ここで、<value> は文字列または数値です。アプリケーションをビルドすると、この ID は一意の sys_ID にハッシュされます。 |
| name | 文字列 | API ドキュメントで使用される API リソースの名前。 デフォルト:path プロパティの値 |
| script | スクリプト | 必須。script タグが前に付いた関数またはインラインスクリプト。カスタムスクリプトは、操作が要求を解析して応答する方法を定義します。関数には、JavaScript モジュールからエクスポートされて .now.ts ファイルにインポートされた関数、関数式、またはデフォルト関数の名前を使用します。JavaScript モジュールの詳細については、「JavaScript モジュールとサードパーティライブラリ」を参照してください。 インラインスクリプトは、 script タグを次の形式で使用します。
|
| active | ブーリアン | リソースが使用されるかどうかを示すフラグ。 有効な値:
デフォルト:true |
| path | 文字列 | ベース API パスに対するリソースの相対パス。相対 URI には、/abc/{id} などのパスパラメーターを含めることができます。デフォルト:/ |
| short_description | 文字列 | API ドキュメントで使用される、リソースの簡単な説明。 |
| consumes | 文字列 | リソースが消費できるメディアタイプのリスト。 このプロパティは、PUT、PATCH、または POST メソッドで上書きできます。 デフォルト:RestApi オブジェクトの consumes プロパティの値 |
| enforce_acl | アレイ | リソース [sys_security_acl] へのアクセス時に適用する ACL オブジェクトの変数識別子または ACL の sys_ids のリスト。詳細については、「アクセス制御リスト API - ServiceNow Fluent」を参照してください。 ACL を適用しない場合は、このプロパティを空のアレイ ( デフォルト:スクリプト済み REST 外部デフォルト |
| produces | 文字列 | リソースが生成できるメディアタイプのリスト。 デフォルト:RestApi オブジェクトの produces プロパティの値 |
| request_example | 文字列 | API ドキュメントで使用される、リソースの有効なサンプル要求の本文ペイロード。 |
| method | 文字列 | リソースが実装する HTTP メソッド。 有効な値:GET、POST、PUT、PATCH、DELETE デフォルト:GET |
| authorization | ブーリアン | リソースにアクセスするためにユーザーが認証される必要があるかどうかを示すフラグ。 有効な値:
デフォルト:true |
| 認証 | ブーリアン | リソースへのアクセス時に ACL を適用するかどうかを示すフラグ。 有効な値:
デフォルト:true |
| internalRole | ブーリアン | ルートに snc_internal ロールが必要かどうかを示すフラグ。 このプロパティは、明示的なロールプラグイン (com.glide.explicit_roles) が有効な場合のみサポートされます。 有効な値:
デフォルト:true |
| policy | 文字列 | アプリケーションファイルをダウンロードまたはインストールするときに保護する方法に関するポリシー。 有効な値:
|
| version | 番号 | API のバージョン。 versions プロパティが RestApi オブジェクトで使用されている場合、このプロパティは必須です。 このプロパティで指定されたバージョンは、/api/management/v1/table/{tableName} などのバージョンで URI を自動的に生成するために使用されます。バージョン番号は、URI がアクセスするエンドポイントのバージョンを識別します。バージョン番号を指定することで、既存の統合に影響を与えることなく変更をテストおよび展開できます。 |
routes: [
{
$id: Now.ID['route1'],
path: '/home/{id}',
script: process,
parameters: [{ $id: Now.ID['param1'], name: 'n_param' }],
headers: [{ $id: Now.ID['header1'], name: 'n_token' }],
enforce_acl: [acl],
version: 1,
},
],
パラメーターとヘッダーのオブジェクト
スクリプト済み REST API でルートのクエリパラメーター [sys_ws_query_parameter] とヘッダー [sys_ws_header] を作成します。クエリパラメーターは、要求ユーザーが要求 URI で渡すことができる値を制御します。ヘッダーは、API が受け入れ、応答できる内容を指定します。
routes オブジェクト内の parameters オブジェクトと headers オブジェクトを使用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| $id | 文字列または数値 | 必須。次の形式で提供されるメタデータオブジェクトの一意の ID。ここで、<value> は文字列または数値です。アプリケーションをビルドすると、この ID は一意の sys_ID にハッシュされます。 |
| name | 文字列 | 必須。API ドキュメントで使用されるパラメーターまたはヘッダーの名前。 |
| required | ブーリアン | パラメーターまたはヘッダーが必須かどうかを示すフラグ。 有効な値:
デフォルト値:false |
| example_value | 文字列 | API ドキュメントで使用される、パラメーターまたはヘッダーの有効な値の例。 |
| short_description | 文字列 | API ドキュメントで使用されるパラメーターまたはヘッダーの簡単な説明。 |
parameters: [{ $id: Now.ID['param1'], name: 'n_param' }],
headers: [{ $id: Now.ID['header1'], name: 'n_token' }],
versions オブジェクト
スクリプト済み REST API [sys_ws_version] のバージョンを作成して、Web サービスエンドポイントを定義します。
RestApi オブジェクト内の versions オブジェクトを使用します。
| 名前 | タイプ | 説明 |
|---|---|---|
| $id | 文字列または数値 | 必須。次の形式で提供されるメタデータオブジェクトの一意の ID。ここで、<value> は文字列または数値です。アプリケーションをビルドすると、この ID は一意の sys_ID にハッシュされます。 |
| version | 番号 | 必須。REST API のバージョン。 |
| active | ブーリアン | REST API のバージョンが要求を処理できるかどうかを示すフラグ。 有効な値:
デフォルト:true |
| deprecated | ブーリアン | REST API のバージョンが廃止されているかどうかを示すフラグ。廃止されたバージョンに属するリソースは要求を処理できますが、ドキュメントでは「廃止」として識別されます。 有効な値:
デフォルト値:false |
| short_description | 文字列 | API ドキュメントに表示される REST API のバージョンの簡単な説明。 |
| is_default | ブーリアン | REST API のバージョンがデフォルトバージョンかどうかを示すフラグ。クライアントは、バージョンニングされている URI パスまたはバージョニングされていない URI パスを使用して、デフォルトバージョンにアクセスできます。 有効な値:
デフォルト値:false |
versions: [
{
$id: Now.ID['v1'],
version: 1,
},
],