Index: go/src/infra/gae/epclient/dumb_counter/v1/dumb_counter-api.json |
diff --git a/go/src/infra/gae/epclient/dumb_counter/v1/dumb_counter-api.json b/go/src/infra/gae/epclient/dumb_counter/v1/dumb_counter-api.json |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dc6d5a0c240901ee4a7846281d4bd61e43b09cb7 |
--- /dev/null |
+++ b/go/src/infra/gae/epclient/dumb_counter/v1/dumb_counter-api.json |
@@ -0,0 +1,218 @@ |
+{ |
+ "kind": "discovery#restDescription", |
+ "etag": "\"u_zXkMELIlX4ktyNbM2XKD4vK8E/rJUrs9Jz3NBAGyCFAalnzbr2I7M\"", |
+ "discoveryVersion": "v1", |
+ "id": "dumb_counter:v1", |
+ "name": "dumb_counter", |
+ "version": "v1", |
+ "description": "A hideously stupid persistant counter service.", |
+ "icons": { |
+ "x16": "http://www.google.com/images/icons/product/search-16.gif", |
+ "x32": "http://www.google.com/images/icons/product/search-32.gif" |
+ }, |
+ "protocol": "rest", |
+ "baseUrl": "http://localhost:8080/_ah/api/dumb_counter/v1/", |
+ "basePath": "/_ah/api/dumb_counter/v1/", |
+ "rootUrl": "http://localhost:8080/_ah/api/", |
+ "servicePath": "dumb_counter/v1/", |
+ "batchPath": "batch", |
+ "parameters": { |
+ "alt": { |
+ "type": "string", |
+ "description": "Data format for the response.", |
+ "default": "json", |
+ "enum": [ |
+ "json" |
+ ], |
+ "enumDescriptions": [ |
+ "Responses with Content-Type of application/json" |
+ ], |
+ "location": "query" |
+ }, |
+ "fields": { |
+ "type": "string", |
+ "description": "Selector specifying which fields to include in a partial response.", |
+ "location": "query" |
+ }, |
+ "key": { |
+ "type": "string", |
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", |
+ "location": "query" |
+ }, |
+ "oauth_token": { |
+ "type": "string", |
+ "description": "OAuth 2.0 token for the current user.", |
+ "location": "query" |
+ }, |
+ "prettyPrint": { |
+ "type": "boolean", |
+ "description": "Returns response with indentations and line breaks.", |
+ "default": "true", |
+ "location": "query" |
+ }, |
+ "quotaUser": { |
+ "type": "string", |
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.", |
+ "location": "query" |
+ }, |
+ "userIp": { |
+ "type": "string", |
+ "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.", |
+ "location": "query" |
+ } |
+ }, |
+ "schemas": { |
+ "AddReq": { |
+ "id": "AddReq", |
+ "type": "object", |
+ "properties": { |
+ "Delta": { |
+ "type": "string", |
+ "format": "int64" |
+ }, |
+ "Name": { |
+ "type": "string" |
+ } |
+ } |
+ }, |
+ "AddRsp": { |
+ "id": "AddRsp", |
+ "type": "object", |
+ "properties": { |
+ "Cur": { |
+ "type": "string", |
+ "format": "int64" |
+ }, |
+ "Prev": { |
+ "type": "string", |
+ "format": "int64" |
+ } |
+ } |
+ }, |
+ "CASReq": { |
+ "id": "CASReq", |
+ "type": "object", |
+ "properties": { |
+ "Name": { |
+ "type": "string" |
+ }, |
+ "NewVal": { |
+ "type": "string", |
+ "format": "int64" |
+ }, |
+ "OldVal": { |
+ "type": "string", |
+ "format": "int64" |
+ } |
+ } |
+ }, |
+ "Counter": { |
+ "id": "Counter", |
+ "type": "object", |
+ "properties": { |
+ "ID": { |
+ "type": "string" |
+ }, |
+ "Val": { |
+ "type": "string", |
+ "format": "int64" |
+ } |
+ } |
+ }, |
+ "CurrentValueRsp": { |
+ "id": "CurrentValueRsp", |
+ "type": "object", |
+ "properties": { |
+ "Val": { |
+ "type": "string", |
+ "format": "int64" |
+ } |
+ } |
+ }, |
+ "ListRsp": { |
+ "id": "ListRsp", |
+ "type": "object", |
+ "properties": { |
+ "Counters": { |
+ "type": "array", |
+ "items": { |
+ "$ref": "Counter" |
+ } |
+ } |
+ } |
+ } |
+ }, |
+ "methods": { |
+ "add": { |
+ "id": "dumb_counter.add", |
+ "path": "counter/{Name}", |
+ "httpMethod": "POST", |
+ "description": "Add an an amount to a particular counter", |
+ "parameters": { |
+ "Name": { |
+ "type": "string", |
+ "required": true, |
+ "location": "path" |
+ } |
+ }, |
+ "parameterOrder": [ |
+ "Name" |
+ ], |
+ "request": { |
+ "$ref": "AddReq", |
+ "parameterName": "resource" |
+ }, |
+ "response": { |
+ "$ref": "AddRsp" |
+ } |
+ }, |
+ "cas": { |
+ "id": "dumb_counter.cas", |
+ "path": "counter/{Name}/cas", |
+ "httpMethod": "POST", |
+ "description": "Compare and swap a counter value", |
+ "parameters": { |
+ "Name": { |
+ "type": "string", |
+ "required": true, |
+ "location": "path" |
+ } |
+ }, |
+ "parameterOrder": [ |
+ "Name" |
+ ], |
+ "request": { |
+ "$ref": "CASReq", |
+ "parameterName": "resource" |
+ } |
+ }, |
+ "currentvalue": { |
+ "id": "dumb_counter.currentvalue", |
+ "path": "counter/{Name}", |
+ "httpMethod": "GET", |
+ "description": "Returns the current value held by the named counter", |
+ "parameters": { |
+ "Name": { |
+ "type": "string", |
+ "required": true, |
+ "location": "path" |
+ } |
+ }, |
+ "parameterOrder": [ |
+ "Name" |
+ ], |
+ "response": { |
+ "$ref": "CurrentValueRsp" |
+ } |
+ }, |
+ "list": { |
+ "id": "dumb_counter.list", |
+ "path": "counter", |
+ "httpMethod": "GET", |
+ "description": "Returns all of the available counters", |
+ "response": { |
+ "$ref": "ListRsp" |
+ } |
+ } |
+ } |
+} |