Anypoint DataGraph CLI リファレンス

Anypoint Platform には、DataGraph 用のコマンドラインインターフェース (CLI) が用意されています。CLI は、対話型シェルと標準 CLI モードの両方をサポートしています。

DataGraph CLI を使用して、以下を管理します。

開始する前に

DataGraph API ソース

コマンド 説明

API ソースを追加する

API ソースを昇格する

API ソースを更新する

統合スキーマに対する API コールをスケーリングする

統合スキーマをダウンロードする

API ソースを削除する

API ソースを取得する

すべての API ソースをリストする

DataGraph に関する情報を返す

統合スキーマの API ソースを検証する

datagraph sources add

> datagraph sources add <g/a/v>

DataGraph では、​stable​ 状態の API バージョンのみがサポートされています。

このコマンドは、​<g/a/v>​ で指定された API ソースを追加します。ここで、​g​ はグループ ID、​a​ はアセット ID、​v​ は API ソースのバージョン ID です。グループ ID は省略可能です。グループ ID を指定しない場合、このコマンドは現在の組織 ID を使用します。

このコマンドでは、デフォルトの ​--help​、​-f/--fields​、​-o/--output​、​--verbose​ オプション以外に次のオプションも使用できます。

オプション 説明

--auth-none

API が公開の場合に使用します。

--auth-basic

基本認証ヘッダー、またはユーザー名とパスワードを渡して、API に対する認証を行う場合に使用します。

必須:

  • --credentials <username>:<password>

--auth-oauth

OAuth 2.0 の ​client_id​、​client_secret​、認証サーバーの値を渡して API に対する認証を行う場合に使用します。

必須:

  • --credentials <client_id>:<client_secret>

  • --server <authorization server URL>​ ​

    省略可能:

  • --scope <server>

--auth-pass-through

認証ヘッダーを渡して API に対する認証を行う場合に使用します。

必須:

  • --mapping: <comma-separated list of key-value pairs, for example, key1:value1,key2:value2>

--auth-headers

カスタムヘッダーパラメーターと値を渡して API に対する認証を行う場合に使用します。

ヘッダーで必須:

  • --custom-headers: <comma-separated list of header-value pairs, for example, header1:value1,header2:value2>

    Or (または)

  • --custom-headers-file: <location of the file containing header-value pairs, one per line>

--auth-query-params

クエリパラメーターと値を渡して API に対する認証を行う場合に使用します。

クエリパラメーターで必須:

  • --credentials <client_id:client_secret>

--url <url>

バックエンド API の URL を設定します。

--discover-url

現在の環境で実行されているインスタンスに基づいて、バックエンド API の URL を自動的に検出します。複数の API が実行されている場合、DataGraph は最初の URL を使用します。

--ca

API のトラストストアに追加する認証機関 (CA) ファイルのカンマ区切りリストを指定します (​file.ca,file2.ca​ など)。

--cert

相互トランスポートレイヤーセキュリティ (mTLS) に使用するクライアント証明書のファイル名を指定します (​cert.ca​ など)。

--key

mTLS に使用する非公開キーのファイル名を指定します (​key.pem​ など)。

--key-password

暗号化された非公開キーを復号化するパスワードを指定します。

--ignore-invalid-edits

API 仕様の拡張機能で行われた有効な編集を適用し、無効な編集を無視するために使用します。

コマンドラインで定義されたすべてのヘッダーとクエリパラメーター、およびすべてのヘッダーとクエリパラメーターファイルが追加されます。反復キーがある場合、コマンドラインで指定された値が優先されます。

コマンド例

datagraph sources add 18dc11ee-4a09-4aae-9c6c-4371a87eafa8/product-api/1.0.0/  --url http://test.com

出力例

{
  "apiVersion": "v1",
  "assetId": "product-api",
  "createDate": "2022-05-20T18:05:41",
  "endpoint": "http://test.com",
  "environmentId": "<envID>",
  "groupId": "<groupID>",
  "name": "Product API",
  "organizationId": "<orgID>",
  "securityScheme": "NO_AUTH",
  "sourceId": "deca7be1-c299-4441-bc7b-dba733e3a11f",
  "updateDate": "2022-05-20T18:05:41",
  "version": "1.0.0",
  "origin": "CLI"
}

datagraph sources promote

> datagraph sources promote <sourceId> <target-EnvID>

