REST API

HTTP メソッド(HTTP Methods)

以下で説明するように、次の HTTP メソッドを使用してさまざまなアクションを実装します。

HTTP メソッド

説明

POST

最初の方法は、新しい技術情報を作成するために使用されます。POST 要求は、新しい技術情報が属する技術情報コレクションに送信されます。コレクションを表す技術情報に POST 要求を送信することは、その技術情報のメンバーズ プロパティに同じ要求を送信することと同じです。

最後のメソッドは、オブジェクトに対する操作(アクションなど)を開始するために使用されます。サービスは、アクションを送信するための POST メソッドをサポートする必要があります。POST 操作はべき等ではない場合があります。

GET

GET メソッドは、技術情報の表現を取得するために使用されます。その表現は、単一の技術情報またはコレクションのいずれかです。

PUT

PUT メソッドは、技術情報を完全に置き換えるために使用されます。要求本文から省略されたプロパティは、デフォルト値にリセットされます。

PATCH

PATCH 方式は、既存の技術情報で更新を実行するために使用される推奨方式です。技術情報への変更は、要求本文で送信されます。要求本文で指定されていないプロパティは、PATCH 要求によって直接変更されません。応答は、更新が行われた後の空または技術情報の表現のいずれかです。実装は、独自のポリシーに基づいて特定のフィールドの更新操作を拒否する場合があり、その場合は、要求された更新を適用しません。

DELETE

DELETE メソッドは、 技術情報を取り除くために使用されます。サービスは、削除できる技術情報の DELETE メソッドをサポートする必要があります。

ステータス コード

HTTP は、応答メッセージで返されるステータスコードを定義します。

ステータス コード

ステータス名

説明

200

OK

要求が正常に完了し、本文に表現が含まれています。

201

Created

新しいリソースを作成した要求が正常に完了しました。Location ヘッダーは、新しく作成されたリソースの正規 URI に設定されます。新しく作成されたリソースの表現は、応答本文に含まれる場合があります。

202

Accepted

要求の処理は受け入れられましたが、処理が完了していません。Location ヘッダーは、後で操作のステータスを判断するために照会できるタスクリソースの URI に設定する必要があります。タスク リソースの表現は、応答本文に含めることができます。

204

コンテンツなし

要求は成功しましたが、応答の本文にコンテンツが返されません。

301

完全に移動

要求されたリソースは、別の URI にあります。

302

検出済み

要求されたリソースは一時的に別の URI にあります。

304

未変更

サービスは、アクセスが許可されている条件付き GET 要求を実行しましたが、リソースの内容は変更されていません。条件付き要求は、ヘッダー If-Modified-Since および/または If-None-Match を使用して開始され、変更がない場合はネットワーク帯域幅を節約します。

401

Unauthorized

この要求に含まれる認証クレデンシャルが欠落しているか、無効です。

403

Forbidden

サーバーは要求内のクレデンシャルを認識しましたが、それらのクレデンシャルにはこの要求を実行する権限がありません。

404

Not Found

要求で、存在しないリソースの URI が指定されました。

405

Method Not Allowed

リクエストで指定されたHTTP動詞(DELETE、GET、HEAD、POST、PUT、PATCHなど)は、このリクエストURIではサポートされていません。応答には、Request-URI で識別されるリソースでサポートされるメソッドのリストを提供する Allow ヘッダーが含まれます。

406

Not Acceptable

要求で Accept ヘッダーが指定されましたが、この要求で識別されるリソースは、Accept ヘッダーのメディアタイプの 1 つに対応する表現を生成できません。

409

競合

プラットフォームでサポートされているリソースの現在の状態で競合が発生する可能性があるため(たとえば、互換性のない値を使用してリンクされた方法で機能する複数の属性を設定しようとした場合)、作成要求または更新要求を完了できませんでした。

410

Gone

要求されたリソースがサーバーで使用できず、転送アドレスが不明なことを示しています。この状態は永続的であると見なされます。リンク編集機能を持つクライアントは、ユーザーの承認後に Request-URI への参照を削除する必要があります。サーバーが状態が永続的であるかどうかを認識していない場合、または決定する機能がない場合は、代わりにステータスコード404(Not Found)を使用する必要があります(SHOULD)。この応答は、特に明記されていない限りキャッシュ可能です。

411

必須となる長さ

要求は、Content-Length ヘッダーを使用してコンテンツの長さを指定しませんでした(代わりに Transfer-Encoding:chunked が使用された可能性があります)。アドレス指定されたリソースには、Content-Length ヘッダーが必要です。

412

必須条件に失敗しました

前提条件(OData-Version、If Match、If Not Modified ヘッダーなど)のチェックに失敗しました。

415

Unsupported Media Type

要求で、サポートされていない本文の Content-Type が指定されています。

500

Internal Server Error

サーバーで、要求の処理を妨げる予期しない状態が発生しました。

501

Not Implemented

サーバーは要求を処理するために必要な機能を(現在)サポートしていません。これは、サーバーが要求メソッドを認識せず、リソースのメソッドをサポートできない場合に適切な応答です。

503

Service Unavailable

サーバーの一時的な過負荷またはメンテナンスのため、サーバーは現在リクエストを処理できません。

認証

