GraphQL スキーマの作成

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:7分
  • GraphQL スキーマを作成して、GraphQL クエリでデータを使用できるようにします。

    始める前に

    必要なロール:graphql_schema_admin または admin

    手順

    1. 移動先 すべて > システム Web サービス > GraphQL > GraphQL API.
    2. [新規] を選択します。
    3. これらのフィールドに入力します。
      フィールド 説明
      名前 スキーマの名前。
      スキーマ名前空間 アプリケーションの名前内で一意である必要があります。
      アプリケーション スキーマが含まれている読み取り専用アプリケーション。
      アプリケーション名前空間 読み取り専用。スキー マ名前空間 と連携して、同じ名前のスキーマとの競合を回避します。
      有効 GraphQL スキーマをオンまたはオフにするオプション。
      スキーマ GraphQL SDL 形式に準拠したスキーマ定義。有効な GraphQL 構文である必要があります。そうでない場合は、構文の問題を示すエラーメッセージが保存に表示されます。
      注:
      次の GraphQL 機能はサポートされていません。
      • サブスクリプション操作
      • カスタムスカラータイプ

      スキーマで次のディレクティブを使用できます。

      @source: GraphQL フィールドを親オブジェクトのプロパティ値にマッピングします。フィールドに個別のリゾルバースクリプトがある場合、システムは親オブジェクトの代わりにそのフィールドが解決されるレコードを使用します。

      この例では、スキーマでインシデントオブジェクトタイプを定義し、リゾルバースクリプトを使用して、そのタイプをインシデントテーブルの GlideRecord にマッピングします。@source ディレクティブを使用して、インシデントタイプ内のフィールドをインシデント GlideRecord のまたはdisplay_valueにマッピングします。

      type Incident {
          id: String @source(value: "sys_id.value")
          active: Boolean @source(value: "active.display_value")
          state: String @source(value: "state.display_value")    
          priority: String @source(value: "priority.display_value")
          severity: String
          description: DisplayableString
          resolvedBy: User @source(value: "resolved_by.value")
          openedBy: User @source(value: "opened_by.value")
          child_incidents: String
          opened_at: String
          resolved_at: String
          closed_at: String
          work_notes: String    
          comments: String @source(value: "comments.display_value")
          parent_incident: String
      }
    4. [ セキュリティ ] セクションで、フィールドに入力します。
      フィールド 説明
      承認が必要 スキーマへのアクセスに認証を要求するには、このオプションを選択します。このオプションをオフにすると、スキーマが公開されます。
      ACL 承認が必要 API 全体の ACL 認証を要求するには、このオプションを選択します。[ ACL] フィールドで、GraphQL タイプの ACL を選択します。

      特定のパスに対してのみ ACL 認証を使用するには、このオプションをオフのままにして、[ パス ACL 深度] フィールドで ACL を評価するレベルを指定します。

      SNC 内部が必要 スキーマに SNC 内部ロールが必要な場合は、このオプションを選択します。このオプションは、明示的なロールプラグイン (com.glide.explicit_roles) が有効になっている場合にのみ表示されます。
      パス ACL の深さ ACL を適用する GraphQL API のレベルを指定します。パスの深さを 3 以下に設定すると、使用するリソースが少なくなり、クエリ応答を返すのに役立ちます。

      パスに使用する ACL を指定するには、GraphQL タイプの ACL を作成し、スキーマ名前空間で始まる正確な API パスを [ 名前] フィールドに追加する必要があります。例: /<planet>/<findAll>/<name>。ワイルドカードはサポートされていません。詳細については、「Configure an ACL rule」を参照してください。

      注:
      [ ACL] フィールドは API 全体に適用され、特定のパスに適用される ACL とは無関係です。
      ACL 受信クエリーをチェックする GraphQL タイプの ACL を選択します。選択した ACL は API 全体に適用されます。このオプションは、[ ACL 承認が必要] が選択されている場合にのみ表示されます。
      注:
      API は、スキーマへのアクセス権がないユーザーや、API がアクセスに認証を必要とするときに認証されていないユーザーにクリアエラーメッセージを返します。
    5. フォームを保存します。
    6. オプション: リゾルバースクリプトを作成して、コンポーネントがフィールドをクエリしたときにスキーマが返す値を定義します。
      フィールドのリゾルバーを定義しない場合、クエリは親オブジェクトタイプから一致するフィールド値を返します。たとえば、スキーマに作業メモフィールドを含むインシデントオブジェクトタイプがあるとします。インシデントオブジェクトタイプには、インシデントテーブルの GlideRecord にマップするリゾルバーがあります。作業メモフィールドのリゾルバーマッピングを作成しない場合、親オブジェクトのデータソース (インシデントテーブルの GlideRecord) で作業メモフィールドが検索され、関連する値が割り当てられます。
      1. [GraphQL スクリプト化リゾルバー (GraphQL Scripted Resolvers)] タブを選択し、[ 新規] を選択します。
      2. フォームに入力します。
        フィールド 説明
        名前 リゾルバーの名前。
        スキーマ 読み取り専用スキーマ名前空間。
        アプリケーション スキーマが含まれている読み取り専用アプリケーション。
        スクリプト フィールドがクエリされたときに返される値を定義します。グローバル env オブジェクトで利用可能な関数:
        • getArguments():前のフィールドの引数を返します。
        • getSource():親オブジェクトを返します。

        このスクリプトは GlideRecord にアクセスできます。

        この例では、関連付けられたフィールドがクエリされたときにユーザー テーブル からレコードを返します。

        (function process(/*ResolverEnvironment*/ env) {
        
            var userid = env.getArguments().id != null ? env.getArguments().id : env.getSource();
            var now_GR = new GlideRecord('sys_user');
            gr.addQuery('sys_id', userid);
            gr.queryO;
            return gr;
        
        })(env);
      3. [送信] を選択します。
    7. オプション: スキーマの型リゾルバーを定義して、インターフェイスとユニオンを具象型に解決します。
      1. [GraphQL スクリプト化タイプリゾルバー] タブを選択し、[ 新規] を選択します。
      2. フォームに入力します。
        フィールド 説明
        スキーマ 読み取り専用スキーマ名前空間。
        タイプ スキーマで定義されているインターフェイスまたは共用体タイプ。
        アプリケーション スキーマが含まれている読み取り専用アプリケーション。
        スクリプト ユニオンタイプとインターフェイスタイプに対して返される値を定義します。グローバル env オブジェクトで利用可能な関数:
        • getArguments():前のフィールドの引数を返します。
        • getObject(): 親オブジェクトを返します。
        • getTypeName():インターフェイスまたは Union タイプの名前を返します。

        このスクリプトは GlideRecord にアクセスできます。

      3. [送信] を選択します。
    8. オプション: リゾルバーレコードとタイプリゾルバーレコードをスキーマ内のフィールドにマッピングします。
      このマッピングは、コンポーネントがフィールドをクエリしたときに返される値をシステムに指示します。
      1. [GraphQL スクリプト化リゾルバーマッピング (GraphQL Scripted Resolver Mappings)] タブを選択し、[ 新規] を選択します。
      2. フォームに入力します。
        フィールド 説明
        パス マッピングするスキーマ内のフィールドへのパス。
        リゾルバー フィールドによって返されるデータの定義に使用するリゾルバー。
        アプリケーション スキーマが含まれている読み取り専用アプリケーション。
        スキーマ 読み取り専用スキーマ名前空間。
      3. [送信] を選択します。