RESTful hypermedia API for Plone.
Python Other
Latest commit afb0142 Feb 22, 2017 @tisto tisto committed on GitHub Merge pull request #209 from plone/issue-208
Add documentation for types endpoint schema.
Failed to load latest commit information.
docs/source Be consistent and always use the zope.schema import for the types sch… Feb 21, 2017
src/plone Make date and datetime fields provide a 'widget' attribute. Feb 21, 2017
.coveragerc Add .coveragerc file. Oct 2, 2015
.gitignore Add npm-debug.log to .gitignore, remove bower_components. Oct 5, 2016
.landscape.yml Make landscape ignore pylint inherit-non-class. Jul 11, 2015
.travis.yml Fail tests on uncommitted changes to docs/source/_json: Aug 7, 2016
CHANGES.rst Add documentation for types endpoint schema. Feb 21, 2017
CONTRIBUTORS.rst Add contributors to give people the proper credit they deseve. May 29, 2016 Add Jul 14, 2016
README.rst Fix spelling Oct 13, 2016
base.cfg Fail tests on uncommitted changes to docs/source/_json: Aug 7, 2016 -> to make heroku happy. Feb 9, 2016
buildout.cfg Add test setup for Plone 5.0 Feb 7, 2016
heroku.cfg heroku: do not pin pytz. Aug 15, 2016
performance.jmx Reduce # of threads to 1. More threads on write lead to conflict erro… May 22, 2016
plog2015.rst Add plog2015 notes. Apr 17, 2015
plone-4.3.x-performance.cfg Add performance test buildout for Plone 4.3. Several fixes. May 22, 2016
plone-4.3.x.cfg Use latest p.a.contenttypes for Plone 4.3.9 Jun 3, 2016
plone-5.0.x-performance.cfg Add Plone5 performance testing setup. May 19, 2016
plone-5.0.x.cfg Upgrade to Plone 5.0.6. Feb 8, 2017
plone-conference-2014-open-space.rst Update plone-conference-2014-open-space.rst Nov 4, 2014
requirements.txt Add requirements.txt for readthedocs. Jul 12, 2015
setup.cfg Move src dir one level up. Dec 27, 2014 Back to development: 1.0a9 Jan 12, 2017
swagger-siteroot.yaml initial basic swagger yaml May 17, 2016 Fail tests on uncommitted changes to docs/source/_json: Aug 7, 2016
travis.cfg Add test setup for Plone 5.0 Feb 7, 2016
versions.cfg Pin twine to 1.8.1. Nov 30, 2016

README.rst Code Health 'Stories in Ready'


plone.restapi is a RESTful hypermedia API for Plone.

RESTful Hypermedia API

REST stands for Representational State Transfer. It is a software architectural principle to create loosely coupled web APIs.

Most web APIs have a tight coupling between client and server. This makes them brittle and hard to change over time. It requires them not only to fully document every small detail of the API, but also write a client implementation that follows that specification 100% and breaks as soon as you change any detail.

A hypermedia API just provides an entry point to the API that contains hyperlinks the clients can follow. Just like a human user of a regular website, that knows the initial URL of a website and then follows hyperlinks to navigate through the site. This has the advantage that the client just needs to understand how to detect and follow links. The URL and other details of the API can change without breaking the client.



Live Demo

Heroku live demo::


You will need some kind of API browser application to explore the API. We recommend to use Postman.

Design Decisions

  • A truly RESTful API (Hypermedia / HATEOAS / Linked-data)
  • JSON is the main target format, support other formats (HTML, XML) later
  • Use HTTP headers (to set format and versioning, also provide URL-based option to make it easier for people to try it out)
  • No versioning, version in the HTTP header can be added later
  • Field names just map over (we will not try to clean up attributes or enforce naming standards like pep8 (e.g. isPrincipiaFoldish -> is_folderish)

Software Quality

  • 100% Test Coverage
  • 100% PEP8 compliant

Further Reading



The project is licensed under the GPLv2.