API 互換性ポリシーおよび非推奨ポリシー

この文書では、API(アプリケーション・プログラミング・インターフェース)の新バージョンが旧バージョンとの互換性を維持できるよう、 IBM Verify が遵守する一連のガイドラインと実践方法を定めています。 さらに、この文書では、APIの段階的な廃止に対応するために実施されたプロセスについて概説しています。

互換性ポリシー

可能な場合は、REST リソースおよびその表現は、以前のバージョンと互換性のある形で維持されます。 以前のバージョンと互換性のない形でコントラクトを変更する必要がある場合は、新しい表現で新しいリソース、メディア・タイプ、またはバージョンが作成されます。 古いリソースまたはメディア・タイプは、API 非推奨ポリシーに従って維持されます。
注: APIの動作は、セキュリティ上の脆弱性となる場合、事前の予告なしに変更されることがあります。 変更に関するお知らせは 「新機能」 に掲載されています。

以前のバージョンとの互換性がある変更または非破壊的な変更

既存の API リソースを拡張できるリソース URI の追加
この変更は一般的に安全です。 ただし、この変更では、この変更と競合するコードを生成する可能性がある一般的なクライアント・フレームワークについて考慮する必要があります。 以下の例に、クライアントで生成されるコードを破壊する可能性のある、避ける必要がある変更のタイプを示します。
  • API が /v1.0/foo/bar に存在しているものとします。 コード生成プログラムは、クライアント・メソッドとして GetBar を生成する可能性があります。 新しい API が /v1.0/foo/{param} ({param} は任意のストリング) で導入されると、コード生成プログラムが新しいクライアント・メソッドを GetFoo(String param) として生成する可能性があります。 この変更により、GetBar で組み込まれていたロジックが呼び出されなくなるため、クライアントで破壊的な変更が生じる可能性があります。
  • 現行パス /v1.0/foo/bar で、クライアントで生成されたコード GetBar および GetBarAsync が生じることがあるものとします。 API /v1.0/foo/Async を追加すると、この生成されたコードと競合します。
API インターフェースへの HTTP メソッドの追加
この変更は、この変更前の要求ペイロードが引き続き存在し、同じように動作するという条件の下で安全です。 既存の API 要求本文に、あるいは照会ストリング・パラメーターとして、オプションのフィールドが追加されることがあります。
オプションの要求ヘッダーの追加
この変更は、この変更前の要求が引き続き同じように応答するという条件の下で安全です。
既存のプロパティーへの許可値の追加
API では、ストリングを使用してプロパティーを表し、制約された値のリストを許可します。 例えば、リソース内の type を文書化して、リソース・タイプの現行リストを列挙できます。 クライアントは、明確に適宜された enum 型の厳密なデシリアライゼーションを使用するのではなく、これらのタイプの汎用ストリングを使用する必要があります。 複数の可能な値を持つプロパティーを受け入れるリソースは、追加の値を許可するように拡張されることがあります。 この新しい値により、対応する新しいプロパティーおよび検証ルールが導入されることがあります。 クライアントは、無効な enum 値が含まれた要求を行ってエラー応答を予期するなどして、存在しない enum 値に対して検証しないようにする必要があります。

存在するプロパティー値では引き続き、既存の動作がサポートされます。 リソース・タイプでの分岐ロジックなどが含まれているクライアント・コードは、以前と同様に機能します。

応答へのオプションのフィールド/ヘッダーの追加

いつでも、オプションのフィールドおよびヘッダーが API 応答に追加されることがあります。 クライアントは、そのような変更に合わせて調整する必要があります。

API 応答でのエラー・メッセージおよびリソース説明の変更
エラー応答内の messageId フィールドは変更不能とみなされ、エラー状態または事例の記述されたリストを常にカバーする必要があります。 このメッセージに関連した説明は変更されることがありますが、ユーザーに対するメッセージの意味は変更されません。

クライアントは、messageDescription 属性に基づいたロジックを構築してはなりません。

エラー・メッセージ ID のスコープの増大
messageId フィールドは、1 つ以上のエラー状態を指します。 この messageId は、いつでも、さらに多くのエラー状態をカバーするように拡張されることがあります。 ただし、そのような拡張は、恣意的ではなく、論理的でなければなりません。 新しいエラー状態は、当該メッセージによってカバーされている既存のエラー状態と密接に関係している必要があります。
レート制限のヘッダーおよびエラー

API の存続期間において API エンドポイントでレート制限が調整されることがあり、これにはバージョンの更新は不要です。

要求が多すぎることを示す HTTP 状況コード 429 を受け取るクライアントは、調整を行う必要があります。

破壊的な変更

API リソース・エンドポイントまたは HTTP メソッドの削除または名前変更
このタイプの変更は、API を使用しているクライアントを破壊するため、許可されません。ただし、強いセキュリティー上のニーズのためにこの変更を行う必要がある場合を除きます。 このような変更を回避するためにあらゆる努力が行われています。
enum 値の削除または名前変更
enum の値は追加されることはありますが、削除することはできません。
フィールドの type の変更

一般的に、フィールドの type は変更してはなりません。 ただし、API 実装で以前の type を受け入れ、以前の type で応答できる場合は、この変更は以前のバージョンとの互換性があるものとみなされます。

既存の要求の可視の動作の変更

以前に要求の結果として特定のアクションまたは応答が生じていた場合、引き続き、同様に動作する必要があります。 唯一の例外は、新しいエラー・メッセージ、HTTP 状況コード、要求フィールド、応答フィールドの形で既存のコントラクトに許可される拡張です。

非推奨ポリシー

API が非推奨になった場合の潜在的な問題を緩和するために、以下の通知が出されます。 非推奨の期間は 12 カ月です。
非推奨化の通知
示されている有効期限日の少なくとも 12 カ月前に、以下のチャネルを使用して API 非推奨化の通知が出されます。
Swagger
Swagger は、利用者に対する API コントラクトを定義します。 非推奨になる API は、タグ deprecated でマークされます。
Sunset API の ` HTTP ` レスポンスヘッダー
廃止予定のAPIは、リソースが利用できなくなる日付を示す HTTP レスポンスヘッダーを Sunset 返します。 HTTP レスポンスヘッダーには Link 、API 廃止ポリシーの情報への URI が含まれます。 廃止予定のAPIからの移行に十分な時間を確保できるよう、API呼び出しにおいて ` SunsetHTTP ` レスポンスヘッダーを確認してください。
IBM Documentation
「新機能」セクションに、非推奨化に関する通知が、詳細情報へのリンクとともに記載されます。 この情報は、API、非推奨化されるバージョン、置き換えのバージョン、および有効期限日を示します。 この通知は、API が有効期限日に達するまで続けられます。
非推奨化日
  • 現在不要となったコンテンツはすべて IBM Documentation 削除されます。
  • 非推奨になった API のすべての Swagger 資料が削除されるか、非表示になります。