on develop help sign in
Updating servicemanagement service definition
commitd129823c9778a8259f861a7caccc74bd3580614a authorBrendan Hay <brendan.g.hay@gmail.com> dateSat 11 Feb 2017, 11:26 (10 years ago) parent6cda3fa
1 file changed+137−116
gen/model/servicemanagement/v1/servicemanagement-api.json+137−116
gen/model/servicemanagement/v1/servicemanagement-api.json+137−116
@@ -22,6 +22,36 @@
2222 "protocol": "rest",
2323 "title": "Google Service Management API",
2424 "resources": {
25+ "operations": {
26+ "methods": {
27+ "get": {
28+ "id": "servicemanagement.operations.get",
29+ "response": {
30+ "$ref": "Operation"
31+ },
32+ "parameterOrder": [
33+ "name"
34+ ],
35+ "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
36+ "flatPath": "v1/operations/{operationsId}",
37+ "httpMethod": "GET",
38+ "parameters": {
39+ "name": {
40+ "description": "The name of the operation resource.",
41+ "required": true,
42+ "pattern": "^operations/.+$",
43+ "location": "path",
44+ "type": "string"
45+ }
46+ },
47+ "path": "v1/{+name}",
48+ "scopes": [
49+ "https://www.googleapis.com/auth/cloud-platform",
50+ "https://www.googleapis.com/auth/service.management"
51+ ]
52+ }
53+ }
54+ },
2555 "services": {
2656 "resources": {
2757 "rollouts": {
@@ -172,6 +202,7 @@
172202 "httpMethod": "GET",
173203 "parameters": {
174204 "configId": {
205+ "description": "The id of the service configuration resource.",
175206 "required": true,
176207 "location": "path",
177208 "type": "string"
@@ -279,7 +310,7 @@
279310 "resource": {
280311 "description": "REQUIRED: The resource for which the policy is being requested.\n`resource` is usually specified as a path. For example, a Project\nresource is specified as `projects/{project}`.",
281312 "required": true,
282− "pattern": "^services/[^/]*$",
313+ "pattern": "^services/[^/]+$",
283314 "location": "path",
284315 "type": "string"
285316 }
@@ -350,6 +381,7 @@
350381 "httpMethod": "GET",
351382 "parameters": {
352383 "configId": {
384+ "description": "The id of the service configuration resource.",
353385 "location": "query",
354386 "type": "string"
355387 },
@@ -401,7 +433,7 @@
401433 "parameterOrder": [
402434 "serviceName"
403435 ],
404− "description": "Gets a managed service.",
436+ "description": "Gets a managed service. Authentication is required unless the service is\npublic.",
405437 "flatPath": "v1/services/{serviceName}",
406438 "httpMethod": "GET",
407439 "parameters": {
@@ -426,7 +458,7 @@
426458 "$ref": "ListServicesResponse"
427459 },
428460 "parameterOrder": [],
429− "description": "Lists all managed services.",
461+ "description": "Lists managed services.\n\nIf called without any authentication, it returns only the public services.\nIf called with authentication, it returns all services that the caller has\n\"servicemanagement.services.get\" permission for.\n\n**BETA:** If the caller specifies the `consumer_id`, it returns only the\nservices enabled on the consumer. The `consumer_id` must have the format\nof \"project:{PROJECT-ID}\".",
430462 "flatPath": "v1/services",
431463 "httpMethod": "GET",
432464 "parameters": {
@@ -445,6 +477,11 @@
445477 "description": "Token identifying which result to start with; returned by a previous list\ncall.",
446478 "location": "query",
447479 "type": "string"
480+ },
481+ "consumerId": {
482+ "description": "Include services consumed by the specified consumer.\n\nThe Google Service Management implementation accepts the following\nforms:\n- project:\u003cproject_id\u003e",
483+ "location": "query",
484+ "type": "string"
448485 }
449486 },
450487 "path": "v1/services",
@@ -520,7 +557,7 @@
520557 "resource": {
521558 "description": "REQUIRED: The resource for which the policy is being specified.\n`resource` is usually specified as a path. For example, a Project\nresource is specified as `projects/{project}`.",
522559 "required": true,
523− "pattern": "^services/[^/]*$",
560+ "pattern": "^services/[^/]+$",
524561 "location": "path",
525562 "type": "string"
526563 }
@@ -539,7 +576,7 @@
539576 "parameterOrder": [
540577 "serviceName"
541578 ],
542− "description": "Deletes a managed service. This method will change the serivce in the\n`Soft-Delete` state for 30 days. Within this period, service producers may\ncall UndeleteService to restore the service.\nAfter 30 days, the service will be permanently deleted.\n\nOperation\u003cresponse: google.protobuf.Empty\u003e",
579+ "description": "Deletes a managed service. This method will change the service to the\n`Soft-Delete` state for 30 days. Within this period, service producers may\ncall UndeleteService to restore the service.\nAfter 30 days, the service will be permanently deleted.\n\nOperation\u003cresponse: google.protobuf.Empty\u003e",
543580 "flatPath": "v1/services/{serviceName}",
544581 "httpMethod": "DELETE",
545582 "parameters": {
@@ -564,7 +601,7 @@
564601 "parameterOrder": [
565602 "resource"
566603 ],
567− "description": "Returns permissions that a caller has on the specified resource.",
604+ "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.",
568605 "request": {
569606 "$ref": "TestIamPermissionsRequest"
570607 },
@@ -574,7 +611,7 @@
574611 "resource": {
575612 "description": "REQUIRED: The resource for which the policy detail is being requested.\n`resource` is usually specified as a path. For example, a Project\nresource is specified as `projects/{project}`.",
576613 "required": true,
577− "pattern": "^services/[^/]*$",
614+ "pattern": "^services/[^/]+$",
578615 "location": "path",
579616 "type": "string"
580617 }
@@ -586,36 +623,6 @@
586623 ]
587624 }
588625 }
589− },
590− "operations": {
591− "methods": {
592− "get": {
593− "id": "servicemanagement.operations.get",
594− "response": {
595− "$ref": "Operation"
596− },
597− "parameterOrder": [
598− "name"
599− ],
600− "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
601− "flatPath": "v1/operations/{operationsId}",
602− "httpMethod": "GET",
603− "parameters": {
604− "name": {
605− "description": "The name of the operation resource.",
606− "required": true,
607− "pattern": "^operations/.*$",
608− "location": "path",
609− "type": "string"
610− }
611− },
612− "path": "v1/{+name}",
613− "scopes": [
614− "https://www.googleapis.com/auth/cloud-platform",
615− "https://www.googleapis.com/auth/service.management"
616− ]
617− }
618− }
619626 }
620627 },
621628 "schemas": {
@@ -795,7 +802,7 @@
795802 "id": "Mixin"
796803 },
797804 "Service": {
798− "description": "`Service` is the root object of Google service configuration schema. It\ndescribes basic information about a service, such as the name and the\ntitle, and delegates other aspects to sub-sections. Each sub-section is\neither a proto message or a repeated proto message that configures a\nspecific aspect, such as auth. See each proto message definition for details.\n\nExample:\n\n type: google.api.Service\n config_version: 3\n name: calendar.googleapis.com\n title: Google Calendar API\n apis:\n - name: google.calendar.v3.Calendar\n backend:\n rules:\n - selector: \"google.calendar.v3.*\"\n address: calendar.example.com",
805+ "description": "`Service` is the root object of Google service configuration schema. It\ndescribes basic information about a service, such as the name and the\ntitle, and delegates other aspects to sub-sections. Each sub-section is\neither a proto message or a repeated proto message that configures a\nspecific aspect, such as auth. See each proto message definition for details.\n\nExample:\n\n type: google.api.Service\n config_version: 3\n name: calendar.googleapis.com\n title: Google Calendar API\n apis:\n - name: google.calendar.v3.Calendar\n authentication:\n providers:\n - id: google_calendar_auth\n jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n issuer: https://securetoken.google.com\n rules:\n - selector: \"*\"\n requirements:\n provider_id: google_calendar_auth",
799806 "type": "object",
800807 "properties": {
801808 "id": {
@@ -821,10 +828,6 @@
821828 "description": "The product title associated with this service.",
822829 "type": "string"
823830 },
824− "analytics": {
825− "description": "WARNING: DO NOT USE UNTIL THIS MESSAGE IS REMOVED.\n\nAnalytics configuration.",
826− "$ref": "Analytics"
827− },
828831 "http": {
829832 "description": "HTTP configuration.",
830833 "$ref": "Http"
@@ -979,7 +982,7 @@
979982 "type": "object",
980983 "properties": {
981984 "auditConfigs": {
982− "description": "Specifies audit logging configs for \"data access\".\n\"data access\": generally refers to data reads/writes and admin reads.\n\"admin activity\": generally refers to admin writes.\n\nNote: `AuditConfig` doesn't apply to \"admin activity\", which always\nenables audit logging.",
985+ "description": "Specifies cloud audit logging configuration for this policy.",
983986 "type": "array",
984987 "items": {
985988 "$ref": "AuditConfig"
@@ -1035,7 +1038,7 @@
10351038 "type": "string"
10361039 },
10371040 "services": {
1038− "description": "The results of the query.",
1041+ "description": "The returned services will only have the name field set.",
10391042 "type": "array",
10401043 "items": {
10411044 "$ref": "ManagedService"
@@ -1240,7 +1243,7 @@
12401243 "id": "LoggingDestination"
12411244 },
12421245 "Authentication": {
1243− "description": "`Authentication` defines the authentication configuration for an API.\n\nExample for an API targeted for external use:\n\n name: calendar.googleapis.com\n authentication:\n rules:\n - selector: \"*\"\n oauth:\n canonical_scopes: https://www.googleapis.com/auth/calendar\n\n - selector: google.calendar.Delegate\n oauth:\n canonical_scopes: https://www.googleapis.com/auth/calendar.read",
1246+ "description": "`Authentication` defines the authentication configuration for an API.\n\nExample for an API targeted for external use:\n\n name: calendar.googleapis.com\n authentication:\n providers:\n - id: google_calendar_auth\n jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n issuer: https://securetoken.google.com\n rules:\n - selector: \"*\"\n requirements:\n provider_id: google_calendar_auth",
12441247 "type": "object",
12451248 "properties": {
12461249 "providers": {
@@ -1323,15 +1326,22 @@
13231326 "id": "Backend"
13241327 },
13251328 "AuditConfig": {
1326− "description": "Enables \"data access\" audit logging for a service and specifies a list\nof members that are log-exempted.",
1329+ "description": "Specifies the audit configuration for a service.\nIt consists of which permission types are logged, and what identities, if\nany, are exempted from logging.\nAn AuditConifg must have one or more AuditLogConfigs.",
13271330 "type": "object",
13281331 "properties": {
13291332 "service": {
1330− "description": "Specifies a service that will be enabled for \"data access\" audit\nlogging.\nFor example, `resourcemanager`, `storage`, `compute`.\n`allServices` is a special value that covers all services.",
1333+ "description": "Specifies a service that will be enabled for audit logging.\nFor example, `resourcemanager`, `storage`, `compute`.\n`allServices` is a special value that covers all services.",
13311334 "type": "string"
13321335 },
1336+ "auditLogConfigs": {
1337+ "description": "The configuration for logging of each type of permission.\nNext ID: 4",
1338+ "type": "array",
1339+ "items": {
1340+ "$ref": "AuditLogConfig"
1341+ }
1342+ },
13331343 "exemptedMembers": {
1334− "description": "Specifies the identities that are exempted from \"data access\" audit\nlogging for the `service` specified above.\nFollows the same format of Binding.members.",
1344+ "description": "Specifies the identities that are exempted from \"data access\" audit\nlogging for the `service` specified above.\nFollows the same format of Binding.members.\nThis field is deprecated in favor of per-permission-type exemptions.",
13351345 "type": "array",
13361346 "items": {
13371347 "type": "string"
@@ -1576,7 +1586,7 @@
15761586 "id": "Rule"
15771587 },
15781588 "MetricDescriptor": {
1579− "description": "Defines a metric type and its schema.",
1589+ "description": "Defines a metric type and its schema. Once a metric descriptor is created,\ndeleting or altering it stops data collection and makes the metric type's\nexisting data unusable.",
15801590 "type": "object",
15811591 "properties": {
15821592 "description": {
@@ -1588,7 +1598,7 @@
15881598 "type": "string"
15891599 },
15901600 "labels": {
1591− "description": "The set of labels that can be used to describe a specific instance of this\nmetric type. For example, the\n`compute.googleapis.com/instance/network/received_bytes_count` metric type\nhas a label, `loadbalanced`, that specifies whether the traffic was\nreceived through a load balanced IP address.",
1601+ "description": "The set of labels that can be used to describe a specific\ninstance of this metric type. For example, the\n`appengine.googleapis.com/http/server/response_latencies` metric\ntype has a label for the HTTP response code, `response_code`, so\nyou can look at latencies for successful responses or just\nfor responses that failed.",
15921602 "type": "array",
15931603 "items": {
15941604 "$ref": "LabelDescriptor"
@@ -1637,11 +1647,11 @@
16371647 "type": "string"
16381648 },
16391649 "name": {
1640− "description": "Resource name. The format of the name may vary between different\nimplementations. For examples:\n\n projects/{project_id}/metricDescriptors/{type=**}\n metricDescriptors/{type=**}",
1650+ "description": "The resource name of the metric descriptor. Depending on the\nimplementation, the name typically includes: (1) the parent resource name\nthat defines the scope of the metric type or of its data; and (2) the\nmetric's URL-encoded type, which also appears in the `type` field of this\ndescriptor. For example, following is the resource name of a custom\nmetric within the GCP project `my-project-id`:\n\n \"projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount\"",
16411651 "type": "string"
16421652 },
16431653 "type": {
1644− "description": "The metric type including a DNS name prefix, for example\n`\"compute.googleapis.com/instance/cpu/utilization\"`. Metric types\nshould use a natural hierarchical grouping such as the following:\n\n compute.googleapis.com/instance/cpu/utilization\n compute.googleapis.com/instance/disk/read_ops_count\n compute.googleapis.com/instance/network/received_bytes_count\n\nNote that if the metric type changes, the monitoring data will be\ndiscontinued, and anything depends on it will break, such as monitoring\ndashboards, alerting rules and quota limits. Therefore, once a metric has\nbeen published, its type should be immutable.",
1654+ "description": "The metric type, including its DNS name prefix. The type is not\nURL-encoded. All user-defined custom metric types have the DNS name\n`custom.googleapis.com`. Metric types should use a natural hierarchical\ngrouping. For example:\n\n \"custom.googleapis.com/invoice/paid/amount\"\n \"appengine.googleapis.com/http/server/response_latencies\"",
16451655 "type": "string"
16461656 }
16471657 },
@@ -1652,7 +1662,7 @@
16521662 "type": "object",
16531663 "properties": {
16541664 "consumerId": {
1655− "description": "The identity of consumer resource which service enablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms: \"project:\u003cproject_id\u003e\", \"project_number:\u003cproject_number\u003e\".\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.",
1665+ "description": "The identity of consumer resource which service enablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms:\n- \"project:\u003cproject_id\u003e\"\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.",
16561666 "type": "string"
16571667 }
16581668 },
@@ -1681,6 +1691,11 @@
16811691 "description": "Request message for `SetIamPolicy` method.",
16821692 "type": "object",
16831693 "properties": {
1694+ "updateMask": {
1695+ "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, a default\nmask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
1696+ "type": "string",
1697+ "format": "google-fieldmask"
1698+ },
16841699 "policy": {
16851700 "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them.",
16861701 "$ref": "Policy"
@@ -1805,7 +1820,7 @@
18051820 "id": "Status"
18061821 },
18071822 "Endpoint": {
1808− "description": "`Endpoint` describes a network endpoint that serves a set of APIs.\nA service may expose any number of endpoints, and all endpoints share the\nsame service configuration, such as quota configuration and monitoring\nconfiguration.\n\nExample service configuration:\n\n name: library-example.googleapis.com\n endpoints:\n # Below entry makes 'google.example.library.v1.Library'\n # API be served from endpoint address library-example.googleapis.com.\n # It also allows HTTP OPTIONS calls to be passed to the backend, for\n # it to decide whether the subsequent cross-origin request is\n # allowed to proceed.\n - name: library-example.googleapis.com\n apis: google.example.library.v1.Library\n allow_cors: true\n # Below entry makes 'google.example.library.v1.Library'\n # API be served from endpoint address\n # google.example.library-example.v1.LibraryManager.\n - name: library-manager.googleapis.com\n apis: google.example.library.v1.LibraryManager\n # BNS address for a borg job. Can specify a task by appending\n # \"/taskId\" (e.g. \"/0\") to the job spec.\n\nExample OpenAPI extension for endpoint with allow_cors set to true:\n\n {\n \"swagger\": \"2.0\",\n \"info\": {\n \"description\": \"A simple...\"\n },\n \"host\": \"MY_PROJECT_ID.appspot.com\",\n \"x-google-endpoints\": [{\n \"name\": \"MY_PROJECT_ID.appspot.com\",\n \"allow_cors\": \"true\"\n }]\n }",
1823+ "description": "`Endpoint` describes a network endpoint that serves a set of APIs.\nA service may expose any number of endpoints, and all endpoints share the\nsame service configuration, such as quota configuration and monitoring\nconfiguration.\n\nExample service configuration:\n\n name: library-example.googleapis.com\n endpoints:\n # Below entry makes 'google.example.library.v1.Library'\n # API be served from endpoint address library-example.googleapis.com.\n # It also allows HTTP OPTIONS calls to be passed to the backend, for\n # it to decide whether the subsequent cross-origin request is\n # allowed to proceed.\n - name: library-example.googleapis.com\n allow_cors: true",
18091824 "type": "object",
18101825 "properties": {
18111826 "apis": {
@@ -1882,7 +1897,7 @@
18821897 "type": "object",
18831898 "properties": {
18841899 "value": {
1885− "description": "The option's value. For example, `\"com.google.protobuf\"`.",
1900+ "description": "The option's value packed in an Any message. If the value is a primitive,\nthe corresponding wrapper type defined in google/protobuf/wrappers.proto\nshould be used. If the value is an enum, it should be stored as an int32\nvalue using the google.protobuf.Int32Value type.",
18861901 "additionalProperties": {
18871902 "description": "Properties of the object. Contains field @type with type URL.",
18881903 "type": "any"
@@ -1890,28 +1905,14 @@
18901905 "type": "object"
18911906 },
18921907 "name": {
1893− "description": "The option's name. For example, `\"java_package\"`.",
1908+ "description": "The option's name. For protobuf built-in options (options defined in\ndescriptor.proto), this is the short name. For example, `\"map_entry\"`.\nFor custom options, it should be the fully-qualified name. For example,\n`\"google.api.http\"`.",
18941909 "type": "string"
18951910 }
18961911 },
18971912 "id": "Option"
18981913 },
1899− "Analytics": {
1900− "description": "Analytics configuration of the service.\n\nThe example below shows how to configure monitored resources and metrics\nfor analytics. In the example, a monitored resource and two metrics are\ndefined. The `library.googleapis.com/book/returned_count` and\n`library.googleapis.com/book/overdue_count` metric are sent\nto the analytics.\n\n monitored_resources:\n - type: library.googleapis.com/branch\n labels:\n - key: /city\n description: The city where the library branch is located in.\n - key: /name\n description: The name of the branch.\n metrics:\n - name: library.googleapis.com/book/returned_count\n metric_kind: DELTA\n value_type: INT64\n labels:\n - key: /customer_id\n - name: library.googleapis.com/book/overdue_count\n metric_kind: GAUGE\n value_type: INT64\n labels:\n - key: /customer_id\n analytics:\n producer_destinations:\n - monitored_resource: library.googleapis.com/branch\n metrics:\n - library.googleapis.com/book/returned_count\n - library.googleapis.com/book/overdue_count",
1901− "type": "object",
1902− "properties": {
1903− "producerDestinations": {
1904− "description": "Analytics configurations for sending metrics to the analytics backend.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none producer destination.",
1905− "type": "array",
1906− "items": {
1907− "$ref": "AnalyticsDestination"
1908− }
1909− }
1910− },
1911− "id": "Analytics"
1912− },
19131914 "HttpRule": {
1914− "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST APIs. The mapping determines what portions of the request\nmessage are populated from the path, query parameters, or body of\nthe HTTP request. The mapping is typically specified as an\n`google.api.http` annotation, see \"google/api/annotations.proto\"\nfor details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind. The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n```proto\nservice Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n }\n}\nmessage GetMessageRequest {\n message SubMessage {\n string subfield = 1;\n }\n string message_id = 1; // mapped to the URL\n SubMessage sub = 2; // `sub.subfield` is url-mapped\n}\nmessage Message {\n string text = 1; // content of the resource\n}\n```\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo` | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n```proto\nmessage GetMessageRequest {\n message SubMessage {\n string subfield = 1;\n }\n string message_id = 1; // mapped to the URL\n int64 revision = 2; // becomes a parameter\n SubMessage sub = 3; // `sub.subfield` becomes a parameter\n}\n```\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A&param=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n```proto\nservice Messaging {\n rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n option (google.api.http) = {\n put: \"/v1/messages/{message_id}\"\n body: \"message\"\n };\n }\n}\nmessage UpdateMessageRequest {\n string message_id = 1; // mapped to the URL\n Message message = 2; // mapped to the body\n}\n```\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body. This enables the following alternative definition of\nthe update method:\n\n```proto\nservice Messaging {\n rpc UpdateMessage(Message) returns (Message) {\n option (google.api.http) = {\n put: \"/v1/messages/{message_id}\"\n body: \"*\"\n };\n }\n}\nmessage Message {\n string message_id = 1;\n string text = 2;\n}\n```\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n```proto\nservice Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http) = {\n get: \"/v1/messages/{message_id}\"\n additional_bindings {\n get: \"/v1/users/{user_id}/messages/{message_id}\"\n }\n };\n }\n}\nmessage GetMessageRequest {\n string message_id = 1;\n string user_id = 2;\n}\n```\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n omitted. If omitted, it assumes there is no HTTP body.\n2. Leaf fields (recursive expansion of nested messages in the\n request) can be classified into three types:\n (a) Matched in the URL template.\n (b) Covered by body (if body is `*`, everything except (a) fields;\n else everything under the body field)\n (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n Template = \"/\" Segments [ Verb ] ;\n Segments = Segment { \"/\" Segment } ;\n Segment = \"*\" | \"**\" | LITERAL | Variable ;\n Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n FieldPath = IDENT { \".\" IDENT } ;\n Verb = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. It follows the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\nExpansion.\n\nThe syntax `**` matches zero or more path segments. It follows the semantics\nof [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved\nExpansion.\n\nThe syntax `LITERAL` matches literal text in the URL path.\n\nThe syntax `Variable` matches the entire path as specified by its template;\nthis nested template must not contain further variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields.\n\nUse CustomHttpPattern to specify any HTTP method that is not included in the\n`pattern` field, such as HEAD, or \"*\" to leave the HTTP method unspecified for\na given URL path rule. The wild-card rule is useful for services that provide\ncontent to Web (HTML) clients.",
1915+ "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST APIs. The mapping determines what portions of the request\nmessage are populated from the path, query parameters, or body of\nthe HTTP request. The mapping is typically specified as an\n`google.api.http` annotation, see \"google/api/annotations.proto\"\nfor details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind. The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n\n service Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n }\n }\n message GetMessageRequest {\n message SubMessage {\n string subfield = 1;\n }\n string message_id = 1; // mapped to the URL\n SubMessage sub = 2; // `sub.subfield` is url-mapped\n }\n message Message {\n string text = 1; // content of the resource\n }\n\nThe same http annotation can alternatively be expressed inside the\n`GRPC API Configuration` YAML file.\n\n http:\n rules:\n - selector: \u003cproto_package_name\u003e.Messaging.GetMessage\n get: /v1/messages/{message_id}/{sub.subfield}\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo` | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n\n message GetMessageRequest {\n message SubMessage {\n string subfield = 1;\n }\n string message_id = 1; // mapped to the URL\n int64 revision = 2; // becomes a parameter\n SubMessage sub = 3; // `sub.subfield` becomes a parameter\n }\n\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A&param=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n\n service Messaging {\n rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n option (google.api.http) = {\n put: \"/v1/messages/{message_id}\"\n body: \"message\"\n };\n }\n }\n message UpdateMessageRequest {\n string message_id = 1; // mapped to the URL\n Message message = 2; // mapped to the body\n }\n\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body. This enables the following alternative definition of\nthe update method:\n\n service Messaging {\n rpc UpdateMessage(Message) returns (Message) {\n option (google.api.http) = {\n put: \"/v1/messages/{message_id}\"\n body: \"*\"\n };\n }\n }\n message Message {\n string message_id = 1;\n string text = 2;\n }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n service Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http) = {\n get: \"/v1/messages/{message_id}\"\n additional_bindings {\n get: \"/v1/users/{user_id}/messages/{message_id}\"\n }\n };\n }\n }\n message GetMessageRequest {\n string message_id = 1;\n string user_id = 2;\n }\n\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n omitted. If omitted, it assumes there is no HTTP body.\n2. Leaf fields (recursive expansion of nested messages in the\n request) can be classified into three types:\n (a) Matched in the URL template.\n (b) Covered by body (if body is `*`, everything except (a) fields;\n else everything under the body field)\n (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n Template = \"/\" Segments [ Verb ] ;\n Segments = Segment { \"/\" Segment } ;\n Segment = \"*\" | \"**\" | LITERAL | Variable ;\n Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n FieldPath = IDENT { \".\" IDENT } ;\n Verb = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. It follows the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\nExpansion.\n\nThe syntax `**` matches zero or more path segments. It follows the semantics\nof [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved\nExpansion. NOTE: it must be the last segment in the path except the Verb.\n\nThe syntax `LITERAL` matches literal text in the URL path.\n\nThe syntax `Variable` matches the entire path as specified by its template;\nthis nested template must not contain further variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields.\n\nUse CustomHttpPattern to specify any HTTP method that is not included in the\n`pattern` field, such as HEAD, or \"*\" to leave the HTTP method unspecified for\na given URL path rule. The wild-card rule is useful for services that provide\ncontent to Web (HTML) clients.",
19151916 "type": "object",
19161917 "properties": {
19171918 "custom": {
@@ -1934,7 +1935,7 @@
19341935 "$ref": "MediaDownload"
19351936 },
19361937 "body": {
1937− "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of response message type.",
1938+ "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type.",
19381939 "type": "string"
19391940 },
19401941 "put": {
@@ -2028,45 +2029,6 @@
20282029 },
20292030 "id": "MediaDownload"
20302031 },
2031− "AnalyticsDestination": {
2032− "description": "Configuration of a specific analytics destination.",
2033− "type": "object",
2034− "properties": {
2035− "monitoredResource": {
2036− "description": "The monitored resource type. The type must be defined in\nService.monitored_resources section.",
2037− "type": "string"
2038− },
2039− "metrics": {
2040− "description": "Names of the metrics to report to this analytics destination.\nEach name must be defined in Service.metrics section. Metrics\nwith value type BOOL and STRING must be of GUAGE kind, metrics with\nvalue type INT64, DOUBLE and MONEY must be of DELTA kind.",
2041− "type": "array",
2042− "items": {
2043− "type": "string"
2044− }
2045− }
2046− },
2047− "id": "AnalyticsDestination"
2048− },
2049− "Logging": {
2050− "description": "Logging configuration of the service.\n\nThe following example shows how to configure logs to be sent to the\nproducer and consumer projects. In the example, the `activity_history`\nlog is sent to both the producer and consumer projects, whereas the\n`purchase_history` log is only sent to the producer project.\n\n monitored_resources:\n - type: library.googleapis.com/branch\n labels:\n - key: /city\n description: The city where the library branch is located in.\n - key: /name\n description: The name of the branch.\n logs:\n - name: activity_history\n labels:\n - key: /customer_id\n - name: purchase_history\n logging:\n producer_destinations:\n - monitored_resource: library.googleapis.com/branch\n logs:\n - activity_history\n - purchase_history\n consumer_destinations:\n - monitored_resource: library.googleapis.com/branch\n logs:\n - activity_history",
2051− "type": "object",
2052− "properties": {
2053− "producerDestinations": {
2054− "description": "Logging configurations for sending logs to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A log can be used in at most\none producer destination.",
2055− "type": "array",
2056− "items": {
2057− "$ref": "LoggingDestination"
2058− }
2059− },
2060− "consumerDestinations": {
2061− "description": "Logging configurations for sending logs to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A log can be used in at most\none consumer destination.",
2062− "type": "array",
2063− "items": {
2064− "$ref": "LoggingDestination"
2065− }
2066− }
2067− },
2068− "id": "Logging"
2069− },
20702032 "SubmitConfigSourceRequest": {
20712033 "description": "Request message for SubmitConfigSource method.",
20722034 "type": "object",
@@ -2108,6 +2070,27 @@
21082070 },
21092071 "id": "AuthenticationRule"
21102072 },
2073+ "Logging": {
2074+ "description": "Logging configuration of the service.\n\nThe following example shows how to configure logs to be sent to the\nproducer and consumer projects. In the example, the `activity_history`\nlog is sent to both the producer and consumer projects, whereas the\n`purchase_history` log is only sent to the producer project.\n\n monitored_resources:\n - type: library.googleapis.com/branch\n labels:\n - key: /city\n description: The city where the library branch is located in.\n - key: /name\n description: The name of the branch.\n logs:\n - name: activity_history\n labels:\n - key: /customer_id\n - name: purchase_history\n logging:\n producer_destinations:\n - monitored_resource: library.googleapis.com/branch\n logs:\n - activity_history\n - purchase_history\n consumer_destinations:\n - monitored_resource: library.googleapis.com/branch\n logs:\n - activity_history",
2075+ "type": "object",
2076+ "properties": {
2077+ "producerDestinations": {
2078+ "description": "Logging configurations for sending logs to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A log can be used in at most\none producer destination.",
2079+ "type": "array",
2080+ "items": {
2081+ "$ref": "LoggingDestination"
2082+ }
2083+ },
2084+ "consumerDestinations": {
2085+ "description": "Logging configurations for sending logs to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A log can be used in at most\none consumer destination.",
2086+ "type": "array",
2087+ "items": {
2088+ "$ref": "LoggingDestination"
2089+ }
2090+ }
2091+ },
2092+ "id": "Logging"
2093+ },
21112094 "SystemParameter": {
21122095 "description": "Define a parameter's name and location. The parameter may be passed as either\nan HTTP header or a URL query parameter, and if both are passed the behavior\nis implementation-dependent.",
21132096 "type": "object",
@@ -2117,7 +2100,7 @@
21172100 "type": "string"
21182101 },
21192102 "name": {
2120− "description": "Define the name of the parameter, such as \"api_key\", \"alt\", \"callback\",\nand etc. It is case sensitive.",
2103+ "description": "Define the name of the parameter, such as \"api_key\" . It is case sensitive.",
21212104 "type": "string"
21222105 },
21232106 "httpHeader": {
@@ -2239,7 +2222,7 @@
22392222 "type": "object",
22402223 "properties": {
22412224 "consumerId": {
2242− "description": "The identity of consumer resource which service disablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms: \"project:\u003cproject_id\u003e\", \"project_number:\u003cproject_number\u003e\".\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.",
2225+ "description": "The identity of consumer resource which service disablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms:\n- \"project:\u003cproject_id\u003e\"\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.",
22432226 "type": "string"
22442227 }
22452228 },
@@ -2449,6 +2432,10 @@
24492432 "description": "Configuration for an anthentication provider, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
24502433 "type": "object",
24512434 "properties": {
2435+ "audiences": {
2436+ "description": "The list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n audiences: bookstore_android.apps.googleusercontent.com,\n bookstore_web.apps.googleusercontent.com",
2437+ "type": "string"
2438+ },
24522439 "jwksUri": {
24532440 "description": "URL of the provider's public key set to validate signature of the JWT. See\n[OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).\nOptional if the key set document:\n - can be retrieved from\n [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html\n of the issuer.\n - can be inferred from the email domain of the issuer (e.g. a Google service account).\n\nExample: https://www.googleapis.com/oauth2/v1/certs",
24542441 "type": "string"
@@ -2479,6 +2466,36 @@
24792466 },
24802467 "id": "VisibilityRule"
24812468 },
2469+ "AuditLogConfig": {
2470+ "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n {\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
2471+ "type": "object",
2472+ "properties": {
2473+ "logType": {
2474+ "description": "The log type that this config enables.",
2475+ "enum": [
2476+ "LOG_TYPE_UNSPECIFIED",
2477+ "ADMIN_READ",
2478+ "DATA_WRITE",
2479+ "DATA_READ"
2480+ ],
2481+ "enumDescriptions": [
2482+ "Default case. Should never be this.",
2483+ "Admin reads. Example: CloudIAM getIamPolicy",
2484+ "Data writes. Example: CloudSQL Users create",
2485+ "Data reads. Example: CloudSQL Users list"
2486+ ],
2487+ "type": "string"
2488+ },
2489+ "exemptedMembers": {
2490+ "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
2491+ "type": "array",
2492+ "items": {
2493+ "type": "string"
2494+ }
2495+ }
2496+ },
2497+ "id": "AuditLogConfig"
2498+ },
24822499 "UndeleteServiceResponse": {
24832500 "description": "Response message for UndeleteService method.",
24842501 "type": "object",
@@ -2659,7 +2676,7 @@
26592676 "type": "object",
26602677 "properties": {
26612678 "rules": {
2662− "description": "Define system parameters.\n\nThe parameters defined here will override the default parameters\nimplemented by the system. If this field is missing from the service\nconfig, default system parameters will be used. Default system parameters\nand names is implementation-dependent.\n\nExample: define api key and alt name for all methods\n\nsystem_parameters\n rules:\n - selector: \"*\"\n parameters:\n - name: api_key\n url_query_parameter: api_key\n - name: alt\n http_header: Response-Content-Type\n\nExample: define 2 api key names for a specific method.\n\nsystem_parameters\n rules:\n - selector: \"/ListShelves\"\n parameters:\n - name: api_key\n http_header: Api-Key1\n - name: api_key\n http_header: Api-Key2\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
2679+ "description": "Define system parameters.\n\nThe parameters defined here will override the default parameters\nimplemented by the system. If this field is missing from the service\nconfig, default system parameters will be used. Default system parameters\nand names is implementation-dependent.\n\nExample: define api key for all methods\n\n system_parameters\n rules:\n - selector: \"*\"\n parameters:\n - name: api_key\n url_query_parameter: api_key\n\n\nExample: define 2 api key names for a specific method.\n\n system_parameters\n rules:\n - selector: \"/ListShelves\"\n parameters:\n - name: api_key\n http_header: Api-Key1\n - name: api_key\n http_header: Api-Key2\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.",
26632680 "type": "array",
26642681 "items": {
26652682 "$ref": "SystemParameterRule"
@@ -2701,6 +2718,10 @@
27012718 "description": "Configuration controlling usage of a service.",
27022719 "type": "object",
27032720 "properties": {
2721+ "producerNotificationChannel": {
2722+ "description": "The full resource name of a channel used for sending notifications to the\nservice producer.\n\nGoogle Service Management currently only supports\n[Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification\nchannel. To use Google Cloud Pub/Sub as the channel, this must be the name\nof a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format\ndocumented in https://cloud.google.com/pubsub/docs/overview.",
2723+ "type": "string"
2724+ },
27042725 "requirements": {
27052726 "description": "Requirements that must be satisfied before a consumer project can use the\nservice. Each requirement is of the form \u003cservice.name\u003e/\u003crequirement-id\u003e;\nfor example 'serviceusage.googleapis.com/billing-enabled'.",
27062727 "type": "array",
@@ -2740,7 +2761,7 @@
27402761 "type": "object",
27412762 "properties": {
27422763 "audiences": {
2743− "description": "The list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n audiences: bookstore_android.apps.googleusercontent.com,\n bookstore_web.apps.googleusercontent.com",
2764+ "description": "NOTE: This will be deprecated soon, once AuthProvider.audiences is\nimplemented and accepted in all the runtime components.\n\nThe list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n audiences: bookstore_android.apps.googleusercontent.com,\n bookstore_web.apps.googleusercontent.com",
27442765 "type": "string"
27452766 },
27462767 "providerId": {
@@ -2773,7 +2794,7 @@
27732794 "id": "SourceContext"
27742795 }
27752796 },
2776− "revision": "20161010",
2797+ "revision": "20170117",
27772798 "basePath": "",
27782799 "icons": {
27792800 "x32": "http://www.google.com/images/icons/product/search-32.gif",