Протоколы nuget.org

Для взаимодействия с nuget.org клиентам необходимо применять определенные протоколы. Так как эти протоколы постоянно обновляются, клиенты должны указать версию протокола, используемую при вызове конкретных интерфейсов API nuget.org. Это позволяет nuget.org вносить изменения некритическим образом для старых клиентов.

Примечание.

Интерфейсы API, описанные на этой странице, относятся только к nuget.org, и не предполагается, что они будут представлены в других реализациях сервера NuGet.

Сведения об API NuGet, широко применяемом в экосистеме NuGet, см. в обзоре API.

Различные протоколы добавляются в этот раздел по мере их появления.

Протокол NuGet версии 4.1.0

Протокол 4.1.0 определяет использование ключей проверки области для взаимодействия со службами, отличными от nuget.org, для подтверждения принадлежности пакета учетной записи nuget.org. Обратите внимание, что номер версии 4.1.0 является непрозрачной строкой, но совпадает с первой версией официального клиента NuGet, который поддерживал этот протокол.

Проверка гарантирует, что создаваемые пользователем ключи API будут использоваться только с nuget.org и что результаты других проверок или подтверждений из сторонней службы обрабатываются с помощью одноразовых ключей проверки области. Эти ключи проверки области можно использовать для подтверждения принадлежности пакета определенному пользователю (учетной записи) в nuget.org.

Требование к клиенту

Клиенты должны передавать следующий заголовок при выполнении вызовов API для отправки пакетов в nuget.org:

X-NuGet-Protocol-Version: 4.1.0

Обратите внимание, что заголовок X-NuGet-Client-Version имеет схожую семантику, но он может использоваться только официальным клиентом NuGet. Сторонние клиенты должны использовать заголовок X-NuGet-Protocol-Version и значение.

Протокол отправки отдельно описан в документации по ресурсу PackagePublish.

Если клиент взаимодействует с внешними службами и должен проверить, принадлежит ли пакет определенному пользователю (учетной записи), ему следует использовать следующий протокол и ключи проверки области, а не ключи API из nuget.org.

API для запроса ключа проверки области

Этот API используется, чтобы получить ключ проверки области для автора nuget.org для подтверждения принадлежности пакета этому автору.

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

Параметры запроса

Имя. In Тип Обязательное поле Примечания.
Идентификатор URL строка yes Идентификатор пакета, для которого запрашивается ключ проверки области
ВЕРСИЯ URL строка no Версия пакета
X-NuGet-ApiKey Верхний колонтитул строка yes Например: X-NuGet-ApiKey: {USER_API_KEY}

Response

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

API для подтверждения достоверности ключа проверки области

Этот API используется для подтверждения достоверности ключа проверки области действия для пакета, принадлежащего автору в nuget.org.

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

Параметры запроса

Имя. In Тип Обязательное поле Примечания.
Идентификатор URL строка yes Идентификатор пакета, для которого запрашивается ключ проверки области
ВЕРСИЯ URL строка no Версия пакета
X-NuGet-ApiKey Верхний колонтитул строка yes Например: X-NuGet-ApiKey: {VERIFY_SCOPE_KEY}

Примечание.

Срок действия ключа API проверки области истекает через день или после первого использования, в зависимости от того, что происходит раньше.

Response

Код состояния Значение
200 Ключ API является допустимым
403 Ключ API является недопустимым или не имеет разрешений для отправки пакета
404 Пакет, на который вы ссылаетесь по ID и VERSION (необязательно), не существует