このコマンドは、API ソース ​<sourceId>​ を対象環境 ​<targetEnv>​ に昇格します。

このコマンドでは、デフォルトの ​--help​、​-f/--fields​、​-o/--output​、​--verbose​ オプション以外に次のオプションも使用できます。

オプション 説明

--auth-none

API が公開の場合に使用します。

--auth-basic

基本認証ヘッダー、またはユーザー名とパスワードを使用して、API に対する認証を行う場合に使用します。

必須:

  • --credentials <username>:<password>

--auth-oauth

OAuth 2.0 の ​client_id​、​client_secret​、認証サーバーの値を渡して API に対する認証を行う場合に使用します。

必須:

  • --client-credentials <client_id>:<client_secret>

  • --server <authorization server URL>​ ​

    省略可能:

  • --scope <server>

--auth-pass-through

認証ヘッダーを渡して API に対する認証を行う場合に使用します。

必須:

  • --mapping: <comma-separated list of key-value pairs, for example, key1:value1,key2:value2>

--auth-headers

カスタムヘッダーパラメーターと値を渡して API に対する認証を行う場合に使用します。

ヘッダーで必須:

  • --custom-headers: <comma-separated list of header-value pairs, for example, header1:value1,header2:value2>

    Or (または)

  • --custom-headers-file: <location of the file containing header header-value pairs, one per line>

--auth-query-params

クエリパラメーターと値を渡して API に対する認証を行う場合に使用します。

クエリパラメーターで必須:

  • --credentials <client_id:client_secret>

--url

バックエンド API の URL を設定します。

--discover-url

現在の環境で実行されているインスタンスに基づいて、バックエンド API の URL を自動的に検出します。複数の API が実行されている場合、DataGraph は最初の URL を使用します。

--ca

API のトラストストアに追加する CA ファイルのリストを指定します。

--cert

mTLS に使用するクライアント証明書を指定します。

--key

mTLS に使用する非公開キーを指定します。

--key-password

暗号化された非公開キーを復号化するパスワードを指定します。

--empty-ca

すべての CA 証明書を削除します。

--empty-mtls

クライアント証明書、非公開キー、非公開キーパスワード情報を削除します。

コマンドラインで定義されたすべてのヘッダーとクエリパラメーター、およびすべてのヘッダーとクエリパラメーターファイルが追加されます。反復キーがある場合、コマンドラインで指定された値が優先されます。

コマンド例

この例では、​promote​ コマンドの実行後に ​environmentId​ が変更されます。

datagraph sources promote d1d27987-939a-4b41-b3ef-411568ee5bdd e7e8da65-9cf1-569e-c9d2-brd2r0rc7rd6 --auth-none

出力例

{
  "apiVersion": "1.0",
  "assetId": "order-e2e",
  "createDate": "2022-05-27T18:56:03",
  "endpoint": "http://test.com",
  "environmentId": "e7e8da65-9cf1-569e-c9d2-brd2r0rc7rd6",
  "groupId": "<groupID>",
  "name": "Order E2E",
  "organizationId": "<orgID>",
  "securityScheme": "NO_AUTH",
  "sourceId": "1ff021b3-9296-43fd-9d64-2f9027c25740",
  "updateDate": "2022-05-27T18:56:03",
  "version": "1.0.0",
  "origin": "CLI"
}

datagraph sources update

> datagraph sources update <sourceId>

DataGraph では、​stable​ 状態の API バージョンのみがサポートされています。​update​ コマンドは、API ソースのパッチおよびマイナーバージョンのみを更新します。

このコマンドは、API ソース ​<sourceId>​ のバージョンを更新します。

このコマンドでは、デフォルトの ​--help​、​-f/--fields​、​-o/--output​、​--verbose​ オプション以外に次のオプションも使用できます。

オプション 説明

--auth-none

API が公開の場合に使用します。

--auth-basic

基本認証ヘッダー、またはユーザー名とパスワードの両方を渡して、API に対する認証を行う場合に使用します。

必須:

  • --credentials <username>:<password>

--auth-oauth

OAuth 2.0 の ​client_id​、​client_secret​、認証サーバーの値を渡して API に対する認証を行う場合に使用します。

必須:

  • --credentials <client_id>:<client_secret>

  • --server <authorization server URL>​ ​

    省略可能:

  • --scope <server>

