OpenAPI ビルダーでのビジュアル・エディターの使用

IBM watsonx Orchestrateでは、ビジュアル・エディターで OpenAPI 仕様 (OAS) を編集し、AI の提案で拡張することができます。 この資料では、以下について説明

  • エディター内でのナビゲート
  • Visual + AI ビューでの OAS の編集
  • AI の提案の取得
  • エディターでのさまざまなブロックの定義

OAS は本質的にネストされており、柔軟な (場合によっては高い) ネストの深さを持っています。 それを視覚化する自然な方法は、ネストされたブロックを使うことだ。

OpenAPI 仕様ビルダーの Visual + AI ビューは以下のとおりです。

  • 仕様をブロックとしてキャンバスに表示します
  • キャンバスにドラッグするブロックのパレットがある
  • 仕様を JSON で表示するテキスト・ビューを提供します
  • 構成のフライアウトでブロックをさらに構成できます。

キャンバスのスクロール

キャンバスには、OpenAPIの仕様がブロックベースで表示されている。 各エンドポイントには HTTPとパスを持つブロックがあり、パラメータとレスポンス用のネストされたブロックがあります。 ブロックについて詳しくは、 ブロックを参照してください。

キャンバスのスクロール
図1:ブロックベースのOpenAPI仕様によるキャンバスのスクロール。

パレットを開く

パレットには、 OpenAPI 仕様に追加できるすべてのブロックが、API エンドポイント、タイプ、値、参照、コネクターなどのカテゴリーにグループ化されて表示されます。

パレットを開く
図2:すべてのブロックが表示されたパレットを開く。

テキスト・ビューを開く

キャンバス上のブロック・ベースのビューは、 OpenAPI 仕様のテキスト・ベースの JSON ビューに対応しています。 開始ブロックのテキスト・ビューには OpenAPI 仕様全体が表示され、その他のブロックのテキスト・ビューにはそのブロックの仕様の抜粋のみが表示されます。

  • 鉛筆アイコンをクリックして、ブロックのテキスト・ビューを開きます。 再クリックしてテキスト・ビューを閉じます。

テキスト・ビューを開く
図3:テキストビューを開く。

ブロック構成のフライアウトを開く

構成を開くには、以下のようにします。

  • ブロックの歯車アイコンをクリックします。 アイコンを再クリックして、構成の吹き出しを閉じます。

Visual + AI ビューでの OAS の編集

Visual + AI フォーマットでは、以下の 5 種類のブロックを使用して OpenAPI 仕様を視覚化および編集できます。

  • エンドポイント・ブロック
  • タイプ・ブロック
  • 値ブロック
  • 参照ブロック
  • コネクター・ブロック

詳しくは、 ブロックを参照してください。

構成フライアウトでは、最上位ブロックまたはブロックのいずれかを作成できます。

最上位ブロックの作成

トップレベル・エディターにはトップレベル・パレットがあります。 構成内にブロックを作成するには、以下のようにします。

  • パレットからドラッグして、最上位のキャンバスにドロップします。

最上位ブロックの作成
図4:トップレベル・ブロックの作成。

構成フライアウトでのブロックの作成

構成フライアウトには、独自のパレットが組み込まれています。 構成内にブロックを作成するには、以下のようにします。

  • フライアウトのパレットからドラッグし、フライアウトのキャンバスにドロップします。

構成ブロックの作成
図5:構成フライアウトでブロックを作成する。

ブロックの更新

ブロックを更新するには

  • そのテキスト・フィールドの 1 つを選択してから、新しい値を入力します。

ブロックの削除

ブロックを削除するには、以下のいずれかの方法を使用します。

  • ブロックを選択してから、キーボードの Delete キーを押します。
  • ブロックを右クリックし、メニューから 「削除」 を選択します。

ブロックの削除
図6:ブロックの削除

編集の削除

以下のいずれかの方法で、編集を元に戻すことができます (AI 提案からの自動編集でも手動編集でも)。

  • キーボード・ショートカット Ctrl-z を押します。
  • 背景を右クリックし、メニューから 「元に戻す」 を選択します。

編集の削除
図7:編集を削除する。

JSON テキストの更新

テキスト JSON ビューからブロックを作成、更新、または削除できます。

  • 更新を行い、 「変更の適用」をクリックします。

「変更の適用」 ボタンは、JSON がエラー・フリーの場合にのみ有効になります。 エラーが発生した場合は、エラーを解決して変更を適用するか、編集アイコン編集をクリックしてテキストの変更を破棄し、テキストフライアウトを閉じることができます。

JSON テキストの更新
図8:JSONテキストの更新。

AI の提案の取得

OpenAPI 仕様には、説明や例など、スキルとして簡単に取り込めるようにする情報を含めることができます。 この情報の一部が欠落しているか、不適切である場合があります。 AI を使用して、欠落している情報を入力するための提案を生成できます。

特定のブロックに関する AI の提案を生成するには、以下のようにします。

  • ブロック上の強化アイコン強化をクリックします。

