====== 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~~