You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 30 Next »

Part of 5.0 and used by the GenUIne adminCentral

ObservedManager that discovers REST endpoints at runtime configured in modules. Done.

About HTTP Methods:

  • GET and POST are supported by all browsers, the rest are quirky to say the least
  • PUT would be nice for create
  • DELETE would be nice for delete
  • IPSecurity filter blocks all but GET and POST
  • Some frameworks simluate methods using a query param named _method

REST endpoint taxonomy:

AdminCentral

login endpoint

module manager ui

Tree (.magnolia/rest/tree/<treeName>/)

Generic endpoint for tree views. A client fetches the tree configuration to build the view, subsequent calls to fetch nodes return data for each column. Each tree is served by a TreeHandler. The TreeHandler can provide functionality that is specific for its tree.

NodeData is not treated as a node in the tree. Instead a returned node in the tree contains NodeDatas that should be rendered as subnodes in the displayed tree. The returned node has column values for each NodeData.

to be decided: how is a content menu item mapped to a command? the client should have minimal knowledge of what commands exist

to be decided: searching the repository is a very special kind of function bar item, how can it be represented?

  • get child nodes
    • method: GET
    • path: .magnolia/rest/tree/<treeName>/<path>
    • arguments: treeName and path in uri
    • returns: TreeNodeList
  • get tree configuration
    • method: POST
    • path: .magnolia/rest/tree/<treeName>/config
    • arguments: treeName in uri
    • returns: JsonTreeConfiguration
  • execute command
    • method: POST
    • path: .magnolia/rest/tree/<treeName>/<path>/command
    • arguments: treeName and path in uri, parameter command is the name of the command, rest of parameters are used by the actual command
    • returns: depends on the command, must be able to also output a message (AlertUtil-style)