--auth-pass-through

認証ヘッダーを渡して API に対する認証を行う場合に使用します。

必須:

  • --mapping: <comma-separated list of key-value pairs, for example, key1:value1,key2:value2>

--auth-headers

カスタムヘッダーパラメーターと値を渡して API に対する認証を行う場合に使用します。

ヘッダーで必須:

  • --custom-headers: <comma-separated list of header-value pairs, for example, header1:value1,header2:value2>

    Or (または)

  • --custom-headers-file: <location of the file containing header-value pairs, one per line>

--auth-query-params

クエリパラメーターと値を渡して API に対する認証を行う場合に使用します。

クエリパラメーターで必須:

  • --credentials <client_id:client_secret>

--url

バックエンド API の URL を設定します。

--discover-url

現在の環境で実行されているインスタンスに基づいて、バックエンド API の URL を自動的に検出します。複数の API が実行されている場合、DataGraph は最初の URL を使用します。

--ca

API のトラストストアに追加する CA ファイルのリストを指定します。

--cert

mTLS に使用するクライアント証明書を指定します。

--key

mTLS に使用する非公開キーを指定します。

--key-password

暗号化された非公開キーを復号化するパスワードを指定します。

--empty-ca

すべての CA 証明書を削除します。

--empty-mtls

クライアント証明書、非公開キー、非公開キーパスワード情報を削除します。

--keep-edits

API ソースの現在のバージョンに存在する編集を、API 仕様から抽出する代わりに保持します。

--override-ui-edits

API ソースの取得元を CLI に変更します。API ソースの取得元が DataGraph UI である場合、このオプションを使用して、UI の編集を API 仕様の編集で上書きします。

--ignore-invalid-edits

API 仕様の拡張機能で行われた有効な編集を適用し、無効な編集を無視するために使用します。

コマンドラインで定義されたすべてのヘッダーとクエリパラメーター、およびすべてのヘッダーとクエリパラメーターファイルが追加されます。反復キーがある場合、コマンドラインで指定された値が優先されます。

コマンド例

次のコマンドは、ソース API の URL を更新し、その認証を ​auth-none​ から ​auth-basic​ に変更して、クライアント ID とシークレットを追加します。

> datagraph sources update b6cb82a6-51dc-4968-861a-aa04447c3442 --url http://test2.com --version 1.0.0 --auth-basic --credentials client-test:client-secret

出力例

{
  "apiVersion": "v1",
  "assetId": "product-api",
  "createDate": "2022-05-20T18:56:57Z",
  "endpoint": "http://test2.com",
  "environmentId": "<envID>",
  "groupId": "<groupID>",
  "name": "Product API",
  "organizationId": "<orgID>",
  "securityScheme": "BASIC",
  "sourceId": "b6cb82a6-51dc-4968-861a-aa04447c3442",
  "updateDate": "2022-05-27T18:31:39",
  "version": "1.0.0",
  "origin": "CLI"
}

datagraph scale

> datagraph scale <concurrent-api-calls>

このコマンドでは、統合スキーマで許可される同時 API コール数を設定できます。API コール数を増減することで、必要に応じて処理するワークロードを増やし、コンシュームを最適化できます。

このコマンドはデフォルトのオプション ​--help​、​-f/--fields​、​-o/--output​、​--verbose​ を受け入れます。

コマンド例

datagraph scale 300

出力例

{
  "message": "Api calls updated"
}

datagraph schema-download

> datagraph schema-download

このコマンドは、現在の環境の統合スキーマをダウンロードします。

このコマンドはデフォルトのオプション ​--help​、​-f/--fields​、​-o/--output​、​--verbose​ を受け入れます。

出力例

directive @key(fields: String) on OBJECT

"An Item"
type Item {
  itemId: Int!
  "A Product"
  product: OrderProduct!
  quantity: Int!
}

"An Order"
type Order {
  items: [Item!]!
  orderId: String!
  customerId: String!
}

"A Product"
type OrderProduct {
  productId: String!
  name: String!
}

type Query {
  orders(ordersCount: Int): [Order!]
  ordersByOrderId(orderId: String!): Order
  ordersProductsByOrderId(productsCounts: Int, orderId: String!): [OrderProduct!]
}

datagraph sources delete

> datagraph sources delete <sourceId>

