Ticket #7842 (new Feature Request)

Opened 4 years ago

Last modified 3 years ago

Support an official and complete web services API (REST)

Reported by: limi Owned by: skleinfeldt
Priority: major Milestone: Ongoing
Component: Infrastructure Keywords: focusarea
Cc: ruda_porto, reinout, cbc, nateaune, optilude, interra, siebo, cjohansen

Description


Change History

comment:1 Changed 4 years ago by ruda_porto

  • Cc ruda_porto added

comment:2 Changed 4 years ago by reinout

  • Cc reinout added

Reinout van Rees definitively wants to monitor this.

comment:3 Changed 4 years ago by cbc

  • Cc cbc added

comment:4 Changed 4 years ago by nateaune

  • Cc nateaune added

Just a reminder that there has already been some work started on this at the Boston Plone4Artists sprint in July 2007.

 http://www.openplans.org/projects/plone4artists-sprint/atrest-notes

ATRest and plone.rest were committed to the collective:  http://svn.plone.org/svn/collective/ATRest/trunk/readme.txt  http://svn.plone.org/svn/collective/ATRest/plone.rest/plone/rest/readme.txt

More work was done at the Naples sprint, also exploring cross-over with gsxml.  http://www.openplans.org/projects/plone-conference-2007/atrest-gsxml

comment:5 Changed 4 years ago by optilude

I'd suggest that there are a few components to this work:

  • Create a generic package to have a single way to publish web services (probably via REST). This should take care of things like security as well.
  • Create a generic solution to expose CRUD operations for content - should use adapters to allow different per-type policies
  • Ensure that we can read/manipulate important metadata such as workflow state, local roles etc in a consistent manner
  • Webservicify the existing GenericSetup import/export handlers. This provides a single way to manipulate portal state, and we already have XML syntax for most things that need to be modified

In my opinion, getting the first step - a generic Python API that we use to create and publish web services of any kind - is most critical. If we had a standard, accepted, sensible package that people could start depending on, then making web services should be pretty easy. The problem is that right now this task is a bit nebulous and poorly defined, so we risk either no-one starting with this process, or people implementing different services inconsistently.

comment:6 Changed 4 years ago by optilude

  • Cc optilude added

comment:7 Changed 4 years ago by timte

Just wanted to inform that there is a rest implementation for zope3:  http://svn.zope.org/z3c.rest/trunk/

Have no idea if it works in zope2, but hopefully.

comment:9 Changed 4 years ago by skleinfeldt

The people willing to help/kibbitz on this so far:

Alec Mitchell, Martin Aspeli, Ian Bicking, Christian Scholz, Raphael Ritz, Stefan Eletzhofer

comment:10 Changed 4 years ago by interra

  • Cc interra added

comment:11 Changed 4 years ago by siebo

  • Cc siebo added

comment:12 Changed 4 years ago by cjohansen

  • Cc cjohansen added

comment:13 Changed 4 years ago by skleinfeldt

A summary of the discussion on plone-dev thus far:

  • There is consensus on the use of REST (as opposed to SOAP)
  • We've defined a handful of use cases
  • Possible approaches that have been discussed are:
    • Custom XML schemas (building on GenericSetup)
    • Microformats
    • Atom Publishing Protocol
    • OpenSocial (JavaScript and Atom)
  • OAuth looks interesting for authentication
  • A generic solution for writable services is harder to envision than read-only services

A working area has been set up on OpenPlans for this project, and discussions have been transferred there:  http://www.openplans.org/projects/plone-web-services/project-home

Next steps:

  • Expand on the use cases
  • Choose between the 4 approaches identified
  • Define read-only API spec

comment:14 Changed 3 years ago by skleinfeldt

Sometimes it pays to procrastinate. On September 10, a group including EMC, IBM, Microsoft, Alfresco, Open Text, Oracle, and SAP announced a draft specification for a web services standard for content management - Content Management Interoperability Services (CMIS). The REST binding for the standard is specified as an extension to Atom and AtomPub. The draft spec will go to OASIS for ratification.

The obvious question is: should we adopt CMIS, or at least the REST part of it? Please use the OpenPlans page to discuss -  http://www.openplans.org/projects/plone-web-services If you will be at the 2008 Plone Conference, come to the Thursday BOF to discuss.

Note: See TracTickets for help on using tickets.