CRUD

Each content route provider shipped with this package, provides the basic CRUD Operations functionality to get, create, delete and update the resource handled.

New in version 0.8.1: Added route providers to cut, copy and paste contents

Unified API

URL Schema:<BASE URL>/<OPERATION>/<uid:optional>

There is a convenient and unified way to fetch the content without knowing the resource. This unified resource is directly located at the Base URL.

Response Format

The response format of the unified get API differs from the default Response Format and omits the items list. The content information is directly provided in the root of the returned JSON object. Therefore it is only suitable to return a single object.

{
    _runtime: 0.00381,
    uid: "7455c9b14e3c48c9b0be19ca6a142d50",
    tags: [ ],
    portal_type: "Document",
    id: "front-page",
    description: "Welcome to Plone",
    api_url: "http://localhost:8080/Plone/@@API/plone/api/1.0/documents/7455c9b14e3c48c9b0be19ca6a142d50",
    effective: "1000-01-01T00:00:00+02:00",
    title: "Welcome to Plone",
    url: "http://localhost:8080/Plone/front-page",
    created: "2014-10-14T20:22:19+02:00",
    modified: "2014-10-14T20:22:19+02:00",
    type: "Document"
}

GET

The get route will return the content located at the given UID.

http://localhost:8080/Plone/@@API/plone/api/1.0/get/<uid:optional>

The given optional UID defines the target object to get. You can omit this UID and specify the path to the object with a request parameter.

Example

Getting an object by its physical path:

http://localhost:8080/Plone/@@API/plone/api/1.0/get?path=/Plone/folder

Or you can specify the parent path and the id of the object

http://localhost:8080/Plone/@@API/plone/api/1.0/get?parent_path=/Plone&id=folder

New in version 0.4: Adding 0 or the string portal as UID returns the portal Object.

New in version 0.9.1: The get route is now obsolete. Please use the base url to retrieve a content by uid, e.g.: http://localhost:8080/Plone/@@API/plone/api/1.0/<uid>

CREATE

The create route will create the content inside the container located at the given UID.

http://localhost:8080/Plone/@@API/plone/api/1.0/create/<uid:optional>

The given optional UID defines the target container. You can omit this UID and specify all the information in the HTTP POST body.

Example

This example shows possible variations of a HTTP POST body sent to the JSON API with the header Content-Type: application/json set.

{
    portal_type: "Document", // mandatory
    id: "test", // mandatory if title is not set
    title: "test", // mandatory if id is not set
    parent_uid: "7455c9b14e3c48c9b0be19ca6a142d50", // you can specify the UID for the parent folder
    parent_path: "/Plone/folder", // or the physical path of the parent container
    ...
}

UPDATE

The update route will update the content located at the given UID.

http://localhost:8080/Plone/@@API/plone/api/1.0/update/<uid:optional>

The given optional UID defines the object to update. You can omit this UID and specify all the information in the HTTP POST body.

Example

{
    uid: "7455c9b14e3c48c9b0be19ca6a142d50", // you can either specify the UID
    path: "/Plone/folder/test", // or the physical path to the object
    id: "test", // or the id and the path of the parent container
    parent_path: "/Plone/folder",
    ...
}

DELETE

The delete route will delete the content located at the given UID.

http://localhost:8080/Plone/@@API/plone/api/1.0/delete/<uid:optional>

The given optional UID defines the object to delete. You can omit this UID and specify all the information in the HTTP POST body.

Example

Delete an object by its physical path:

http://localhost:8080/Plone/@@API/plone/api/1.0/delete?path=/Plone/folder

Or you can specify the parent path and the id of the object

http://localhost:8080/Plone/@@API/plone/api/1.0/delete?parent_path=/Plone&id=folder

Or you can specify these information in the request body:

{
    uid: "7455c9b14e3c48c9b0be19ca6a142d50", // you can either specify the UID
    path: "/Plone/folder/test", // or the physical path to the object
    id: "test", // or the id and the path of the parent container
    parent_path: "/Plone/folder",
    ...
}

CUT

The cut route will cut the content located at the given UID.

http://localhost:8080/Plone/@@API/plone/api/1.0/cut/<uid:optional>

The given optional UID defines the object to cut. You can omit this UID and specify all the information either in the HTTP POST body or as request arguments.

Example

Cut an object by its physical path:

http://localhost:8080/Plone/@@API/plone/api/1.0/cut?path=/Plone/folder

Or you can specify the parent path and the id of the object

http://localhost:8080/Plone/@@API/plone/api/1.0/cut?parent_path=/Plone&id=folder

Or you can specify these information in the request body:

{
    uid: "7455c9b14e3c48c9b0be19ca6a142d50", // you can either specify the UID
    path: "/Plone/folder/test", // or the physical path to the object
    id: "test", // or the id and the path of the parent container
    parent_path: "/Plone/folder",
    ...
}

COPY

The copy route will copy the content located at the given UID.

http://localhost:8080/Plone/@@API/plone/api/1.0/copy/<uid:optional>

The given optional UID defines the object to copy. You can omit this UID and specify all the information either in the HTTP POST body or as request arguments.

Example

Copy an object by its physical path:

http://localhost:8080/Plone/@@API/plone/api/1.0/copy?path=/Plone/folder

Or you can specify the parent path and the id of the object

http://localhost:8080/Plone/@@API/plone/api/1.0/copy?parent_path=/Plone&id=folder

Or you can specify these information in the request body:

{
    uid: "7455c9b14e3c48c9b0be19ca6a142d50", // you can either specify the UID
    path: "/Plone/folder/test", // or the physical path to the object
    id: "test", // or the id and the path of the parent container
    parent_path: "/Plone/folder",
    ...
}

PASTE

The paste route will paste the previous cutted/copied content to the location identified by the given UID.

http://localhost:8080/Plone/@@API/plone/api/1.0/paste/<uid:optional>

The given optional UID defines the target object (usually a folder). You can omit this UID and specify all the information either in the HTTP POST body or as request arguments.

Example

Paste to a target identified by its physical path:

http://localhost:8080/Plone/@@API/plone/api/1.0/paste?path=/Plone/folder

Or you can specify the parent path and the id of the object

http://localhost:8080/Plone/@@API/plone/api/1.0/paste?parent_path=/Plone&id=folder

Or you can specify these information in the request body:

{
    uid: "7455c9b14e3c48c9b0be19ca6a142d50", // you can either specify the UID
    path: "/Plone/folder/test", // or the physical path to the object
    id: "test", // or the id and the path of the parent container
    parent_path: "/Plone/folder",
    ...
}