このコマンドは、指定された API ソースを削除します。

このコマンドはデフォルトのオプション ​--help​、​-f/--fields​、​-o/--output​、​--verbose​ を受け入れます。

コマンド例

datagraph sources delete d40df394-785d-4c91-8aeb-f07568dd57c

出力例

{
  "message": "Source deleted successfully",
  "sourceId": "620afe93-b196-42eb-ae77-b68a0a937b6a"
}

datagraph sources get

> datagraph sources get <sourceId>

このコマンドは、指定された API ソースを取得します。

このコマンドはデフォルトのオプション ​--help​、​-f/--fields​、​-o/--output​、​--verbose​ を受け入れます。

コマンド例

datagraph sources get d1d27987-939a-4b41-b3ef-411568ee5bdd

出力例

{
  "apiVersion": "1.0",
  "assetId": "order-e2e",
  "createDate": "2022-05-20T16:49:00Z",
  "hasKeystore": false,
  "endpoint": "http://test.com",
  "environmentId": "<envID>",
  "groupId": "<groupID>",
  "name": "Order E2E",
  "organizationId": "<orgID>",
  "hasTruststore": false,
  "securityScheme": "NO_AUTH",
  "sourceId": "d1d27987-939a-4b41-b3ef-411568ee5bdd",
  "updateDate": "2022-05-20T16:49:00Z",
  "version": "1.0.0",
  "origin": "CLI"
}

datagraph sources list

> datagraph sources list

このコマンドは、現在の環境のすべての API ソースをリストします。

このコマンドはデフォルトのオプション ​--help​、​-f/--fields​、​-o/--output​、​--verbose​ を受け入れます。

出力例

{
    "apiVersion": "1.0",
    "assetId": "order-e2e",
    "createDate": "2022-05-20T16:49:00.000Z",
    "endpoint": "http://test.com",
    "environmentId": "<envID>",
    "groupId": "<groupID>",
    "name": "Order E2E",
    "organizationId": "<orgID>",
    "securityScheme": "NO_AUTH",
    "sourceId": "d1d27987-939a-4b41-b3ef-411568ee5bdd",
    "updateDate": "2022-05-20T16:49:00.000Z",
    "version": "1.0.0",
    "origin": "CLI"
  },
  {
    "apiVersion": "v1",
    "assetId": "product-api",
    "createDate": "2022-05-20T18:05:41.000Z",
    "endpoint": "http://test.com",
    "environmentId": "<envID>",
    "groupId": "<groupID>",
    "name": "Product API",
    "organizationId": "<orgID>",
    "securityScheme": "NO_AUTH",
    "sourceId": "deca7be1-c299-4441-bc7b-dba733e3a11f",
    "updateDate": "2022-05-20T18:05:41.000Z",
    "version": "1.0.0",
    "origin": "CLI"
  }

datagraph describe

> datagraph describe

このコマンドは、DataGraph に関する次の情報を返します。

  • endpoint​: 要求を受け入れる GraphQL エンドポイントを表示します。

  • deploymentError​: DataGraph のデプロイメントが失敗した場合、この項目にエラーの情報が表示されます。それ以外の場合は空です。

  • deploymentStatus​: DataGraph はデプロイ中、実行中、またはエラーがあるかどうかを示します。

  • logLevels​: 設定されたログレベルのリストを表示します。

  • envStatus​: 現在の環境の状況を表示します。

  • dlbEndpoint​: ロードバランサーエンドポイントを表示します。

このコマンドはデフォルトのオプション ​--help​、​-f/--fields​、​-o/--output​、​--verbose​ を受け入れます。

出力例

{
  "deploymentStatus": "STARTED",
  "dlbEndpoint": "datagraph-example.us-e1.prod.cloudhub.io",
  "endpoint": "datagraph-example.us-e1.prod.cloudhub.io",
  "envStatus": "STARTED"
}

datagraph validate

> datagraph validate asset <g/a/v>

このコマンドは、API ソースを統合スキーマに追加できるかどうかを検証します。そのために、このコマンドは次の処理を行います。

  • API ソースを GraphQL スキーマに変換する。

  • API 仕様に適用されている API 拡張機能を検証する。

  • 統合スキーマに対して競合チェックを実行する。

これらのステップのいずれかで競合またはエラーが発生した場合、コマンドは結果を返します。競合やエラーが見つからない場合は、成功メッセージを返します。

