====== Licenses API ======
[[dido:public:ra:xapend:xapend.b_stds:defact:odc:tools:start| return to the Open Data Common Resources and Tools ]]
//The Open Definition states: "A piece of content or data is open if anyone is free to use, reuse, and redistribute it — subject only, at most, to the requirement to attribute and share-alike." [[dido:public:ra:xapend:xapend.b_stds:defact:odc:tools:open_definition]]//
===== Data on more than 100 open licenses =====
[[dido:public:ra:xapend:xapend.b_stds:defact:odc:tools:licenses_api | Return to Top]]
//Including all [[https://opensource.org/licenses | Open Source Initiative (OSI)]] approved open source licenses and all Open Definition conformant open data and content licenses. Provided in easy to use, machine readable [[dido:public:ra:xapend:xapend.a_glossary:j:json]] -- perfect if you need to drop a license chooser into your app.//
* [[https://opendefinition.org/licenses/api/#all-licenses | View the licenses available]]
===== License Groups =====
[[dido:public:ra:xapend:xapend.b_stds:defact:odc:tools:licenses_api | Return to Top]]
In addition various generic groups are provided that are useful when constructing license choice lists, including non-commercial options, generic [[dido:public:ra:xapend:xapend.a_glossary:p:public_domain]] and more. Pre-packaged groups include:
* [[https://licenses.opendefinition.org/licenses/groups/all.json | All licenses]]
* [[https://licenses.opendefinition.org/licenses/groups/osi.json | OSI compliant]]
* [[https://licenses.opendefinition.org/licenses/groups/od.json | Open Definition compliant]]
* [[https://licenses.opendefinition.org/licenses/groups/ckan.json | Specially selected set for data and content site license choosers] developed for CKAN
===== Format =====
[[dido:public:ra:xapend:xapend.b_stds:defact:odc:tools:licenses_api | Return to Top]]
[[dido:public:ra:xapend:xapend.a_glossary:j:json]] hashes with the following keys:
{
"id": "ODC-BY-1.0",
"domain_content": false,
"domain_data": true,
"domain_software": false,
"od_conformance": "approved",
"osd_conformance": "not reviewed",
"status": "active",
"title": "Open Data Commons Attribution License 1.0",
"url": "https://opendatacommons.org/licenses/by"
}
Spot an error, think we should have more info? Please file an issue or submit a patch.
===== How do I use it? =====
[[dido:public:ra:xapend:xapend.b_stds:defact:odc:tools:licenses_api | Return to Top]]
==== Get the data ====
[[dido:public:ra:xapend:xapend.b_stds:defact:odc:tools:licenses_api | Return to Top]]
Download the licenses, either all in one, individually (see below) or in specific groups (see above).
For example, here's how to use curl to access an individual license:
* **curl** [[https://licenses.opendefinition.org/licenses/ODC-BY-1.0.json]]
And here's how to use curl to access the CKAN license group:
* **curl** [[https://licenses.opendefinition.org/licenses/groups/ckan.json]]
==== Git Access ====
[[dido:public:ra:xapend:xapend.b_stds:defact:odc:tools:licenses_api | Return to Top]]
You can also get the material as a git repo:
* **git clone** [[https://github.com/okfn/licenses]]
Javascript Access (JSONP)
We also provide a simple way to get direct access from javascript in the browser using JSONP, by providing versions of the all of the data in the jsonp subdirectory wrapped in a callback function named
license_callback
* **NOTE:** [[https://en.wikipedia.org/wiki/JSONP | JSONP is vulnerable to the data source]] replacing the innocuous function call with malicious code, which is why it has been superseded by [[https://en.wikipedia.org/wiki/Cross-origin_resource_sharing | Cross-origin resource sharing]] (available since 2009((
__Cross-Origin Resource Sharing__,
[[https://caniuse.com/cors | Can I use]]
Retrieved 4 May 2020.
))) in modern applications.
Thus, the JSONP version of a file named:
xyz.json
whether it is a license group or an individual license, will be located at:
licenses/jsonp/xyz.json
For example from jQuery:
$.ajax({
url:'https://licenses.opendefinition.org/groups/jsonp/ODC-BY-1.0.js',
dataType: 'jsonp',
// you *must* set the callback function to be license_callback
jsonpCallback: 'license_callback',
success: function(data) {
console.log('License title is ' + data.title);
}
});
Because our JSONP data is served from a static files, it has a hardcoded callback function and therefore must name your callback function for the JSONP request
license_callback
/**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
/* To add a discussion page to this page, comment out the line that says
~~DISCUSSION:off~~
*/
~~DISCUSSION:on|Outstanding Issues~~
~~DISCUSSION:off~~