licenses.nuget.org

Rationale

With the introduction of the license expressions, a requirement emerged to have a reliable service that would provide a reference text for individual license identifiers, exception identifiers or license expressions. An additional requirement for this service is to have a stable URL schema, that is not susceptible to link rot, so that we can safely use it to provide backwards compatibility for older clients.

Licenses.nuget.org fulfills that role. Nuget.org uses it to provide the license text reference for packages that specify their license using a license expression. nuget pack or packing with other client tools set the licenseUrl element to point to licenses.nuget.org to provide backwards compatibility with older clients that don't support the license element.

License and exception text

The license and license exception information displayed on licenses.nuget.org is copied from the SPDX project's license list data repository. The format that the information is displayed closely mimics the format used by the SPDX website itself, e.g. see MIT on licenses.nuget.org and MIT on SPDX.org.

Licenses that are not approved by Open Source Initiative or the Free Software Foundation are not hosted on licenses.nuget.org and are excluded.

Several styles in addition to plain text are used in the display of the license. According to the SPDX license list data FAQ, red text is considered replaceable and blue text is considered omitable. For more generally information about the SPDX license list data, see their FAQ and the SPDX license template specification.

Note that the data is copied from SPDX to licenses.nuget.org by the nuget.org on an ad hoc basis. If a license identifier is approved by the Open Source Initiative or the Free Software Foundation but does not appear on licenses.nuget.org, please report an issue, and the nuget.org team work to update licenses.nuget.org and nuget.org package upload validation with the latest data from SPDX.

If you, as a package author, are not satisfied with the shared license text available on licenses.nuget.org, you can consider using embedded license text (<license type="file">) instead of a license expression for your NuGet package. This allows you to fully customize your licensing terms and include the customized text within the package.

Protocol

Licenses.nuget.org is intended to be viewed by people in their browsers, no machine-readable responses are provided. HTTPS protocol must be used and requests are expected to be constructed in a certain way. It only supports GET requests. It accepts license expressions or license exception identifiers as an input in a way specified below. Please note, that all elements of license expressions are case sensitive, and therefore all input to licenses.nuget.org is case sensitive as well.

License expressions

Request

License expressions (including the trivial cases when expression consists of a single license) have to be URL-encoded and used as a path in the request to licenses.nuget.org.

License expression URL to use
MIT https://licenses.nuget.org/MIT
(MIT) https://licenses.nuget.org/(MIT)
(LGPL-2.0-only WITH FLTK-exception OR Apache-2.0+) https://licenses.nuget.org/(LGPL-2.0-only%20WITH%20FLTK-exception%20OR%20Apache-2.0+)

The service supports only license identifiers and license exception identifiers that are accepted by nuget.org. Notably, this means only license identifiers that are approved by the Open Source Initiative or the Free Software Foundation will be accepted. All license expressions that contain unsupported license identifiers or license exception identifiers or that does not conform to license expression syntax are considered invalid.

Response

Licenses.nuget.org responds to requests containing valid license expressions with an HTTP 200 status code and a web page containing a description of the license expression:

  • if supplied license expression contains a single license identifier a web page is returned that contains that license reference text;
  • if supplied license expression is a composite license expression, a web page is returned that contains the license expression with links to individual license or license exception references.

Any requests that contain an invalid license expression result in an HTTP 404 response.

License exceptions

Request

License exception identifiers must be URL-encoded and used as a path in the request to licenses.nuget.org. Only a single license exception identifier can be supplied in a single request. No additional characters besides license exception identifier may present in the path portion of the URL.

License exception identifier URL to use
FLTK-exception https://licenses.nuget.org/FLTK-exception
openvpn-openssl-exception https://licenses.nuget.org/openvpn-openssl-exception

Response

Licenses.nuget.org responds to a request with a known license exception identifier with a HTTP 200 response and a web page containing the reference text for the specified license exception.

Any request containing an unsupported license exception identifier results in an HTTP 404 response.