仕様全体に対する AI の提案を生成するには、以下のようにします。

  • AI Enhance 強化をクリックします。

OpenAPI ビルダーは、現在のコンテキストの関連する部分を使用して生成 AI を作成します。例えば、パラメーターの名前と説明を使用して、そのサンプルを生成します。 提案の生成には数秒かかる場合があります。 生成された提案は、ブロックの構成フライアウトに表示されます。 生成された提案の品質は異なる場合があります。 必要に応じて、変更を元に戻すことができます。

AI の提案の取得
図9:AIの提案を受ける

ブロック

OpenAPI ビルダーは、以下の 5 種類のブロックを使用して OpenAPI 仕様を視覚化し、編集できるようにします。

  • エンドポイント・ブロック
  • タイプ・ブロック
  • 値ブロック
  • 参照ブロック
  • コネクター・ブロック

エンドポイント・ブロック

エンドポイント・ブロックは、操作メソッドとパスを構成することによって API 操作を指定します。 上部にノッチ、下部にバンプを付けた形をしている。 エンドポイント・ブロックは、開始ブロックまたは別のエンドポイント・ブロックの下部にスナップすることができます。

エンドポイント・ブロックには、パラメーター、応答、および (特定のメソッドの場合) 要求本体のタイプ・ブロックをスナップするための C 字型の穴があります。 パラメータとして使用されるタイプブロックは、位置、名前、および「required?」を取得します フラグ。 レスポンスとして使用されるタイプブロックは、 HTTP ステータスコードを取得します。 エンドポイントは、複数のパラメーターまたは応答を持つことができますが、最大で 1 つの要求本体を持つことができます。

エンドポイント・ブロック
図10:エンドポイント・ブロック。

タイプ・ブロック

タイプ・ブロックは JSON スキーマを指定します。 上部にはノッチを配置し、複数のスキーマが予期されるコンテキストで使用する場合は下部にバンプを配置します。 タイプ・ブロックは、エンドポイント・ブロック、配列タイプ・ブロック、オブジェクト・タイプ・ブロック、および特定のコネクター・ブロックの C 字型のホールにスナップすることができます。 タイプ・ブロックは、定義ブロックの下部にスナップすることもできます。

  • 列挙型のタイプ。 値の固定セットがリストされます。 例: ["red", "green", "blue"]。 列挙型ブロックには右側にメスのジグソー・コネクターがあり、そこで値ブロックをスナップすることができます。 値の数を変更するには、「+」/「-」を使用します。

列挙型
図11:列挙型ブロック。

以下の JSON スクリプトは、 enum タイプの例を示しています。

{
  "Color": {
    "type": "string",
    "enum": [
      "Red",
      "Green",
      "Blue"
    ]
  }
}
  • テキストのストリングのタイプ。 例: Hello world!

ストリング・タイプ
図12:文字列型ブロック。

以下の JSON スクリプトは、 string タイプの例を示しています。

{
  "node_id": {
    "type": "string",
    "example": "MDEyOk9yZ2FuaXphdGlvbjE=",
    "x-ibm-grounded-description": false
  }
}
  • 整数のタイプ。 整数 (例: 3420-2048)。

整数タイプ
図13:整数型ブロック。

以下の JSON スクリプトは、 Integer タイプの例を示しています。

{
  "id": {
    "type": "integer",
    "example": 1,
    "x-ibm-grounded-description": false
  }
}
  • 数値を入力します。 浮動小数点または整数 (例: 32.990-123.456)。

「番号タイプ (Number Type)」
図14:ナンバー・タイプ・ブロック。

以下の JSON スクリプトは、 Number タイプの例を示しています。

{
  "Value": {
    "type": "number",
    "example": 1.5,
    "x-ibm-grounded-description": false
  }
}
  • boolean の値を入力します。 例: true または false

ブール・タイプ
図15:ブール型ブロック。

以下の JSON スクリプトは、 Boolean タイプの例を示しています。

{
  "site_admin": {
    "type": "boolean",
    "x-ibm-grounded-description": false
  }
}
  • 項目の配列のタイプ。 例: [1,2,3]。 「type: array」ブロック自体は C 字型であるため、許可される項目のタイプを指定するために別のタイプ・ブロックをスナップインすることができます。

配列タイプ
図16:アレイ型ブロック。

以下の JSON スクリプトは、 Array タイプの例を示しています。

{
  "events": {
    "type": "array",
    "items": {
      "type": "string"
    },
    "example": [
      "deployment"
    ],
    "x-ibm-grounded-description": false
  }
}
  • オブジェクトのタイプ。ストリング・キーから JSON 値へのマッピングです。 「type: object」ブロック自体は C 字型であるため、他のタイプのブロックをプロパティー用にスナップすることができます。 プロパティーとして「type: object」にネストされたタイプ・ブロックは、キー (通常は「Name」) と「required?」を取得します。 フラグ。

オブジェクト・タイプ
図17:オブジェクト・タイプ・ブロック

以下の JSON スクリプトは、 Object タイプの例を示しています。

