Протоколы 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 (необязательно), не существует |