Confirmed users
1,021
edits
| Line 90: | Line 90: | ||
| == Server API == | == Server API == | ||
| === Definitions === | |||
| ;UserAgent | |||
| :The client acting on behalf of the user and consumer of update notices | |||
| ;UAID | |||
| :A server generated, globally unique UserAgent ID | |||
| ;PushServer | |||
| :The server managing interactions between AppServers and the UserAgent | |||
| ;AppServer | |||
| :The third party publisher of update notices | |||
| ;Channel | |||
| : | :The flow of information from AppServer through PushServer to UserAgent | ||
| : | ;ChannelID | ||
| :Globally Unique identifier for a Channel | |||
| UserAgent and AppServer will use a RESTful API to interact with the Push Server. | |||
| Server  | |||
| == | == API ==   | ||
| * Requests from UserAgent to PushServer MUST provide a PushServer Generated UserAgentID (UAID) as the "X-UserAgent-ID" header. | |||
| * UserAgent requests may include a /{network} prefix to indicate a request may be handled by a third party network  | |||
| (e.g. <code>GET http:<i>host</i>/foonet/update</code> will return update requests for elements provided by the "foonet" sub-provider. | |||
| * Calls will return standard HTTP status headers.  | |||
| * Calls will return status 200 (unless otherwise noted below). | |||
| * On Errors, calls will return a proper error code, and where permitted, a standard JSON block containing information regarding the error. The contents of this block are not intended for end user display and have yet to be finalized. | |||
| === POST /register === | |||
| Request a new ChannelID.  | |||
| If the <i>X-UserAgent-ID</i> is not provided, the UserAgent is presumed to be new and a new UserAgentID will be generated for the UserAgent. | |||
| ==== Arguments ==== | |||
| No additional arguments are required. | |||
| ==== Return Value ==== | |||
|  { "channelID": "New Channel ID",   | |||
|    "uaid": "UserAgent ID" | |||
|  } | |||
| NOTE: The uaid is either the X-UserAgent-ID value echoed back, or a new X-UserAgent-ID value to be used for all subsequent calls if no X-UserAgent-ID was present. | |||
| ===  | ==== Example ==== | ||
|  GET http://push.m.o/register  | |||
|  --- | |||
|  {"channelID": "foo1234", "uaid": "bar5678"} | |||
| DELETE  | === DELETE /<ChannelID> === | ||
| Delete an associated ChannelID. Subsequent calls to this ChannelID will result in a 404 status. | |||
| NOTE: the X-UserAgent-ID Header must be present and match the one associated with this ChannelID | |||
| ==== Arguments ==== | |||
| There are no arguments for this call. | |||
| ==== Returns ==== | |||
| This returns an empty JSON object  | |||
| //  |  {} | ||
| ==== Example ==== | |||
|  DELETE http://push.m.o/delete/foo1234 | |||
|  --- | |||
|  {} | |||
| ===  | === GET /update === | ||
| Return a list of known ChannelIDs and current versions.  | |||
| NOTE: the X-UserAgent-ID must be provided and match the value returned by the <code>/register</code> call. | |||
| ==== Arguments ==== | |||
| There are no arguments for this call. | |||
| ==== Returns ==== | |||
| This will return a hash containing a list of hashes defining the known, associated Channels and versions. | |||
| NOTE: If the server is unable to determine previous data for this X-UserAgent-ID, it will return a 410.  | |||
| < | See <code>POST /update</code> for details. | ||
| ==== Example ==== | |||
|  GET http://push.m.o/update | |||
|  --- | |||
|  {"channels":[{"foo1234","1.2"},{"gorp789","20121210164802-a"}]} | |||
| : | === POST http://push.m.o/update === | ||
| Refresh the server from the client. | |||
| This request requires a X-UserAgent-ID header. If the UserAgent attempts to POST information to the server which already has data for that X-UserAgent-ID, the server will deny the request with a 403 error. In that case, the UserAgent should request re-registration for all Channels.  | |||
| ==== Arguments ==== | |||
| The POST body is a JSON encoded block which matches the form and structure of the GET /update/ request. | |||
| ==== Returns ==== | |||
| This will return an empty object. | |||
| ==== Example ==== | |||
|  POST http://push.m.o/update | |||
|  {"channels":[{"foo1234","1.2"},{"gorp789","20121210164802-a"}]} | |||
|  --- | |||
|  {}   | |||
| === PUT http://push.m.o/update/<ChannelID> === | |||
| < | |||
| Update the version of a given channel. | |||
| Arguments should be passed as standard form data (enctype: multipart/form-data) | |||
| This call does not require a X-UserAgent-ID, as it may be called by the AppServer.  | |||
| ==== Arguments  ==== | |||
|  version=<version> | |||
| The version is the AppServer specific VersionID to use. This ID is opaque to the PushServer, however it is suggested that: | |||
| * The ID be sequential. | |||
| * The ID be less than 100 characters. | |||
| * The ID should be UTF8 compliant. | |||
| ==== Returns ==== | |||
| This call returns an empty JSON object. | |||
| ==== Example ==== | |||
|  PUT http://push.m.o/update/foo1234 | |||
|  version=1.3 | |||
|  ---  | |||
|  {} | |||