検証する API ソースは、​<g/a/v>​ で指定されます。ここで、​g​ はグループ ID、​a​ はアセット ID、​v​ は API ソースのバージョン ID です。グループ ID は省略可能です。グループ ID を指定しない場合、このコマンドは現在の組織 ID を使用します。

このコマンドはデフォルトのオプション ​--help​、​-f/--fields​、​-o/--output​、​--verbose​ を受け入れます。

コマンド例

datagraph validate asset 73b0d8f2-5a2f-4107-884d-fcd80f30bc51/sales-api/1.0.0

出力例

{
  "code": "success"
}

DataGraph ロードバランサ

コマンド 説明

専用ロードバランサー設定を Anypoint DataGraph に追加する

Anypoint DataGraph の専用ロードバランサー設定を表示する

専用ロードバランサー設定を Anypoint DataGraph から削除する

datagraph load-balancer-config add

> datagraph load-balancer-config add <dlbUrl>

このコマンドでは、​<dlbUrl>​ で指定された専用ロードバランサー設定を Anypoint DataGraph に追加します。 dlbUrl​ は、DLB ドメインとマッピングルール ​inputUri​ を含む有効な URL です。

このコマンドはデフォルトのオプション ​--help​、​-f​/​--fields​、​-o​/​--output​ のみを受け入れます。

datagraph load-balancer-config describe

> datagraph load-balancer-config describe [options]

このコマンドでは、Anypoint DataGraph の専用ロードバランサーの URL を表示します。

このコマンドはデフォルトのオプション ​--help​、​-f​/​--fields​、​-o​/​--output​ のみを受け入れます。

datagraph load-balancer-config remove

> datagraph load-balancer-config remove [options]

このコマンドでは、専用ロードバランサー設定を Anypoint DataGraph から削除します。

このコマンドはデフォルトのオプション ​--help​、​-f​/​--fields​、​-o​/​--output​ のみを受け入れます。

DataGraph CLI コマンドエラー

コマンドの定義が正しくないと、DataGraph によって次のエラーが返されます。これらのエラーの原因として、オプションのパラメータが正しくない、ID が見つからない、 必須のオプションが欠落している、などが考えられます。

Options are Required (オプションが必須です)

Output (出力):

{
  "error": {
    "errorMessage": "Options are required"
  }
}

原因:

このエラーは、コマンドを実行するには 1 つ以上のオプションが必須であることを示しています。

  • datagraph sources add​: このコマンドでは ​--url​ オプションまたは ​--discover-url​ オプションが必須です。

  • datagraph sources update/promote​: 使用可能な任意のオプションが必須です。対象ソースで更新またはプロモートする要素を定義してください。

Not Found (見つかりません)

Output (出力):

{
  "errorCode": "dg-xapi-proxy",
  "errorMessage": "Not Found"
}

原因:

このエラーは、DataGraph でアセットが見つからなかったことを示しています。

  • datagraph sources add​: グループ ID、アセット ID、バージョン ID が有効なアセットに対応していないか、アセットにアクセスできないため、アセットに到達できません。

  • datagraph sources update/promote​: 指定した UUID が現在の環境、またはアセットをプロモートする対象環境に存在しません。

不正な要求

Output (出力):

{
  "error": {
    "code": "400",
    "message": "Bad Request"
  }
}

原因:

このエラーは、コマンドの必須のパラメータの一部で形式に誤りがあることを示しています。

  • datagraph sources update​: 指定されたソース ID が有効な UUID ではありません。

  • datagraph sources promote​: ソース ID または対象環境 ID が有効な UUID 形式ではありません。

API Already Exists (API がすでに存在しています)

Output (出力):

{
  "errorCode": "dg-federation-source-exists",
  "errorMessage": "API already exists"
}

原因:

このエラーは、追加しようとしている API がすでに統合スキーマに存在していることを示しています。

  • datagraph sources add​: アセット ID と API ソースのメジャーバージョンがすでに統合スキーマに存在しています。ソースに変更を加えるには、​datagraph sources update​ コマンドを使用します。

No API Instances Found (API インスタンスが見つかりません)

Output (出力):

{
  "errorCode": "dg-xapi-no-api-instances",
  "errorMessage": "No API instances found"
}

原因:

