{ "kind": "discovery#describeItem", "name": "test", "version": "v1", "id": "test:v1", "description": "Discovery doc API used for testing the code generator", "basePath": "/test/", "rootUrl": "https://www.googleapis.com/", "servicePath": "test/v1/", "batchPath": "batch/test/v1", "rpcPath": "/rpc", "auth": { "oauth2": { "scopes": { "https://www.googleapis.com/auth/test": { "description": "View and manage things" }, "https://www.googleapis.com/auth/test.readonly": { "description": "View things" } } } }, "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": { "Thing": { "id": "Thing", "type": "object", "properties": { "id": { "type": "string" }, "etag": { "type": "string" }, "kind": { "type": "string", "default": "test#thing" }, "name": { "type": "string" }, "enabled": { "type": "boolean" }, "hat": { "$ref": "Hat" }, "recursiveHat": { "$ref": "RecursiveHat" }, "properties": { "$ref": "HashLikeThing" }, "photo": { "type": "object", "properties": { "filename": { "type": "string" }, "hash": { "type": "string" }, "hashAlgorithm": { "type": "string" }, "size": { "type": "integer" }, "type": { "type": "string" } } } } }, "Hat": { "type": "object", "variant": { "discriminant": "type", "map": [ { "type_value": "topHat", "$ref": "TopHat" }, { "type_value": "baseballHat", "$ref": "BaseballHat" } ] } }, "RecursiveHat": { "id": "RecursiveHat", "type": "object", "properties": { "bool": { "type": "boolean", "description": "The bool value." }, "double": { "type": "number", "description": "The double value.", "format": "double" }, "image": { "$ref": "Image", "description": "The image value." }, "int": { "type": "integer", "description": "The int value.", "format": "int32" }, "kind": { "type": "string", "description": "The kind, fixed to \"test#recursiveHat\".", "default": "test#recursiveHat" }, "list": { "type": "array", "description": "The list of typed values.", "items": { "$ref": "RecursiveHat" } }, "string": { "type": "string", "description": "The string value." } }, "additionalProperties": { "$ref": "RecursiveHat" } }, "TopHat": { "type": "object", "properties": { "type": { "type": "string" }, "height": { "type": "number" } } }, "BaseballHat": { "type": "object", "properties": { "type": { "type": "string" }, "color": { "type": "string" } } }, "HashLikeThing": { "id": "HashLikeThing", "type": "object", "additionalProperties": { "type": "string", "description": "A mapping from export format to URL" } }, "TestThing": { "id": "TestThing", "type": "object", "properties" :{} }, "TestAnotherThing": { "id": "TestAnotherThing", "type": "object", "properties" :{} }, "ThingList": { "id": "ThingList", "type": "object", "properties": { "items": { "type": "array", "description": "The actual list of files.", "items": { "$ref": "Thing" } }, "kind": { "type": "string", "default": "test#thinglist" } } }, "QueryResults": { "id": "QueryResults", "type": "object", "properties": { "rows": { "$ref": "Rows" } } }, "Rows": { "id": "QueryResults", "type": "array", "items": { "type": "object", "properties": { "value": { "type": "string" } } } } }, "methods": { "query": { "path": "query", "id": "test.query", "httpMethod": "GET", "response": { "$ref": "QueryResults" //"$ref": "Rows" TODO: Support naked collections as a return value }, "parameters": { "s": { "type": "string", "location": "query", "required": false, "repeated": false }, "i": { "type": "integer", "location": "query", "required": false, "repeated": false, "minimum": "0", "maximum": "4294967295", "default": "20" }, "n": { "type": "number", "location": "query", "required": false, "repeated": false }, "b": { "type": "boolean", "location": "query", "required": false, "repeated": false }, "a": { "type": "any", "location": "query", "required": false, "repeated": false }, "e": { "type": "string", "location": "query", "required": false, "repeated": false, "enum": [ "foo", "bar" ] }, "er": { "type": "string", "location": "query", "required": false, "repeated": true, "enum": [ "one", "two", "three" ] }, "sr": { "type": "string", "location": "query", "required": false, "repeated": true, "pattern": "[a-z]+" }, "do": { "type": "string", "location": "query", "required": false } } } }, "resources": { "things": { "resources": { "subthings": { "methods": { "list": { "path": "things", "id": "test.things.subthings.list", "httpMethod": "GET", "parameters": { "max-results": { "type": "number", "location": "query", "required": false } }, "response": { "$ref": "ThingList" } } } } }, "methods": { "list": { "path": "things", "id": "test.things.list", "httpMethod": "GET", "parameters": { "max-results": { "type": "number", "location": "query", "required": false } }, "response": { "$ref": "ThingList" } }, "delete": { "path": "things/{id}", "id": "test.things.delete", "httpMethod": "DELETE", "description": "Delete things", "parameters": { "id": { "location": "path", "required": true, "description": "ID of the thing to delete", "type": "string" } }, "parameterOrder": [ "id" ] }, "get": { "path": "things/{id}", "id": "test.things.get", "httpMethod": "GET", "description": "Get things", "supportsMediaDownload": true, "parameters": { "id": { "location": "path", "required": true, "description": "ID of the thing to get", "type": "string" } }, "supportsMediaDownload": true, "parameterOrder": [ "id" ], "response": { "$ref": "Thing" } }, "create": { "path": "things", "id": "test.things.create", "httpMethod": "POST", "description": "Create things", "request": { "$ref": "Thing" }, "response": { "$ref": "Thing" }, "supportsMediaUpload": true, "mediaUpload": { "accept": [ "*/*" ], "maxSize": "1KB", "protocols": { "simple": { "multipart": true, "path": "upload/things/{id}" }, "resumable": { "multipart": true, "path": "/resumable/upload/things/{id}" } } } }, "update": { "path": "things/{id}", "id": "test.things.update", "httpMethod": "PUT", "description": "Update things", "parameters": { "id": { "location": "path", "description": "ID of the thing to update", "type": "string" } }, "parameterOrder": [ "id" ], "request": { "$ref": "Thing" }, "response": { "$ref": "Thing" }, "supportsMediaUpload": true, "mediaUpload": { "accept": [ "*/*" ], "maxSize": "1KB", "protocols": { "simple": { "multipart": true, "path": "upload/things/{id}" }, "resumable": { "multipart": true, "path": "/resumable/upload/things/{id}" } } } } } } } }