次の方法で共有


nuget.org プロトコル

nuget.org と対話するには、クライアントが特定のプロトコルに従う必要があります。 これらのプロトコルは進化し続けるので、クライアントは特定の nuget.org API を呼び出すときに使用するプロトコル バージョンを識別する必要があります。 これにより、nuget.org は、古いクライアントに対して破壊的でない方法で変更を導入できます。

このページに記載されている API は nuget.org に固有であり、これらの API を導入するための他の NuGet サーバー実装に対する期待はありません。

NuGet エコシステム全体で広く実装されている NuGet API の詳細については、 API の概要を参照してください。

このトピックでは、さまざまなプロトコルが存在する際にそれをリストします。

NuGet プロトコル バージョン 4.1.0

4.1.0 プロトコルは、nuget.org 以外のサービスとやり取りする検証スコープ キーの使用を指定し、nuget.org アカウントに対してパッケージを検証します。 4.1.0バージョン番号は不透明な文字列ですが、このプロトコルをサポートしていた公式 NuGet クライアントの最初のバージョンと一致します。

検証により、ユーザーが作成した API キーは nuget.org でのみ使用され、サードパーティサービスからの他の検証または検証は、1 回限りの検証スコープ キーを使用して処理されます。 これらの検証スコープ キーを使用して、パッケージが nuget.org の特定のユーザー (アカウント) に属していることを検証できます。

クライアント要件

クライアントは、パッケージを nuget.org にプッシュ する API 呼び出しを行うときに、次のヘッダーを渡す必要があります。

X-NuGet-Protocol-Version: 4.1.0

X-NuGet-Client-Version ヘッダーのセマンティクスは似ていますが、公式の NuGet クライアントでのみ使用するために予約されていることに注意してください。 サード パーティのクライアントは、 X-NuGet-Protocol-Version ヘッダーと値を使用する必要があります。

プッシュ プロトコル自体については、PackagePublish リソースのドキュメントで説明されています。

クライアントが外部サービスと対話し、パッケージが特定のユーザー (アカウント) に属しているかどうかを検証する必要がある場合は、次のプロトコルを使用し、nuget.org の API キーではなく、検証スコープ キーを使用する必要があります。

検証スコープ キーを要求する API

この API は、nuget.org 作成者が所有するパッケージを検証するための検証スコープ キーを取得するために使用されます。

POST api/v2/package/create-verification-key/{ID}/{VERSION}

要求パラメーター

名前 In タイプ 必須 注記
ID URL 文字列 yes 検証スコープ キーが要求されるパッケージ識別子
VERSION URL 文字列 no パッケージのバージョン
X-NuGet-ApiKey Header 文字列 yes たとえば、X-NuGet-ApiKey: {USER_API_KEY} のように指定します。

[応答]

{
    "Key": "{Verify scope key from nuget.org}",
    "Expires": "{Date}"
}

検証スコープ キーを確認する API

この API は、nuget.org 作成者が所有するパッケージの検証スコープ キーを検証するために使用されます。

GET api/v2/verifykey/{ID}/{VERSION}

要求パラメーター

名前 In タイプ 必須 注記
ID URL 文字列 yes 検証スコープ キーが要求されるパッケージ識別子
VERSION URL 文字列 no パッケージのバージョン
X-NuGet-ApiKey Header 文字列 yes たとえば、X-NuGet-ApiKey: {VERIFY_SCOPE_KEY} のように指定します。

これにより、スコープ API キーの有効期限が 1 日または初回使用時のいずれか早い方で期限切れになります。

[応答]

状態コード Meaning
200 API キーが有効です
4:03 API キーが無効であるか、パッケージに対してプッシュする権限がありません
404 IDおよびVERSIONによって参照されるパッケージ (省略可能) が存在しません