CloudServices/Notifications/Specification/ClientAgent
< CloudServices | Notifications | Specification
Jump to navigation
Jump to search
The Client Agent supports an RPC-like API which allows clients to register themselves with the notification service, as well as create and remove subscriptions to web app notifications.
Scenario 1: New (Potentially First) Client
-
Client registers with Client Agent
C: POST /1.0/new_queue HTTP/1.1 C: Authorization: Basic BASE64==
-
Client agent generates Client ID (CID), creates User Exchange if necessary, creates and binds Client Queue CID, returns CID to Client.
S: HTTP/1.1 200 OK S: S: {"queue_id": "ASCII (max 255 chars)"}
- Client records CID.
-
Client fetches notifications/subscriptions WBO from Sync, decrypts with sync key. This returns the following (encrypted) JSON:
{ "T in Base64": { "app_name": "GMail", "app_host": "mail.google.com", "app_account": "sdasilva@gmail.com", // Optional "key": "BASE64==" }, "T2 in Base64": {...} }
Scenario 2: New Subscription
- Client generates symmetric key K = 256 random bits AES and and token T = 256 random bits.
-
Client registers token T with Client Agent.
C: POST /1.0/new_subscription HTTP/1.1 C: Authorization: Basic BASE64== C: C: {"token": "T in Base 64"}
-
Client Agent subscribes User Exchange to token T.
S: HTTP/1.1 200 OK
- Client uploads new notifications/subscriptions WBO to Sync (see Scenario 1, Step 4).
- Client passes key K, token T, and POST Office URL to web app (see Scenario Alpha).
Scenario 3: Terminate Subscription
-
Client tells Client Agent to remove subscription with specified token T.
C: POST /1.0/remove_subscription HTTP/1.1 C: Authorization: Basic BASE64== C: C: {"token": "T in Base 64"}
-
Client Agent removes binding T from User Exchange.
S: HTTP/1.1 200 OK