Commands include:

  • create content
    • arguments: optional name (defaults to 'untitled'), itemType
    • returns: a TreeNodeList with only the newly created TreeNode
    • note:
      • if the new name is already taken a unique name will be generated
      • for the website tree the command must also set the default template
      • for the users tree the command must also add the newly added user to UserManager
  • delete content
    • arguments: none other than the path
    • returns: a TreeNodeList of the deleted nodes parent
    • note: must also deactivate the deleted node
  • rename content
    • arguments: the new name
    • returns: a TreeNodeList of the node that changed name
    • note:
      • if the new name is already taken a unique name will be generated
      • for the users tree the command must update ACLs after rename
  • move content
    • arguments: new path, name of node to place before/after
    • returns: a TreeNodeList of the parent that the node was moved to
    • note:
      • if the new name is already taken a unique name will be generated
  • copy content
    • arguments: new path, name of node to place before/after
    • returns: a TreeNodeList of the parent that the node was copied to
    • note:
      • the new content must be deactivated
      • if the new name is already taken a unique name will be generated
  • activate
  • activate incl subnodes
  • add nodedata
    • arguments: name, value and type (type and value optional defaults to empty string)
    • returns: a TreeNodeList of the node where nodedata was added
    • note: if the name is already taken a unique name will be generated
  • set nodedata
    • arguments: name and value
    • returns: a TreeNodeList of the node where nodedata was changed
  • remove nodedata
    • arguments: name of nodedata to remove
    • returns: a TreeNodeList of the node where nodedata was removed
  • rename nodedata
    • arguments: name of nodedata to rename, new name
    • returns: a TreeNodeList of the node where nodedata was renamed
    • note: what if the new name already exists? create unique or fail?
  • list versions
  • revert to version
  • import and export
    • note: does this even make sense to do with REST? (there's certainly nothing to return as JSON)
  • search
    • arguments: search query
    • returns: search result

Website (.magnolia/rest/website)

replaced by the tree endpoint

  • get child pages
    • method: GET
    • path: .magnolia/rest/website/<path>
    • arguments: path in uri
    • returns: WebsitePageList
  • create page
    • method: PUT
    • path: .magnolia/rest/website/<path>
    • arguments: path in uri
    • returns WebsitePage
  • delete page
    • method: DELETE
    • path: .magnolia/rest/website/<path>
    • arguments: path in uri
  • update page (name, title, template)
    • method: POST
    • path: .magnolia/rest/website/<path>/update
    • arguments: WebsitePage (only name, title and template sticks)
  • search pages
  • activate page
    • method: POST
    • path: .magnolia/rest/website/<path>/activate
  • deactivate page
    • method: POST
    • path: .magnolia/rest/website/<path>/deactivate
  • move page
    • method: POST
    • path: .magnolia/rest/website/<path>/move
    • arguments: to=<website path>
  • copy page
    • method: POST
    • path: .magnolia/rest/website/<path>/copy
    • arguments: to=<website path>
  • edit page using dialog (page properties)
    • method: POST
    • path: .magnolia/rest/website/<path>/edit
    • arguments: dialog=<dialogName>
    • returns: a dialog structure with values from the repository
  • save page using dialog (page properties)
    • method: POST
    • path: .magnolia/rest/website/<path>/save
    • arguments: dialog=<dialogName> and a whole bunch of parameters needed to represent the values
    • returns: OK or a validation error structure
  • list versions
    • method: POST
    • path: .magnolia/rest/website/<path>/versions
    • returns: ?
  • revert to version
    • method: POST
    • path: .magnolia/rest/website/<path>/revert/<version>
  • import + export
    • transport is already defined as an XML document

Templating (.magnolia/rest/templating ?)

status: not implemented

  • get paragraph definitions (for select paragraph dialog)
    • method GET
    • path .magnolia/rest/templating/paragraphs
    • arguments
      • paragraphs - comma seperated list of paragraphs
    • returns ParagraphDefinitionList
  • add paragraph using dialog
    • method POST
    • path .magnolia/rest/templating
    • today sends in repository, path, nodeCollection and node=mgnlNew
  • edit paragraph using dialog
    • today sends in paragraphName, is this necessary, can we send in a dialogName instead?
  • move paragraph (within node collection)
  • delete paragraph

Dialogs (.magnolia/rest/dialogs/)

status: has tabs, validation, supports only edit and date controls

  • load dialog
    • method GET
    • path .magnolia/rest/dialogs/<dialogName>
    • arguments
      • mgnlRepository
      • mgnlPath
      • mgnlNodeCollectionName
      • mgnlNode
    • returns
      • Dialog populated from repository
    • example /.magnolia/rest/dialogs/howTo?mgnlRepository=website&mgnlPath=/howTo-jsp/main/0
  • create node with dialog
    • method POST
    • path .magnolia/rest/dialogs/<dialogName>/create
    • arguments
      • mgnlRepository
      • mgnlPath
      • mgnlNodeCollectionName
      • mgnlNode
    • returns
      • ValidationResult
    • example /.magnolia/rest/dialogs/howTo/create?mgnlRepository=website&mgnlPath=/howTo-jsp&mgnlNodeCollectionName=main&title=ASDFGH12345
  • update node with dialog
    • method POST
    • path .magnolia/rest/dialogs/<dialogName>/update
    • arguments
      • mgnlRepository
      • mgnlPath
      • mgnlNodeCollectionName
      • mgnlNode
    • returns
      • ValidationResult
    • example /.magnolia/rest/dialogs/howTo/update?mgnlRepository=website&mgnlPath=/howTo-jsp/main/0&title=ASDFGH12345

Repository (.magnolia/rest/repository/<repositoryName>/)

CRUD for supported item types

How do we return both the new state of modified nodes and messages like activation failures?

Need to do multipart upload of files and multivalue jcr properties

Module Store (.magnolia/rest/modulestore ?)

list installed modules

list available modules

get module info

Workflow

Data Module

DMS

+ Tools, Configuration, custom commands and so on

See Also

http://dev.day.com/content/ddc/blog/2008/07/cheatsheet/_jcr_content/par/download/file.res/cheatsheet.pdf

  • No labels