Neutron - Remote Content Authoring API

Open Specification Request 101

Version: 0.0.1

Revision Date: 17 August 2006

Editors:
Thomas Comiotto comiotto@rcfmedia.ch
Michael Wechner michael.wechner@wyona.com
Guido Wesdorp guido@infrae.com
Andreas Wuest awuest@student.ethz.ch

Table of contents

  1. Introduction
  2. Basic terms and concepts
  3. Introspection
    1. Introspection Link
    2. Introspection File
    3. Navigational Information
    4. Topic Maps
  4. Authentication / Authorization
  5. Remote File Operations
    1. New
    2. Open
    3. Save
    4. Save As
    5. Exit
    6. Close
    7. Close All
    8. Save All
    9. Hypertext Link Lookup
  6. Editing
  7. Search
  8. Revisions
  9. Scheduling

Introduction

Neutron is an xml-based application level protocol for remote content authoring. Neutron provides a set of methods and configuration directives that allow for:

Neutron has been been started as an effort to provide a generic API to what common Content Management Systems (CMS) support with respect to content authoring. CMS vendors usually implement their own frontend components for content authoring and/or implement a public API for third party component integration. Neutron is ment to be an open standard that leverages integration and reuse of third party components such as editing applications or standalone clients targeted at offline operation. While targeted at large scale content management systems, Neutron can also be used for accessing lightweight content repositories, datastores or remote file systems.

Neutron is typically used over HTTP. However, Neutron can be run on top of any other transport protocol if feasable.

Neutron provides a comprehensive set of instructions for dealing with xml-based resources. Usage of xml-based resources is not required though. Neutron also covers transactions of binary or custom formatted data while being extensible enough for integrators to deal with the data formats of their choice.

Compared to other open content authoring standards Neutron is higher-level than WebDAV and lower-level that ATOM, to name two prominent examples in that field. While WebDAV operates on Web resources Neutron operates on content servers that might expose their resources to the web. While ATOM is targeted at content syndication Neutron provides a generic API to content authoring.

For examples and usage patterns see Appendix I (Examples).

Basic terms and concepts

Neutron Methods

Neutron defines a set of methods and corresponding exception types for operating on remote resources:

open
save
lock
unlock
checkout
Convenience Mehod for open + lock
checkin
convenience method for save + unlock
These methods can be assigned to arbitrary commandURLs. If a content server must adhere to some url namespace policy, Neutron has been designed to be flexible enough to support it.

Example - Saving a resource over HTTP using PUT

Method: save
CommandURL: http://foo.bar.com/foo.html?neutron.cmd=save
Neutron representation: ]]>

Example - Saving a resource over HTTP by using POST. Single service endpoint

Method: save
CommandURL: http://foo.bar.com/neutron?cmd=save&file=somefile
Neutron representation: ]]>

Initiating a Neutron request/response chain

A Neutron request/response chain is initiated by issuing a set of configuration directives that contain: These configuration directives are contained in a Neutron Introspection File and provided by the content server.

Example - Introspection file


  
    
    
    
  

]]>

View templates can be shared between multiple resources. This is needed in situations where a processed resource consists of several otherwise unrelated resources - for instance a xml-based resource being transformed to a single html page after having aggregated a couple of rss-feeds. A view template is considered a shared template if the template directives of individual resources listed in the introspection file point to the same view template. Shared view templates need to include all relevant resources by providing xi:include directives for all those resources.

Example - shared View template


  
    A document containinig a rss feed
  
  
    
    
  
  
    
  
  
    
  

]]>

Example - sharing a View template


  
    
    
  
  
    
    
  

]]>

Resource Sets

Neutron supports synchronized transactions of multiple resources by adding them to a resource set. A method call on any member of a resource set leads to executing the same method on all other members of the resource set. A method call on any member of a resource set can only be considered successful if the same method can be executed successfully on any other member of the resource set and otherwise will be reverted. A typical usecase for a resource set is when dealing with metadata contained in a seperate resource. For instance, given a resource set that contains resource A and another resource B that holds metadata of A, Neutron enabled applications can make sure that document and metadata are opened, locked, saved, unlocked together.

Example - Resource set


  
    
      
    
    
      
    
  

]]>

Introspection

The communication between the client and server can be initialized by introspection. This also allows the server to tell the client of it's capabilities (e.g. level 1, 2, 3 compliance). Also see the specification of Atom resp. http://bitworking.org/projects/atom/.

Finding the introspection file (auto-discovery)




  
    
  

]]>
        

An example of an introspection file