このエラーは、API インスタンスについて取得する URL が欠落していることを示しています。

  • datagraph sources add/update/promote​: このエラーは、​--discover-url​ オプションを使用しているときに表示されます。アセットに、モッキングサービスからのものではない URL を取得できる有効なインスタンスがない場合に発生します。このような場合は、代わりに ​--url​ オプションを使用します。

Must Define URL (URL を定義する必要があります)

Output (出力):

{
  "error": {
    "errorMessage": "Must define url or set --discover-url"
  }
}

原因:

このエラーは、​--url​ または ​--discover-url​ を使用して URL を設定する必要があることを示しています。

  • datagraph sources add​: URL は ​add​ コマンドの必須項目であるため、​--url​ または ​--discover-url​ の 2 つのオプションのうちいずれかを設定する必要があります。

Invalid API Calls (API コールが無効です)

Output (出力):

{
  "errorCode": "dg-xapi-invalid-api-calls",
  "errorMessage": "Invalid Api Calls: 1500"
}

原因:

このエラーは、無効な数の API コールを要求したことを示しています。

  • datagraph scale​: 同時コール数は 1 ~ 1200 の間である必要があります。

Unauthorized (承認されていません)

Output (出力):

{
  "error": {
    "code": "401",
    "message": "Unauthorized"
  }
}

原因:

このエラーは、対話型モードで使用しているときに CLI でセッションを失ったことを示しています。CLI を終了して再起動し、もう一度ログインしてください。

API Not Found in Current Environment (現在の環境で API が見つかりません)

Output (出力):

{
  "errorCode": "dg-federation-source-not-in-env",
  "errorMessage": "API not found in current environment"
}

原因:

このエラーは、編集、削除、または更新しようとしている API ソースが存在はしているが、作業環境にないことを示しています。

  • datagraph sources update/promote​: 送信された UUID が作業環境にありません。または、​--version​ オプションを使用している場合は、メジャーバージョンが現在のバージョンに対応していません。

DataGraph CLI 検証エラー

統合スキーマに対して API ソースを追加または更新する前に ​datagraph validate asset​ コマンドを使用すると、DataGraph によって次のエラーが返されます。

編集エラー

編集エラーが生成されるのは、特定の API ソースでの編集にセマンティックの問題が含まれる場合です。これらのエラーではコードプロパティ ​dg-federation-customization-conflict​ を使用しており、次のような構造になります。

{
  "code": "dg-federation-customization-conflict",
  "detail": [
    {
      "code": "element-not-found-in-spec",
      "editType": "set-primary-key",
      "reason": "field addId was not found in the specification",
      "element": "Address"
    }
  ],
  "message": "Customization conflict found adding Customer API"
}
  • message​ 項目には人間が読み取り可能な検証の応答が含まれており、エラーの概要が提供されます。

  • detail​ 項目には現在のアセットで見つかったすべての競合のリストが含まれています。

    • code​ 項目ではエラーの種類を特定します。

    • editType​ 項目では競合があるカスタマイズを特定します。

    • reason​ 項目には人間が読み取り可能な問題の説明が含まれています。

    • element​ 項目には問題が含まれています。

競合エラー

競合エラーが発生するのは、統合スキーマに API スキーマを追加しようとしたときです。これらのエラーではコードプロパティ ​dg-federation-udg-conflict​ を使用しており、次のような構造になります。

{
  "code": "dg-federation-udg-conflict",
  "detail": [
    {
      "element": "Customer",
      "violations": [
        {
          "code": "incompatible-primary-key-set",
          "keys": [
            "customerId"
          ],
          "expectedKeys": [
            "name"
          ],
          "message": "Primary key set have edges with different names"
        }
      ]
    }
  ],
  "message": "Merge conflict found adding CLI - Customer OAS API"
}
  • message​ 項目には人間が読み取り可能な検証の応答が含まれており、エラーの概要が提供されます。

  • detail​ 項目には、API スキーマを統合スキーマにマージしようとしたときに見つかったすべての競合のリストが含まれています。

    • element​ 項目には競合の場所が含まれています。

    • violations​ 項目では修正する必要がある競合がリストされます。

      • code​ 項目ではエラーの種類を特定します。

      • message​ 項目には人間が読み取り可能な問題の説明が含まれており、エラーの種類に応じて、詳細のための追加のプロパティが含まれる場合があります。