From e4361842fcdec369fbd4466f2528b2815f504ff9 Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Sun, 16 Dec 2012 19:10:38 +0200 Subject: initial version --- protocol.txt | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 protocol.txt (limited to 'protocol.txt') diff --git a/protocol.txt b/protocol.txt new file mode 100644 index 0000000..2ac63b9 --- /dev/null +++ b/protocol.txt @@ -0,0 +1,66 @@ +ACF2 HTTP Protocol +================== + +Load JavaScript client: +req: GET / + +Start transaction: +req: POST / +resp: txn ID (in header as X-ACF-Transaction-ID) + - use X-ACF-Transaction-ID in the header of any subsequent + request to process it in the transaction's context + +Commit transaction: +req: POST / + X-ACF-Transaction-ID: + +Abort transaction: +req: DELETE / + X-ACF-Transaction-ID: + +Get object: +req: GET /config/ +resp: JSON object, with the following attributes: + data: JSON serialization of object + - primitive types as JSON primitives + - references as path names (relative to scope) + - models and collections as JSON objects or arrays with + members as attributes: + - primitive members as JSON primitives + - reference, model, and collection members as path names + meta: JSON object, with the following attributes + - name (last component of path name) + - ui-name (shown to user) + - description (optional help text) + - type (e.g. model, collection, reference, string, number, + boolean) + - widget (name of client-side JS module used to display + the data) + - required (boolean) + - max-length + - choices (optional array of allowed values) + - ui-choices (user-friendly choices to be shown in combo + boxes) + - fields (model only): array of field metadata JSON + objects + - members (collection only): metadata for members (JSON + object) + - scope (references only): subtree where the reference can + refer to + +Create/update object: +req: PUT /config/ + - body shall contain the object serialized as the data attribute + in GET responses + - undefined model attributes are deleted + +Delete object: +req: DELETE /config/ + +Invoke object-specific action (not yet supported by server): +req: POST /config// + - arguments passed as a JSON array in body; serialization as in + GET responses +resp: action-specific JSON + - for time-consuming actions, can return multiple JSON + documents, each containing a status update -- cgit v1.2.3