| 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"
|
| + }
|
| + }
|
| + }
|
| +}
|
|
|