패키지 메타데이터
NuGet V3 API를 사용하여 패키지 원본에서 사용할 수 있는 패키지에 대한 메타데이터를 가져올 수 있습니다. 이 메타데이터는 서비스 인덱스에서 찾은 리소스를 RegistrationsBaseUrl
사용하여 가져올 수 있습니다.
아래에 RegistrationsBaseUrl
있는 문서의 컬렉션은 종종 "등록" 또는 "등록 Blob"이라고 합니다. 단일 RegistrationsBaseUrl
아래의 문서 집합을 "등록 하이브"라고 합니다. 등록 하이브에는 패키지 원본에서 사용할 수 있는 모든 패키지에 대한 메타데이터가 포함됩니다.
참고 항목
패키지 메타데이터 리소스에 패키지에 대한 메타데이터가 모두 포함되어 있지는 않습니다. 검색 리소스를 사용하여 패키지의 소유자, 다운로드 또는 접두사 예약 상태 찾습니다.
버전 관리
다음 @type
값이 사용됩니다.
@type 값 | 주의 |
---|---|
RegistrationsBaseUrl | 초기 릴리스 |
RegistrationsBaseUrl/3.0.0-beta | RegistrationsBaseUrl 의 별칭 |
RegistrationsBaseUrl/3.0.0-rc | RegistrationsBaseUrl 의 별칭 |
RegistrationsBaseUrl/3.4.0 | Gzipped 응답 |
RegistrationsBaseUrl/3.6.0 | SemVer 2.0.0 패키지 포함 |
이는 다양한 클라이언트 버전에 사용할 수 있는 세 개의 고유한 등록 하이브를 나타냅니다.
RegistrationsBaseUrl
이러한 등록은 압축되지 않습니다(암시 Content-Encoding: identity
적 사용을 의미). SemVer 2.0.0 패키지는 이 하이브에서 제외됩니다.
RegistrationsBaseUrl/3.4.0
이러한 등록은 .를 사용하여 Content-Encoding: gzip
압축됩니다. SemVer 2.0.0 패키지는 이 하이브에서 제외됩니다.
RegistrationsBaseUrl/3.6.0
이러한 등록은 .를 사용하여 Content-Encoding: gzip
압축됩니다. SemVer 2.0.0 패키지는 이 하이브에 포함됩니다.
SemVer 2.0.0에 대한 자세한 내용은 nuget.org 대한 SemVer 2.0.0 지원을 참조하세요.
기준 URL
다음 API의 기본 URL은 afore멘션ed 리소스 @type
값과 연결된 속성의 값입니다@id
. 다음 문서에서 자리 표시자 기준 URL {@id}
이 사용됩니다. 기본 URL은 패키지 원본 내의 구현 또는 인프라 변경에 따라 변경될 수 있으므로 클라이언트 소프트웨어에서 서비스 인덱스에서 동적으로 가져와야 합니다.
HTTP 메서드
등록 리소스에 있는 모든 URL은 HTTP 메서드 GET
및 HEAD
를 지원합니다.
등록 인덱스
등록 리소스는 패키지 ID별로 패키지 메타데이터를 그룹화합니다. 한 번에 둘 이상의 패키지 ID에 대한 데이터를 가져올 수 없습니다. 이 리소스는 패키지 ID를 검색할 수 있는 방법을 제공하지 않습니다. 대신 클라이언트는 원하는 패키지 ID를 이미 알고 있는 것으로 간주됩니다. 각 패키지 버전에 대해 사용 가능한 메타데이터는 서버 구현에 따라 다릅니다. 패키지 등록 Blob에는 다음과 같은 계층 구조가 있습니다.
- 인덱스: 동일한 패키지 ID를 가진 원본의 모든 패키지에서 공유하는 패키지 메타데이터의 진입점입니다.
- 페이지: 패키지 버전의 그룹화입니다. 페이지의 패키지 버전 수는 서버 구현에 의해 정의됩니다.
- 리프: 단일 패키지 버전과 관련된 문서입니다.
등록 인덱스의 URL은 예측 가능하며 패키지 ID와 서비스 인덱스의 @id
등록 리소스 값이 지정된 클라이언트에 의해 결정될 수 있습니다. 등록 페이지 및 나뭇잎에 대한 URL은 등록 인덱스를 검사하여 검색됩니다.
등록 페이지 및 나뭇잎
서버 구현에서 등록 리프를 별도의 등록 페이지 문서에 저장할 필요는 없지만 클라이언트 쪽 메모리를 절약하는 것이 좋습니다. 인덱스의 모든 등록 잎을 인덱스에 인라인 처리하거나 페이지 문서에 나뭇잎을 즉시 저장하는 대신, 서버 구현에서 패키지 버전 수 또는 패키지 잎의 누적 크기에 따라 두 방법 중에서 선택할 수 있는 추론을 정의하는 것이 좋습니다.
등록 인덱스에 모든 패키지 버전(리프)을 저장하면 패키지 메타데이터를 가져오는 데 필요한 HTTP 요청 수가 절약되지만 더 큰 문서를 다운로드해야 하며 더 많은 클라이언트 메모리를 할당해야 합니다. 반면, 서버 구현에서 등록을 별도의 페이지 문서에 즉시 저장하는 경우 클라이언트는 필요한 정보를 얻기 위해 더 많은 HTTP 요청을 수행해야 합니다.
nuget.org 사용하는 추론은 다음과 같습니다. 패키지 버전이 128개 이상인 경우 잎을 64 크기의 페이지로 나꿉니다. 버전이 128개 미만인 경우 모든 인라인이 등록 인덱스로 남습니다. 즉, 버전이 65~127인 패키지는 인덱스에 두 페이지가 있지만 두 페이지 모두 인라인됩니다.
GET {@id}/{LOWER_ID}/index.json
요청 매개 변수
속성 | In | Type | Required | 주의 |
---|---|---|---|---|
LOWER_ID | URL | string | 예 | 패키지 ID(소문자) |
값은 LOWER_ID
에 의해 구현된 규칙을 사용하여 소문자를 지정하는 원하는 패키지 ID입니다. NET의 메서드입니다 System.String.ToLowerInvariant()
.
응답
응답은 다음 속성을 가진 루트 개체가 있는 JSON 문서입니다.
속성 | Type | Required | 주의 |
---|---|---|---|
count | 정수 | 예 | 인덱스의 등록 페이지 수 |
항목 | 개체의 배열 | 예 | 등록 페이지의 배열 |
인덱스 개체의 items
배열에 있는 각 항목은 등록 페이지를 나타내는 JSON 개체입니다.
등록 페이지 개체
등록 인덱스에서 찾은 등록 페이지 개체에는 다음과 같은 속성이 있습니다.
속성 | Type | Required | 주의 |
---|---|---|---|
@id | string | 예 | 등록 페이지의 URL |
count | 정수 | 예 | 페이지의 등록 잎 수 |
항목 | 개체의 배열 | 아니요 | 등록 잎 및 해당 연결 메타데이터의 배열 |
lower | string | 예 | 페이지에서 가장 낮은 SemVer 2.0.0 버전(포함) |
parent | string | 아니요 | 등록 인덱스 URL |
upper | string | 예 | 페이지에서 가장 높은 SemVer 2.0.0 버전(포함) |
페이지 개체의 범위 및 upper
범위는 lower
특정 페이지 버전에 대한 메타데이터가 필요한 경우에 유용합니다.
이러한 범위를 사용하여 필요한 유일한 등록 페이지를 가져올 수 있습니다. 버전 문자열은 NuGet의 버전 규칙을 준수 합니다. 버전 문자열은 정규화되며 빌드 메타데이터를 포함하지 않습니다. NuGet 에코시스템의 모든 버전과 마찬가지로 버전 문자열 비교는 SemVer 2.0.0 버전 우선 순위 규칙을 사용하여 구현됩니다.
등록 parent
페이지 개체에 속성이 있는 경우에만 속성이 items
표시됩니다.
items
등록 페이지 개체에 속성이 없으면 지정된 @id
URL을 사용하여 개별 패키지 버전에 대한 메타데이터를 가져와야 합니다. 배열은 items
경우에 따라 페이지 개체에서 최적화로 제외됩니다. 단일 패키지 ID의 버전 수가 매우 큰 경우 등록 인덱스 문서는 특정 버전 또는 작은 버전의 범위만 신경 쓰는 클라이언트에 대해 처리하는 데 막대하고 낭비됩니다.
속성이 items
있는 경우 모든 페이지 데이터가 이미 속성에 @id
인라인되어 items
있으므로 속성을 사용할 필요가 없습니다.
페이지 개체 배열의 items
각 항목은 등록 리프를 나타내는 JSON 개체이며 연결된 메타데이터입니다.
페이지의 등록 리프 개체
등록 페이지에 있는 등록 리프 개체에는 다음과 같은 속성이 있습니다.
속성 | Type | Required | 주의 |
---|---|---|---|
@id | string | 예 | 등록 리프의 URL |
catalogEntry | 개체 | 예 | 패키지 메타데이터를 포함하는 카탈로그 항목 |
packageContent | string | 예 | 패키지 콘텐츠의 URL(.nupkg) |
각 등록 리프 개체는 단일 패키지 버전과 연결된 데이터를 나타냅니다.
카탈로그 항목
catalogEntry
등록 리프 개체의 속성에는 다음과 같은 속성이 있습니다.
속성 | Type | Required | 주의 |
---|---|---|---|
@id | string | 예 | 이 개체를 생성하는 데 사용되는 문서의 URL입니다. |
authors | 문자열 또는 문자열 배열 | 아니요 | |
dependencyGroups | 개체의 배열 | 아니요 | 대상 프레임워크별로 그룹화된 패키지의 종속성 |
Deprecation | 개체 | 아니요 | 패키지와 연결된 사용 중단 |
description | string | 아니요 | |
iconUrl | string | 아니요 | |
id | string | 예 | 패키지의 ID |
언어 | string | 아니요 | |
licenseUrl | string | 아니요 | |
licenseExpression | string | 아니요 | |
나열 | 부울 값 | 아니요 | 없는 경우 나열된 것으로 간주되어야 합니다. |
minClientVersion | string | 아니요 | |
packageContent | string | 아니요 | 부모 개체에서 동일한 속성의 중복으로, 레거시 이유로만 포함됨 |
projectUrl | string | 아니요 | |
published | string | 아니요 | 패키지가 게시된 시점의 ISO 8601 타임스탬프가 포함된 문자열 |
readmeUrl | string | 아니요 | 패키지 추가 정보 렌더링(HTML 웹 페이지) 보기에 대한 URL |
requireLicenseAcceptance | 부울 값 | 아니요 | |
요약 | string | 아니요 | |
tags | 문자열 또는 문자열 배열 | 아니요 | |
title | string | 아니요 | |
version | string | 예 | 정규화 후의 전체 버전 문자열 |
취약성 | 개체의 배열 | 아니요 | 패키지의 보안 취약성 |
패키지 version
속성은 정규화 후의 전체 버전 문자열입니다. 즉, SemVer 2.0.0 빌드 데이터를 여기에 포함할 수 있습니다.
이 dependencyGroups
속성은 대상 프레임워크별로 그룹화된 패키지의 종속성을 나타내는 개체의 배열입니다. 패키지에 종속성이 없거나, dependencyGroups
속성이 없거나, 빈 배열이거나 dependencies
, 모든 그룹의 속성이 비어 있거나 누락된 경우
속성 값 licenseExpression
은 NuGet 라이선스 식 구문을 준수 합니다.
참고 항목
nuget.org 패키지가 published
목록에 없는 경우 값은 1900년으로 설정됩니다.
패키지 종속성 그룹
각 종속성 그룹 개체에는 다음과 같은 속성이 있습니다.
속성 | Type | Required | 주의 |
---|---|---|---|
targetFramework | string | 아니요 | 이러한 종속성이 적용되는 대상 프레임워크 |
종속성 | 개체의 배열 | 아니요 |
이 문자열은 targetFramework
NuGet의 .NET 라이브러리 NuGet.Frameworks에서 구현하는 형식을 사용합니다. 지정하지 targetFramework
않으면 종속성 그룹이 모든 대상 프레임워크에 적용됩니다.
이 dependencies
속성은 각각 현재 패키지의 패키지 종속성을 나타내는 개체의 배열입니다.
패키지 종속성
각 패키지 종속성에는 다음과 같은 속성이 있습니다.
속성 | Type | Required | 주의 |
---|---|---|---|
id | string | 예 | 패키지 종속성의 ID |
range | 개체 | 아니요 | 종속성의 허용된 버전 범위 |
등록 | string | 아니요 | 이 종속성에 대한 등록 인덱스 URL |
속성이 range
제외되거나 빈 문자열인 경우 클라이언트는 기본적으로 버전 범위 (, )
로 설정해야 합니다. 즉, 종속성의 모든 버전이 허용됩니다. 속성 값 *
은 허용되지 range
않습니다.
패키지 사용 중단
각 패키지 사용 중단에는 다음과 같은 속성이 있습니다.
속성 | Type | Required | 주의 |
---|---|---|---|
이유 | 문자열 배열 | 예 | 패키지가 사용되지 않는 이유 |
message | string | 아니요 | 이 사용 중단에 대한 추가 세부 정보 |
alternatePackage | 개체 | 아니요 | 대신 사용해야 하는 대체 패키지 |
속성은 reasons
하나 이상의 문자열을 포함해야 하며 다음 표의 문자열만 포함해야 합니다.
이유 | 설명 |
---|---|
레거시 | 패키지가 더 이상 기본 |
CriticalBugs | 패키지에 사용하기에 적합하지 않은 버그가 있습니다. |
기타 | 이 목록에 없는 이유로 인해 패키지가 더 이상 사용되지 않습니다. |
속성에 reasons
알려진 집합이 아닌 문자열이 포함되어 있으면 무시해야 합니다. 문자열은 대/소문자를 구분하지 않으므로 legacy
Legacy
. 배열에는 순서 제한이 없으므로 임의의 순서로 문자열을 정렬할 수 있습니다. 또한 속성에 알려진 집합이 아닌 문자열만 포함된 경우 "Other" 문자열만 포함된 것처럼 처리해야 합니다.
대체 패키지
대체 패키지 개체에는 다음과 같은 속성이 있습니다.
속성 | Type | Required | 주의 |
---|---|---|---|
id | string | 예 | 대체 패키지의 ID |
range | 개체 | 아니요 | 허용되는 버전 범위 또는 * 버전이 허용되는 경우 |
취약성
vulnerability
개체의 배열입니다. 각 취약성에는 다음과 같은 속성이 있습니다.
속성 | Type | Required | 주의 |
---|---|---|---|
advisoryUrl | string | 예 | 패키지의 보안 권고 위치 |
severity | string | 예 | 권고 심각도: "0" = Low, "1" = Moderate, "2" = High, "3" = Critical |
샘플 요청
GET https://api.nuget.org/v3/registration-sample/nuget.server.core/index.json
기본 URL 섹션에 멘션 대로 서비스 인덱스에서 기본 URL(https://api.nuget.org/v3/registration-sample/
이 샘플)을 가져와야 합니다.
샘플 응답
{
"count": 1,
"items": [
{
"@id": "https://api.nuget.org/v3/registration-sample/nuget.server.core/index.json#page/3.0.0-beta/3.0.0-beta",
"count": 1,
"items": [
{
"@id": "https://api.nuget.org/v3/registration-sample/nuget.server.core/3.0.0-beta.json",
"catalogEntry": {
"@id": "https://api.nuget.org/v3/catalog0/data/2017.10.05.18.41.33/nuget.server.core.3.0.0-beta.json",
"authors": ".NET Foundation",
"dependencyGroups": [
{
"@id": "https://api.nuget.org/v3/catalog0/data/2017.10.05.18.41.33/nuget.server.core.3.0.0-beta.json#dependencygroup",
"dependencies": [
{
"@id": "https://api.nuget.org/v3/catalog0/data/2017.10.05.18.41.33/nuget.server.core.3.0.0-beta.json#dependencygroup/nuget.core",
"id": "NuGet.Core",
"range": "[2.14.0, )",
"registration": "https://api.nuget.org/v3/registration-sample/nuget.core/index.json"
}
]
}
],
"description": "Core library for creating a Web Application used to host a simple NuGet feed",
"iconUrl": "",
"id": "NuGet.Server.Core",
"language": "",
"licenseUrl": "https://raw.githubusercontent.com/NuGet/NuGet.Server/dev/LICENSE.txt",
"listed": true,
"minClientVersion": "2.6",
"packageContent": "https://api.nuget.org/v3-flatcontainer/nuget.server.core/3.0.0-beta/nuget.server.core.3.0.0-beta.nupkg",
"projectUrl": "https://github.com/NuGet/NuGet.Server",
"published": "2017-10-05T18:40:32.43+00:00",
"requireLicenseAcceptance": false,
"summary": "",
"tags": [ "" ],
"title": "",
"version": "3.0.0-beta",
"vulnerabilities": [
{
"advisoryUrl": "https://github.com/advisories/ABCD-1234-5678-9012",
"severity": "2"
}
]
},
"packageContent": "https://api.nuget.org/v3-flatcontainer/nuget.server.core/3.0.0-beta/nuget.server.core.3.0.0-beta.nupkg",
"registration": "https://api.nuget.org/v3/registration-sample/nuget.server.core/index.json"
}
],
"lower": "3.0.0-beta",
"upper": "3.0.0-beta"
}
]
}
이 특정 경우 등록 인덱스에는 등록 페이지가 인라인되어 있으므로 개별 패키지 버전에 대한 메타데이터를 가져오는 데 추가 요청이 필요하지 않습니다.
등록 페이지
등록 페이지에는 등록 잎이 포함되어 있습니다. 등록 페이지를 가져올 URL은 위에서 멘션 등록 페이지 개체의 속성에 의해 @id
결정됩니다. URL은 예측 가능하지 않으며 항상 인덱스 문서를 통해 검색해야 합니다.
Warning
nuget.org 등록 페이지 문서의 URL은 우연히 페이지의 하한 및 상한을 포함합니다. 그러나 인덱스 문서에 유효한 링크가 있는 한 서버 구현에서 URL의 모양을 자유롭게 변경할 수 있으므로 클라이언트에서 이 가정을 해서는 안 됩니다.
배열이 items
등록 인덱스에 제공되지 않으면 값의 @id
HTTP GET 요청은 개체가 루트인 JSON 문서를 반환합니다. 개체의 속성은 다음과 같습니다.
속성 | Type | Required | 주의 |
---|---|---|---|
@id | string | 예 | 등록 페이지의 URL |
count | 정수 | 예 | 페이지의 등록 잎 수 |
항목 | 개체의 배열 | 예 | 등록 잎 및 해당 연결 메타데이터의 배열 |
lower | string | 예 | 페이지에서 가장 낮은 SemVer 2.0.0 버전(포함) |
parent | string | 예 | 등록 인덱스 URL |
upper | string | 예 | 페이지에서 가장 높은 SemVer 2.0.0 버전(포함) |
등록 리프 개체의 모양은 위의 등록 인덱스와 동일합니다.
샘플 요청
GET https://api.nuget.org/v3/registration-sample/ravendb.client/page/1.0.531/1.0.729-unstable.json
기본 URL 섹션에 멘션 대로 서비스 인덱스에서 기본 URL(https://api.nuget.org/v3/registration-sample/
이 샘플)을 가져와야 합니다.
샘플 응답
{
"count": 2,
"lower": "1.0.531",
"parent": "https://api.nuget.org/v3/registration-sample/nuget.protocol.v3.example/index.json",
"upper": "1.0.729-unstable",
"items": [
{
"@id": "https://api.nuget.org/v3/registration-sample/nuget.protocol.v3.example/1.0.531.json",
"@type": "Package",
"commitId": "e0b9ca79-75b5-414f-9e3e-de9534b5cfd1",
"commitTimeStamp": "2017-10-26T14:12:19.3439088Z",
"catalogEntry": {
"@id": "https://api.nuget.org/v3/catalog0/data/2015.02.01.11.38.37/nuget.protocol.v3.example.1.0.531.json",
"@type": "PackageDetails",
"authors": "NuGet.org Team",
"iconUrl": "https://www.nuget.org/Content/gallery/img/default-package-icon.svg",
"id": "NuGet.Protocol.V3.Example",
"licenseUrl": "http://www.opensource.org/licenses/ms-pl",
"listed": false,
"packageContent": "https://api.nuget.org/v3-flatcontainer/nuget.protocol.v3.example/1.0.531/nuget.protocol.v3.example.1.0.531.nupkg",
"projectUrl": "https://github.com/NuGet/NuGetGallery",
"published": "1900-01-01T00:00:00+00:00",
"requireLicenseAcceptance": true,
"title": "NuGet V3 Protocol Example",
"version": "1.0.531"
},
"packageContent": "https://api.nuget.org/v3-flatcontainer/nuget.protocol.v3.example/1.0.531/nuget.protocol.v3.example.1.0.531.nupkg",
"registration": "https://api.nuget.org/v3/registration-sample/nuget.protocol.v3.example/index.json"
},
{
"@id": "https://api.nuget.org/v3/registration-sample/nuget.protocol.v3.example/1.0.729-unstable.json",
"@type": "Package",
"commitId": "e0b9ca79-75b5-414f-9e3e-de9534b5cfd1",
"commitTimeStamp": "2017-10-26T14:12:19.3439088Z",
"catalogEntry": {
"@id": "https://api.nuget.org/v3/catalog0/data/2015.02.01.18.22.05/nuget.protocol.v3.example.1.0.729-unstable.json",
"@type": "PackageDetails",
"authors": "NuGet.org Team",
"deprecation": {
"reasons": [
"CriticalBugs"
],
"message": "This package is unstable and broken!",
"alternatePackage": {
"id": "Newtonsoft.JSON",
"range": "12.0.2"
}
},
"iconUrl": "https://www.nuget.org/Content/gallery/img/default-package-icon.svg",
"id": "NuGet.Protocol.V3.Example",
"licenseUrl": "http://www.opensource.org/licenses/ms-pl",
"listed": false,
"packageContent": "https://api.nuget.org/v3-flatcontainer/nuget.protocol.v3.example/1.0.729-unstable/nuget.protocol.v3.example.1.0.729-unstable.nupkg",
"projectUrl": "https://github.com/NuGet/NuGetGallery",
"published": "1900-01-01T00:00:00+00:00",
"requireLicenseAcceptance": true,
"summary": "This package is an example for the V3 protocol.",
"title": "NuGet V3 Protocol Example",
"version": "1.0.729-Unstable"
},
"packageContent": "https://api.nuget.org/v3-flatcontainer/nuget.protocol.v3.example/1.0.729-unstable/nuget.protocol.v3.example.1.0.729-unstable.nupkg",
"registration": "https://api.nuget.org/v3/registration-sample/nuget.protocol.v3.example/index.json"
}
]
}
등록 리프
등록 리프에는 특정 패키지 ID 및 버전에 대한 정보가 포함됩니다. 이 문서에서는 특정 버전에 대한 메타데이터를 사용할 수 없습니다. 패키지 메타데이터는 등록 인덱스 또는 등록 페이지(등록 인덱스로 검색됨)에서 가져와야 합니다.
등록 리프를 가져오는 URL은 등록 인덱스 또는 등록 페이지의 등록 리프 개체 속성에서 가져옵니다 @id
. 페이지 문서와 마찬가지로 URL은 예측 가능하지 않으며 항상 등록 페이지 개체를 통해 검색해야 합니다.
Warning
nuget.org 등록 리프 문서의 URL은 우연히 패키지 버전을 포함합니다. 그러나 부모 문서에 유효한 링크가 있는 한 서버 구현에서 URL의 모양을 자유롭게 변경할 수 있으므로 클라이언트에서 이 가정을 해서는 안 됩니다.
등록 리프는 다음 속성을 가진 루트 개체가 있는 JSON 문서입니다.
속성 | Type | Required | 주의 |
---|---|---|---|
@id | string | 예 | 등록 리프의 URL |
catalogEntry | string | 아니요 | 이러한 리프를 생성한 카탈로그 항목의 URL |
나열 | 부울 값 | 아니요 | 없는 경우 나열된 것으로 간주되어야 합니다. |
packageContent | string | 아니요 | 패키지 콘텐츠의 URL(.nupkg) |
published | string | 아니요 | 패키지가 게시된 시점의 ISO 8601 타임스탬프가 포함된 문자열 |
등록 | string | 아니요 | 등록 인덱스 URL |
참고 항목
nuget.org 패키지가 published
목록에 없는 경우 값은 1900년으로 설정됩니다.
샘플 요청
GET https://api.nuget.org/v3/registration-sample/nuget.versioning/4.3.0.json
기본 URL 섹션에 멘션 대로 서비스 인덱스에서 기본 URL(https://api.nuget.org/v3/registration-sample/
이 샘플)을 가져와야 합니다.
샘플 응답
{
"@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/4.3.0.json",
"catalogEntry": "https://api.nuget.org/v3/catalog0/data/2017.08.11.18.24.22/nuget.versioning.4.3.0.json",
"listed": true,
"packageContent": "https://api.nuget.org/v3-flatcontainer/nuget.versioning/4.3.0/nuget.versioning.4.3.0.nupkg",
"published": "2017-08-11T18:24:14.36+00:00",
"registration": "https://api.nuget.org/v3/registration-sample/nuget.versioning/index.json"
}