プッシュと削除

NuGet V3 API を使用して、パッケージをプッシュ、削除 (またはサーバーの実装によってはリストから解除)、再度リストに登録することができます。 これらの操作は、サービス インデックスで見つかった PackagePublish リソースに基づいています。

バージョン管理

次の @type 値が使用されます。

@type 値 メモ
PackagePublish/2.0.0 初期リリース

ベース URL

次の API のベース URL は、パッケージ ソースのサービス インデックスにある、PackagePublish/2.0.0 リソースの @id プロパティの値です。 以下のドキュメントでは、nuget.org の URL が使用されています。 サービス インデックスに含まれる @id 値のプレースホルダーととして https://www.nuget.org/api/v2/package を検討してください。

プロトコルが同じであるため、この URL は従来の V2 プッシュ エンドポイントと同じ場所を指すことに注意してください。

HTTP メソッド

このリソースでは PUTPOST、および DELETE HTTP メソッドがサポートされています。 各エンドポイントでサポートされているメソッドについては、以下を参照してください。

パッケージをプッシュする

Note

nuget.org には、プッシュ エンドポイントとやり取りするための追加要件があります。

nuget.org では、次の API を使用した新しいパッケージのプッシュがサポートされています。 指定された ID とバージョンのパッケージが既に存在する場合、nuget.org はプッシュを拒否します。 他のパッケージ ソースでは、既存のパッケージの置き換えをサポートしている場合があります。

PUT https://www.nuget.org/api/v2/package

要求パラメーター

名前 / タイプ 必須 メモ
X-NuGet-ApiKey ヘッダー string はい たとえば、X-NuGet-ApiKey: {USER_API_KEY} のように指定します。

API キーは、ユーザーによってパッケージ ソースから取得され、クライアントで構成された Opaque な文字列です。 特定の文字列形式は必須ではありませんが、API キーの長さは、HTTP ヘッダー値の妥当なサイズを超えないようにする必要があります。

要求本文

要求本文は次の形式になる必要があります。

マルチパート フォーム データ

要求ヘッダー Content-Typemultipart/form-data で、要求本文の最初の項目は、プッシュされる .nupkg の未加工バイトです。 マルチパート本文の後続の項目は無視されます。 マルチパート項目のファイル名などのヘッダーはすべて無視されます。

回答

状態コード 意味
201、202 パッケージが正常にプッシュされました
400 指定されたパッケージは無効です
409 指定された ID とバージョンのパッケージが既に存在します

サーバーの実装は、パッケージが正常にプッシュされたときに返される成功の状態コードによって異なります。

パッケージを削除する

nuget.org は、パッケージ削除要求を「リストから解除」と解釈します。 つまり、パッケージはパッケージの既存のコンシューマーで引き続き使用できますが、パッケージは検索結果やウェブ インターフェイスに表示されなくなります。 この方法の詳細については、「パッケージを削除する」ポリシーを参照してください。 その他のサーバー実装では、このシグナルを、物理的な削除とも、論理的な削除とも、リスト解除とも、自由に解釈できます。 たとえば、NuGet.Server (以前の V2 API のみをサポートするサーバー実装) では、構成オプションに基づいてこの要求をリスト解除または物理的な削除として処理できます。

DELETE https://www.nuget.org/api/v2/package/{ID}/{VERSION}

要求パラメーター

名前 / タイプ 必須 メモ
ID URL string はい 削除するパッケージの ID
VERSION URL string はい 削除するパッケージのバージョン
X-NuGet-ApiKey ヘッダー string はい たとえば、X-NuGet-ApiKey: {USER_API_KEY} のように指定します。

回答

状態コード 意味
204 パッケージが削除されました
404 指定された IDVERSION のパッケージが存在しません

パッケージを再度リストに登録する

パッケージがリストに登録されていない場合は、"再リスト" エンドポイントを使用して、そのパッケージを検索結果に再び表示できます。 このエンドポイントの形状は削除 (リスト解除) エンドポイントと同じですが、DELETE メソッドの代わりに POST HTTP メソッドを使用します。

パッケージが既にリストに登録されている場合でも、要求は成功します。

POST https://www.nuget.org/api/v2/package/{ID}/{VERSION}

要求パラメーター

名前 / タイプ 必須 メモ
ID URL string はい リストに再登録するパッケージの ID
VERSION URL string はい リストに再登録するパッケージのバージョン
X-NuGet-ApiKey ヘッダー string はい たとえば、X-NuGet-ApiKey: {USER_API_KEY} のように指定します。

回答

状態コード 意味
200 パッケージがリストに登録されました
404 指定された IDVERSION のパッケージが存在しません