Contents:

High Level Design

Web UI Mockups

All comments (from anyone) are welcome! Please add your comments to the first mockup page listed below, as it represents the latest thinking.

REST API Design

Introduction

The CloudSync REST API is a web-accessible, resource-oriented API that exposes operations on the key entities of the service:

The exact attributes and representations of these entities have not yet been determined.

The base URL of all REST API operations is the URL of the cloudsync app, plus /api/rest/. For example:

http://example.org/cloudsync/api/rest/

Common MIME Types, Status Codes, and Response Headers

Configuration

getConfiguration

GET /cloudsync/api/rest/configuration

updateConfiguration

PUT /cloudsync/api/rest/configuration

Users

createUser

POST /cloudsync/api/rest/users

listUsers

GET /cloudsync/api/rest/users

getUser

GET /cloudsync/api/rest/users/{id}

updateUser

PUT /cloudsync/api/rest/users/{id}

deleteUser

DELETE /cloudsync/api/rest/users/{id}

Tasks

createTask

POST /cloudsync/api/rest/tasks

listTasks

GET /cloudsync/api/rest/tasks

getTask

GET /cloudsync/api/rest/tasks/{id}

updateTask

PUT /cloudsync/api/rest/tasks/{id}

deleteTask

DELETE /cloudsync/api/rest/tasks/{id}

Object Sets

createObjectSet

POST /cloudsync/api/rest/objectsets

listObjectSets

GET /cloudsync/api/rest/objectsets

getObjectSet

GET /cloudsync/api/rest/objectsets/{id}

updateObjectSet

PUT /cloudsync/api/rest/objectsets/{id}

deleteObjectSet

DELETE /cloudsync/api/rest/objectsets/{id}

Object Stores

createObjectStore

POST /cloudsync/api/rest/objectstores

listObjectStores

GET /cloudsync/api/rest/objectstores

getObjectStore

GET /cloudsync/api/rest/objectstores/{id}

queryObjectStore

GET /cloudsync/api/rest/objectstores/{id}/objects[?set={set}&limit={limit}&offset={offset}]

updateObjectStore

PUT /cloudsync/api/rest/stores/{id}

deleteObjectStore

DELETE /cloudsync/api/rest/stores/{id}

System Logs

listSystemLogs

GET /cloudsync/api/rest/systemlogs

getSystemLog

GET /cloudsync/api/rest/systemlogs/{id}

getSystemLogContent

(Returns text/plain content)

GET /cloudsync/api/rest/systemlogs/{id}/content

deleteSystemLog

DELETE /cloudsync/api/rest/systemlogs/{id}

Task Logs

listTaskLogs

GET /cloudsync/api/rest/tasklogs

getTaskLog

GET /cloudsync/api/rest/tasklogs/{id}

getTaskLogContent

(Returns text/plain content)

GET /cloudsync/api/rest/tasklogs/{id}/content

deleteTaskLog

DELETE /cloudsync/api/rest/tasklogs/{id}