Autocomplete
It is possible to build a package ID and version autocomplete experience using the V3 API. The resource used for making
autocomplete queries is the SearchAutocompleteService
resource found in the service index.
Versioning
The following @type
values are used:
@type value | Notes |
---|---|
SearchAutocompleteService | The initial release |
SearchAutocompleteService/3.0.0-beta | Alias of SearchAutocompleteService |
SearchAutocompleteService/3.0.0-rc | Alias of SearchAutocompleteService |
SearchAutocompleteService/3.5.0 | Includes support for packageType query parameter |
SearchAutocompleteService/3.5.0
This version introduces support for the packageType
query parameter, allowing filtering by author defined package types. It is fully backwards compatible with queries to SearchAutocompleteService
.
Base URL
The base URL for the following APIs is the value of the @id
property associated with one of the aforementioned
resource @type
values. In the following document, the placeholder base URL {@id}
will be used. The base URL may change based on implementation or infrastructure changes within the package source so it must be dynamically fetched from the service index by the client software.
HTTP Methods
All URLs found in the registration resource support the HTTP methods GET
and HEAD
.
Search for package IDs
The first autocomplete API supports searching for part of a package ID string. This is great when you want to provide a package typeahead feature in a user interface integrated with a NuGet package source.
A package with only unlisted versions will not appear in the results.
GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL}&packageType={PACKAGETYPE}
Request parameters
Name | In | Type | Required | Notes |
---|---|---|---|---|
q | URL | string | no | The string to compare against package IDs |
skip | URL | integer | no | The number of results to skip, for pagination |
take | URL | integer | no | The number of results to return, for pagination |
prerelease | URL | boolean | no | true or false determining whether to include pre-release packages |
semVerLevel | URL | string | no | A SemVer 1.0.0 version string |
packageType | URL | string | no | The package type to use to filter packages (added in SearchAutocompleteService/3.5.0 ) |
The autocomplete query q
is parsed in a manner that is defined by the server implementation. nuget.org supports
querying for the prefix of package ID tokens, which are pieces of the ID produced by splitting the original by camel
case and symbol characters.
The skip
parameter defaults to 0.
The take
parameter should be an integer greater than zero. The server implementation may impose a maximum value.
If prerelease
is not provided, pre-release packages are excluded.
The semVerLevel
query parameter is used to opt-in to
SemVer 2.0.0 packages.
If this query parameter is excluded, only package IDs with SemVer 1.0.0 compatible versions will be returned (with the
standard NuGet versioning caveats, such as version strings with 4 integer pieces).
If semVerLevel=2.0.0
is provided, both SemVer 1.0.0 and SemVer 2.0.0 compatible packages will be returned. See the
SemVer 2.0.0 support for nuget.org
for more information.
The packageType
parameter is used to further filter the autocomplete results to only packages that have at least one package type matching the package type name.
If the provided package type is not a valid package type as defined by the Package Type document, an empty result will returned.
If the provided package type is empty, no filter will be applied. In other words, passing no value to the packageType
parameter will behave as if the parameter was not passed.
Response
The response is JSON document containing up to take
autocomplete results.
The root JSON object has the following properties:
Name | Type | Required | Notes |
---|---|---|---|
totalHits | integer | yes | The total number of matches, disregarding skip and take |
data | array of strings | yes | The package IDs matched by the request |
Sample request
GET https://search-sample.nuget.org/autocomplete?q=storage&prerelease=true
Make sure to fetch the base URL (https://search-sample.nuget.org/autocomplete
in this sample) from the service index as mentioned in the base URL section.
Sample response
{
"totalHits": 571,
"data": [
"WindowsAzure.Storage",
"Storage.Net",
"CK.Storage",
"NCL.Storage",
"DK.Storage",
"Nine.Storage.Test",
"Touch.Storage.Aws",
"StorageAPIClient",
"StorageAccess",
"Storage.Net.Microsoft.Azure.Storage",
"UnofficialAzure.StorageClient",
"StorageAccess12",
"AWSSDK.StorageGateway",
"StorageExtensions",
"Cloud.Storage",
"lighthouse.storage",
"ZU.Storage.Redis",
"Magicodes.Storage",
"Masticore.Storage",
"hq.storage"
]
}
Enumerate package versions
Once a package ID is discovered using the previous API, a client can use the autocomplete API to enumerate package versions for a provided package ID.
A package version that is unlisted will not appear in the results.
GET {@id}?id={ID}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL}
Request parameters
Name | In | Type | Required | Notes |
---|---|---|---|---|
id | URL | string | yes | The package ID to fetch versions for |
prerelease | URL | boolean | no | true or false determining whether to include pre-release packages |
semVerLevel | URL | string | no | A SemVer 2.0.0 version string |
If prerelease
is not provided, pre-release packages are excluded.
The semVerLevel
query parameter is used to opt-in to SemVer 2.0.0 packages. If this query parameter is excluded, only
SemVer 1.0.0 versions will be returned. If semVerLevel=2.0.0
is provided, both SemVer 1.0.0 and SemVer 2.0.0 versions
will be returned. See the SemVer 2.0.0 support for nuget.org
for more information.
Response
The response is JSON document containing all package versions of the provided package ID, filtering by the given query parameters.
The root JSON object has the following property:
Name | Type | Required | Notes |
---|---|---|---|
data | array of strings | yes | The package versions matched by the request |
The package versions in the data
array may contain SemVer 2.0.0 build metadata (e.g. 1.0.0+metadata
) if the
semVerLevel=2.0.0
is provided in the query string.
Sample request
GET https://api-v2v3search-0.nuget.org/autocomplete?id=nuget.protocol&prerelease=true
Sample response
{
"data": [
"4.3.0-preview3-4168",
"4.3.0-preview4",
"4.3.0-rtm-4324",
"4.3.0",
"4.4.0-preview3-4475",
"4.4.0"
]
}