BMC は、認証を使用して特定の Redfish 技術情報アクセスする必要があります。Redfish は、RFC7617 で定義されている HTTPS 基本認証と呼ばれるアクセス方法を提供し、ユーザーが Redfish 技術情報にアクセスできるようにします。この方法では、TLS に準拠した接続のみを使用して、サードパーティの認証サービスとクライアント間でデータを転送します。ローカル BMC 認証または LDAP や現用系ディレクトリなどのリモート認証を使用してログインします。

curl を使用した HTTPS 基本認証の適用例:

#
#UCS-Server: /logs$ curl -k -X GET https://<username>:<password>@<BMC IP>/redfish/v1 | jq. 
%Total %Received %xferd Average Speed   Time    Time    Time     Current
                        Dload   Upload  Total   Spend    Left    Speed
100 1532 100 1532 0 0   10281       0--:--:--:--:--: :--: :--:   10281{
    "@odata.id": "/redfish/v1",
    "@odata.type": "#ServiceRoot.v1_11_0.ServiceRoot",
    "AccountService": {
        "@odata.id": "/redfish/v1/AccountService"
    },
    "Cables": {
        "@odata.id": "/redfish/v1/Cables"
    },
    "CertificateService": {
        "@odata.id": "/redfish/v1/CertificateService"
    },
    "Chassis": {
        "@odata.id": "/redfish/v1/Chassis"
    },
    "EventService": {
        "@odata.id": "/redfish/v1/EventService"
    },
    "Id": "RootService",
    "JsonSchemas": {
        "@odata.id": "/redfish/v1/JsonSchemas"
    },
    "Links": {
        "Sessions": {
            "@odata.id": "/redfish/v1/SessionService/Sessions"
        }
    },
    "Managers": {
        "@odata.id": "/redfish/v1/Managers"
    },
    "Name": "Root Service",
    "ProtocolFeaturesSupported": {
        "DeepOperations": {
            "DeepPATCH": false,
            "DeepPOST": false
        },
        "ExcerptQuery": false,
        "ExpandQuery": {
            "ExpandAll": false,
            "Levels": false,
            "Links": false,
            "NoLinks": false
        },
        "FilterQuery": false,
        "OnlyMemberQuery": true,
        "SelectQuery": true
    },
    "RedfishVersion": "1.9.0",
    "Registries": {
        "@odata.id": "/redfish/v1/Registries"
    },
    "SessionService": {
        "@odata.id": "/redfish/v1/SessionService"
    },
    "Systems": {
        "@odata.id": "/redfish/v1/Systems"
    },
    "Tasks": {
        "@odata.id": "/redfish/v1/TaskService"
    },
    "TelemetryService": {
        "@odata.id": "/redfish/v1/TelemetryService"
    },
    "UUID": "1b187d13-66a7-4429-8496-b497d28931ba",
    "UpdateService": {
        "@odata.id": "/redfish/v1/UpdateService"
    }
}

利用可能な API

次の Redfish 定義の URI がサポートされています:

Resource

リソース URI

サービス ルート

/redfish/v1/

アカウント サービス

/redfish/v1/AccountService

マネージャ アカウントの収集

/redfish/v1/AccountService/Accounts

マネージャ アカウント

/redfish/v1/AccountService/Accounts/{{account_instance}}

ロール コレクション

/redfish/v1/AccountService/Roles

ロール

/redfish/v1/AccountService/Roles/{{role_instance}}

シャーシ収集

/redfish/v1/Chassis

シャーシ

/redfish/v1/Chassis/{{chassis_instance}}

マネージャ収集

/redfish/v1/Managers

マネージャ

/redfish/v1/Managers/{{manager_instance}}

マネージャ ネットワーク プロトコル

/redfish/v1/Managers/{{manager_instance}}/NetworkProtocol

ログ サービスの収集

/redfish/v1/Managers/{{manager_instance}}/LogServices

ログ サービスの収集(シャーシ)

/redfish/v1/Chassis/{{chassis_instance}}/LogServices

ログ サービス

/redfish/v1/Managers/{{manager_instance}}/LogServices/

{{manager_log_instance}}

ログ エントリ 収集

/redfish/v1/Managers/{{manager_instance}}/LogServices/

{{manager_log_instance}}/Entries

ログエントリの収集(シャーシ)

/redfish/v1/Chassis/{{chassis_instance}}/LogServices/

{{chassis_log_instance}}/Entries

ログ エントリ

/redfish/v1/Chassis/{{chassis_instance}}/LogServices/{{chassis_log_instance}}

/Entries/{{chassis_logentry_instance}}

ログ エントリ(マネージャ)

/redfish/v1/Managers/{{manager_instance}}/LogServices/{{manager_log_instance}}

/Entries/{{manager_logentry_instance}}

イーサネット インターフェイスの収集

/redfish/v1/Managers/{{manager_instance}}/EthernetInterfaces

イーサネット インターフェイス

/redfish/v1/Managers/{{manager_instance}}/EthernetInterfaces/{{manager_ethifc_instance}}

イベント サービス

/redfish/v1/EventService

セッション サービス

/redfish/v1/SessionService

セッション収集

/redfish/v1/SessionService/Sessions

セッション

/redfish/v1/SessionService/Sessions/{{session_id}}

サービスの更新

/redfish/v1/UpdateService

FirmwareInventory 収集

/redfish/v1/UpdateService/FirmwareInventory

FirmwareInventory

/redfish/v1/UpdateService/FirmwareInventory/{{firmwareinventory_instance}}