{
  "permissions": {
    "type": "object",
    "example": {
      "deployments": "write",
      "metadata": "read",
      "pull_requests": "read",
      "statuses": "read"
    }
  }
}
  • NULL タイプでは、NULL 値のみが許可されます。

NULL 型
図18:Null型ブロック。

以下の JSON スクリプトは、 Null タイプの例を示しています。

{
  "type": [
    "string",
    "null"
  ],
  "maxLength": 255
}

値ブロック

値ブロックは JSON 値を指定します。 左側に男性用ジグソー・コネクターが付いた形をしています。 値ブロックをメスのジグソー・コネクターにスナップして、他のブロックの構成でデフォルト値またはサンプル値を指定することができます。 値ブロックは、配列値ブロック、オブジェクト値ブロック、または列挙ブロックの女性用ジグソー・コネクターにスナップすることもできます。

  • テキストのストリング。 例: Hello, world!

ストリング値
図19:値文字列ブロック。

  • 整数。 例: 3420-2048

数値
図20:数値ブロック。

  • 浮動小数点数または整数です。 例: 32.990-123.456

浮動小数点
図 21:値浮動小数点ブロック。

  • この値は、チェック・ボックスが選択されている場合は true、それ以外の場合は false です。 例: true

ブール値
図22:値ブーリアンブロック。

  • 値の配列 (配列型のインスタンス) です。 配列バリュー・ブロック自体には右側にメスのジグソー・コネクターがあるため、他のバリュー・ブロックを項目用にスナップすることができます。 項目数を変更するには、「+」/「-」を使用します。

:NONE.
図23:値配列ブロック。

  • ストリング・キーから値へのマッピング (オブジェクト・タイプのインスタンス)。 オブジェクト・バリュー・ブロック自体には右側にメスのジグソー・コネクターがあるため、プロパティーのために他の値ブロックをスナップすることができます。 プロパティーとしてオブジェクト値にネストされた値ブロックは、ストリング・キー (「Name」) を取得します。 プロパティーの数を変更するには、「+」/「-」を使用します。

値オブジェクト
図24:値オブジェクト・ブロック

  • ヌル値 (ヌル・タイプのインスタンス)。

値が NULL です
図25:バリュー・ヌル・ブロック。

参照ブロック

参照ブロックは、エディターがタブに表示するスキーマ定義を参照します。 上部にはノッチを配置し、複数のスキーマが予期されるコンテキストで使用する場合は下部にバンプを配置します。 参照ブロックは、それが参照する定義が予期される場所であればどこでも使用することができます。 言い換えると、タイプ・ブロックを指す参照は、任意のプレース・タイプ・ブロックにスナップすることができます。 参照ブロックには、参照されているスキーマ定義の場所を識別する URI を持つストリングが含まれています。

参照
図26:リファレンス・ブロック。

コネクター・ブロック

コネクター・ブロックは、新しいタイプ・ブロックのように機能するスキーマに他のブロックを構成します。 上部にはノッチを配置し、複数のスキーマが予期されるコンテキストで使用する場合は下部にバンプを配置します。 コネクター・ブロックは、タイプ・ブロックを使用できる場所であればどこでも使用できます。

  • anyOf,に対してバリデーションを行うには、少なくとも1つのスキーマに対してデータが有効でなければなりません。 これは、一部のプログラミング言語では共用体タイプに似ています。 anyOf ブロック自体は C 字型であるため、代替のために他のスキーマをスナップすることができます。

エニオブ
図 27:Anyofコネクタブロック。

  • allOf,に対してバリデーションを行うには、データはすべてのスキーマに対して有効でなければなりません。 これは、一部のプログラミング言語では交点タイプに似ています。 allOf ブロック自体は C 字型であるため、他のスキーマを結合のためにスナップすることができます。

オールオブ
図 28:コネクタブロックのすべて。

  • oneOf,に対してバリデーションを行うには、データがちょうど1つのスキーマに対して有効でなければなりません。 oneOf ブロック自体は C 字型であるため、代替のために他のスキーマをスナップすることができます。

オネオア
図29:コネクタブロックの一つ。

  • 検証するしないに関わらず、データはスキーマに対して無効でなければなりません。 ブロック自体はC字型なので、別の図形をはめ込むことができます。

以外
図 30:コネクタブロックではない。

  • 空のスキーマ({})は、有効なJSON値をすべて受け入れます。 これは、一部のプログラミング言語における「Any」タイプに似ています。 真のブール値と混同しないこと。真のブール値はスキーマではない。 否定された空のスキーマ({"not":{}})は、値を一切受け付けません。 偽のブール値と混同しないように。これはスキーマではない。

スキーマ
図31:スキーマ・コネクタ・ブロック

  • if, then, else ブロックを使用すると、別のスキーマの結果に基づいてコンポーネント・スキーマを適用できます。 条件、then 節、else 節の C 字型の穴があり、それぞれが他のスキーマ・ブロックを 1 つしか保持できません。

IfThenElse
図 32:If-then-elseコネクタブロック。

次のタスク

必要な変更を行った後、以下を行うことができます。